summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools/gcc/gcc-4.5
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5')
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/100-uclibc-conf.patch37
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/602-sdk-libstdc++-includes.patch20
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/64bithack.patch33
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/740-sh-pr24836.patch29
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/800-arm-bigendian.patch34
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/904-flatten-switch-stmt-00.patch74
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch33
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/Makefile.in.patch30
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/arm-lib1funcs.as-fix-mismatch-between-conditions-of-an-IT-block.patch18
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/arm-unbreak-eabi-armv4t.dpatch36
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/cache-amnesia.patch31
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/disable_relax_pic_calls_flag.patch44
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-c++-builtin-redecl.patch114
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-cpp-pragma.patch284
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-i386-libgomp.patch65
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ia64-libunwind.patch550
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-debug-iface-type.patch19
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-nomulti.patch48
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-libgomp-speedup.patch2797
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ppc32-retaddr.patch90
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr27898.patch16
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr32139.patch19
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr33763.patch159
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh251682.patch89
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh330771.patch31
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh341221.patch32
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/fortran-cross-compile-hack.patch30
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.0.2-e300c2c3.patch319
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch31
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.5.0_to_svn_162697.patch.bz2bin0 -> 6957305 bytes
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-arm-volatile-bitfield-fix.patch103
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-armv4-pass-fix-v4bx-to-ld.patch29
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-flags-for-build.patch178
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-ice-hack.dpatch331
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-dir-extend.patch24
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-parameters.patch83
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-system-directories.patch201
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-pr43698-arm-rev-instr.patch117
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-scalar-widening-pr45847.patch63
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-uclibc-locale-ctype_touplow_t.patch67
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/gcc_revert_base_version_to_4.5.0.patch9
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch40
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-pic.dpatch71
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99297.patch207
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99298.patch26654
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99299.patch62
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99300.patch3094
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99301.patch675
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99302.patch244
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99303.patch131
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99304.patch81
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99305.patch52
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99306.patch1401
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99307.patch138
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch112
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99310.patch36
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99312.patch714
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99313.patch37
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99314.patch433
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99315.patch57
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99316.patch76
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99318.patch118
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99319.patch197
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99320.patch138
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99321.patch28
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99322.patch53
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99323.patch688
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99324.patch109
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99325.patch174
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch86
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99327.patch132
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99332.patch68
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99335.patch138
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch95
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99337.patch36
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99338.patch111
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99339.patch236
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99340.patch43
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99341.patch28
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99342.patch76
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99343.patch132
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99344.patch30
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99345.patch30
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99346.patch170
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch83
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99348.patch37
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99349.patch401
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99350.patch184
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch548
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99352.patch118
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99353.patch298
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99354.patch384
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99355.patch181
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99356.patch376
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99357.patch27
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99358.patch38
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99359.patch27
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99360.patch1759
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99361.patch17586
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch95
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99364.patch511
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99365.patch38
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99366.patch26
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99367.patch49
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99368.patch342
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99369.patch53
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99371.patch663
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99372.patch380
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99373.patch360
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99374.patch72
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch146
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99376.patch35
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99377.patch28
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99378.patch159
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99379.patch2011
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch2997
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99381.patch512
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99383.patch369
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99384.patch1202
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99385.patch151
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99388.patch191
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99391.patch43
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99392.patch33
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99393.patch45
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99395.patch26
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99396.patch1760
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch3565
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99398.patch76
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99402.patch1268
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99403.patch176
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99404.patch386
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99405.patch36
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99406.patch20
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99407.patch33
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99408.patch603
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99409.patch18
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99410.patch32
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99411.patch21
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99412.patch316
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99413.patch26
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch46
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99416.patch130
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99417.patch53
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99418.patch25
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99419.patch734
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99420.patch38
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99421.patch94
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99423.patch114
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch687
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99425.patch128
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99426.patch41
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99429.patch1257
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99432.patch70
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99433.patch40
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99434.patch30
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99435.patch32
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99436.patch209
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99437.patch27
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99439.patch1500
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99440.patch78
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99441.patch33
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99442.patch23
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99443.patch873
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99444.patch183
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99449.patch34
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99450.patch104
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99451.patch45
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch201
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99453.patch72
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99454.patch46
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch65
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99456.patch3163
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99457.patch4236
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99464.patch157
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99465.patch94
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99466.patch38
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99468.patch811
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99473.patch409
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99474.patch3346
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch4217
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99478.patch74
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99479.patch101
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99480.patch64
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99481.patch40
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99482.patch84
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99483.patch63
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/mips64-nomultilib.patch52
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/more-epilogues.patch83
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/optional_libstdc.patch23
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/pr30961.dpatch179
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/pr35942.patch38
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/sh4-multilib.patch25
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-no-host-includes.patch31
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-xgcc-cpp.patch28
194 files changed, 108836 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/100-uclibc-conf.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/100-uclibc-conf.patch
new file mode 100644
index 000000000..0b799607e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/100-uclibc-conf.patch
@@ -0,0 +1,37 @@
1Index: gcc-4.3.1/contrib/regression/objs-gcc.sh
2===================================================================
3--- gcc-4.3.1.orig/contrib/regression/objs-gcc.sh 2007-12-24 15:18:57.000000000 -0800
4+++ gcc-4.3.1/contrib/regression/objs-gcc.sh 2008-08-16 01:15:12.000000000 -0700
5@@ -105,6 +105,10 @@
6 then
7 make all-gdb all-dejagnu all-ld || exit 1
8 make install-gdb install-dejagnu install-ld || exit 1
9+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
10+ then
11+ make all-gdb all-dejagnu all-ld || exit 1
12+ make install-gdb install-dejagnu install-ld || exit 1
13 elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
14 make bootstrap || exit 1
15 make install || exit 1
16Index: gcc-4.3.1/libjava/classpath/ltconfig
17===================================================================
18--- gcc-4.3.1.orig/libjava/classpath/ltconfig 2007-06-03 16:18:43.000000000 -0700
19+++ gcc-4.3.1/libjava/classpath/ltconfig 2008-08-16 01:15:12.000000000 -0700
20@@ -603,7 +603,7 @@
21
22 # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
23 case $host_os in
24-linux-gnu*) ;;
25+linux-gnu*|linux-uclibc*) ;;
26 linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
27 esac
28
29@@ -1251,7 +1251,7 @@
30 ;;
31
32 # This must be Linux ELF.
33-linux-gnu*)
34+linux*)
35 version_type=linux
36 need_lib_prefix=no
37 need_version=no
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/602-sdk-libstdc++-includes.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/602-sdk-libstdc++-includes.patch
new file mode 100644
index 000000000..23fce7544
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/602-sdk-libstdc++-includes.patch
@@ -0,0 +1,20 @@
1--- gcc-4.1.0/libstdc++-v3/fragment.am 2005-03-21 11:40:14.000000000 -0600
2+++ gcc-4.1.0-patched/libstdc++-v3/fragment.am 2005-04-25 20:14:39.856251785 -0500
3@@ -21,5 +21,5 @@
4 $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
5
6 # -I/-D flags to pass when compiling.
7-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
8+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
9
10--- gcc-4.1.0/libstdc++-v3/libmath/Makefile.am 2005-03-21 11:40:18.000000000 -0600
11+++ gcc-4.1.0-patched/libstdc++-v3/libmath/Makefile.am 2005-04-25 20:14:39.682280735 -0500
12@@ -35,7 +35,7 @@
13
14 libmath_la_SOURCES = stubs.c
15
16-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
17+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
18
19 # Only compiling "C" sources in this directory.
20 LIBTOOL = @LIBTOOL@ --tag CC
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/64bithack.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/64bithack.patch
new file mode 100644
index 000000000..067676ab6
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/64bithack.patch
@@ -0,0 +1,33 @@
1By default gcc places 64 bit libs in a lib64 directory. This makes it use
2"lib" instead.
3
4RP 25/7/10
5
6Index: gcc-4.5.0/gcc/config/i386/t-linux64
7===================================================================
8--- gcc-4.5.0.orig/gcc/config/i386/t-linux64 2010-08-10 15:47:42.000000000 +0100
9+++ gcc-4.5.0/gcc/config/i386/t-linux64 2010-08-10 15:47:47.000000000 +0100
10@@ -24,8 +24,8 @@
11 # MULTILIB_OSDIRNAMES according to what is found on the target.
12
13 MULTILIB_OPTIONS = m64/m32
14-MULTILIB_DIRNAMES = 64 32
15-MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
16+MULTILIB_DIRNAMES = . 32
17+MULTILIB_OSDIRNAMES = . $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
18
19 LIBGCC = stmp-multilib
20 INSTALL_LIBGCC = install-multilib
21Index: gcc-4.5.0/gcc/config/i386/linux64.h
22===================================================================
23--- gcc-4.5.0.orig/gcc/config/i386/linux64.h 2010-08-10 15:49:06.000000000 +0100
24+++ gcc-4.5.0/gcc/config/i386/linux64.h 2010-08-10 15:49:16.000000000 +0100
25@@ -59,7 +59,7 @@
26 done. */
27
28 #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
29-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
30+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
31
32 #if TARGET_64BIT_DEFAULT
33 #define SPEC_32 "m32"
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/740-sh-pr24836.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/740-sh-pr24836.patch
new file mode 100644
index 000000000..d84889259
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/740-sh-pr24836.patch
@@ -0,0 +1,29 @@
1http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
2http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
3
4Index: gcc-4.5.0/gcc/configure.ac
5===================================================================
6--- gcc-4.5.0.orig/gcc/configure.ac 2010-03-25 22:40:32.000000000 -0700
7+++ gcc-4.5.0/gcc/configure.ac 2010-06-25 11:02:48.489057877 -0700
8@@ -2784,7 +2784,7 @@
9 tls_first_minor=14
10 tls_as_opt="-m64 -Aesame --fatal-warnings"
11 ;;
12- sh-*-* | sh[34]-*-*)
13+ sh-*-* | sh[34]*-*-*)
14 conftest_s='
15 .section ".tdata","awT",@progbits
16 foo: .long 25
17Index: gcc-4.5.0/gcc/configure
18===================================================================
19--- gcc-4.5.0.orig/gcc/configure 2010-03-25 22:40:32.000000000 -0700
20+++ gcc-4.5.0/gcc/configure 2010-06-25 11:02:48.508381845 -0700
21@@ -22156,7 +22156,7 @@
22 tls_first_minor=14
23 tls_as_opt="-m64 -Aesame --fatal-warnings"
24 ;;
25- sh-*-* | sh[34]-*-*)
26+ sh-*-* | sh[34]*-*-*)
27 conftest_s='
28 .section ".tdata","awT",@progbits
29 foo: .long 25
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/800-arm-bigendian.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/800-arm-bigendian.patch
new file mode 100644
index 000000000..77d02c3ab
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/800-arm-bigendian.patch
@@ -0,0 +1,34 @@
1By Lennert Buytenhek <buytenh@wantstofly.org>
2Adds support for arm*b-linux* big-endian ARM targets
3
4See http://gcc.gnu.org/PR16350
5
6Index: gcc-4.5.0/gcc/config/arm/linux-elf.h
7===================================================================
8--- gcc-4.5.0.orig/gcc/config/arm/linux-elf.h 2009-11-05 06:47:45.000000000 -0800
9+++ gcc-4.5.0/gcc/config/arm/linux-elf.h 2010-06-25 11:03:06.997132728 -0700
10@@ -51,7 +51,7 @@
11
12 #undef MULTILIB_DEFAULTS
13 #define MULTILIB_DEFAULTS \
14- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
15+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
16
17 /* Now we define the strings used to build the spec file. */
18 #undef LIB_SPEC
19Index: gcc-4.5.0/gcc/config.gcc
20===================================================================
21--- gcc-4.5.0.orig/gcc/config.gcc 2010-06-25 10:40:33.321880880 -0700
22+++ gcc-4.5.0/gcc/config.gcc 2010-06-25 11:03:07.013133525 -0700
23@@ -734,6 +734,11 @@
24 esac
25 tmake_file="${tmake_file} t-linux arm/t-arm"
26 case ${target} in
27+ arm*b-*)
28+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
29+ ;;
30+ esac
31+ case ${target} in
32 arm*-*-linux-*eabi)
33 tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
34 tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/904-flatten-switch-stmt-00.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/904-flatten-switch-stmt-00.patch
new file mode 100644
index 000000000..c4641dc63
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/904-flatten-switch-stmt-00.patch
@@ -0,0 +1,74 @@
1Hi,
2
3The attached patch makes sure that we create smaller object code for
4simple switch statements. We just make sure to flatten the switch
5statement into an if-else chain, basically.
6
7This fixes a size-regression as compared to gcc-3.4, as can be seen
8below.
9
102007-04-15 Bernhard Fischer <..>
11
12 * stmt.c (expand_case): Do not create a complex binary tree when
13 optimizing for size but rather use the simple ordered list.
14 (emit_case_nodes): do not emit jumps to the default_label when
15 optimizing for size.
16
17Not regtested so far.
18Comments?
19
20Attached is the test switch.c mentioned below.
21
22$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
23gcc-$i -DCHAIN -Os -o switch-CHAIN-$i.o -c switch.c ;done
24$ for i in 2.95 3.3 3.4 4.0 4.1 4.2.orig-HEAD 4.3.orig-HEAD 4.3-HEAD;do
25gcc-$i -UCHAIN -Os -o switch-$i.o -c switch.c ;done
26
27$ size switch-*.o
28 text data bss dec hex filename
29 169 0 0 169 a9 switch-2.95.o
30 115 0 0 115 73 switch-3.3.o
31 103 0 0 103 67 switch-3.4.o
32 124 0 0 124 7c switch-4.0.o
33 124 0 0 124 7c switch-4.1.o
34 124 0 0 124 7c switch-4.2.orig-HEAD.o
35 95 0 0 95 5f switch-4.3-HEAD.o
36 124 0 0 124 7c switch-4.3.orig-HEAD.o
37 166 0 0 166 a6 switch-CHAIN-2.95.o
38 111 0 0 111 6f switch-CHAIN-3.3.o
39 95 0 0 95 5f switch-CHAIN-3.4.o
40 95 0 0 95 5f switch-CHAIN-4.0.o
41 95 0 0 95 5f switch-CHAIN-4.1.o
42 95 0 0 95 5f switch-CHAIN-4.2.orig-HEAD.o
43 95 0 0 95 5f switch-CHAIN-4.3-HEAD.o
44 95 0 0 95 5f switch-CHAIN-4.3.orig-HEAD.o
45
46
47Content-Type: text/x-diff; charset=us-ascii
48Content-Disposition: attachment; filename="gcc-4.3.gcc-flatten-switch-stmt.00.diff"
49
50Index: gcc-4.5.0/gcc/stmt.c
51===================================================================
52--- gcc-4.5.0.orig/gcc/stmt.c 2010-02-19 01:53:51.000000000 -0800
53+++ gcc-4.5.0/gcc/stmt.c 2010-06-25 11:05:31.816881094 -0700
54@@ -2440,7 +2440,11 @@
55 default code is emitted. */
56
57 use_cost_table = estimate_case_costs (case_list);
58- balance_case_nodes (&case_list, NULL);
59+ /* When optimizing for size, we want a straight list to avoid
60+ jumps as much as possible. This basically creates an if-else
61+ chain. */
62+ if (!optimize_size)
63+ balance_case_nodes (&case_list, NULL);
64 emit_case_nodes (index, case_list, default_label, index_type);
65 if (default_label)
66 emit_jump (default_label);
67@@ -3008,6 +3012,7 @@
68 {
69 if (!node_has_low_bound (node, index_type))
70 {
71+ if (!optimize_size) /* don't jl to the .default_label. */
72 emit_cmp_and_jump_insns (index,
73 convert_modes
74 (mode, imode,
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
new file mode 100644
index 000000000..9ae01c3fc
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/GPLUSPLUS_INCLUDE_DIR_with_sysroot.patch
@@ -0,0 +1,33 @@
1# by default c++ include directories are not relative to "--sysroot"
2# which brings one trouble when using the toolchain in an environment
3# where the build directory generating that toolchain doesn't exist,
4# e.g. in sstate, machine specific sysroot and relocatable SDK
5# toolchain. This patch now enables c++ include paths under sysroot.
6# This way it's enough as long as "--sysroot" is correctly enabled
7# in the new environment.
8#
9# Signed-off-by Kevin Tian <kevin.tian@intel.com>, 2010-12-30
10
11diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
12index 5024f48..9b47d1c 100644
13--- a/gcc/cppdefault.c
14+++ b/gcc/cppdefault.c
15@@ -48,15 +48,15 @@ const struct default_include cpp_include_defaults[]
16 = {
17 #ifdef GPLUSPLUS_INCLUDE_DIR
18 /* Pick up GNU C++ generic include files. */
19- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
20+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
21 #endif
22 #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
23 /* Pick up GNU C++ target-dependent include files. */
24- { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 0, 1 },
25+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, 1, 1 },
26 #endif
27 #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
28 /* Pick up GNU C++ backward and deprecated include files. */
29- { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 0, 0 },
30+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, 1, 0 },
31 #endif
32 #ifdef LOCAL_INCLUDE_DIR
33 /* /usr/local/include comes before the fixincluded header files. */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/Makefile.in.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/Makefile.in.patch
new file mode 100644
index 000000000..45df47c5b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/Makefile.in.patch
@@ -0,0 +1,30 @@
1Index: gcc-4.5/gcc/Makefile.in
2===================================================================
3--- gcc-4.5.orig/gcc/Makefile.in
4+++ gcc-4.5/gcc/Makefile.in
5@@ -656,7 +656,7 @@ LIBGCC2_INCLUDES =
6 TARGET_LIBGCC2_CFLAGS =
7
8 # Options to use when compiling crtbegin/end.
9-CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
10+CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(TARGET_INCLUDES) $(MULTILIB_CFLAGS) -g0 \
11 -finhibit-size-directive -fno-inline -fno-exceptions \
12 -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
13 $(INHIBIT_LIBC_CFLAGS)
14@@ -1038,10 +1038,14 @@ BUILD_ERRORS = build/errors.o
15 # -I$(@D) and -I$(srcdir)/$(@D) cause the subdirectory of the file
16 # currently being compiled, in both source trees, to be examined as well.
17 # libintl.h will be found in ../intl if we are using the included libintl.
18-INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
19+#
20+# TARGET_INCLUDES is added to avoid that GMPINC (which points to the host
21+# include dir) is used for compiling libgcc.a
22+TARGET_INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
23 -I$(srcdir)/../include @INCINTL@ \
24- $(CPPINC) $(GMPINC) $(DECNUMINC) \
25+ $(CPPINC) $(DECNUMINC) \
26 $(PPLINC) $(CLOOGINC) $(LIBELFINC)
27+INCLUDES = $(TARGET_INCLUDES) $(GMPINC)
28
29 .c.o:
30 $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/arm-lib1funcs.as-fix-mismatch-between-conditions-of-an-IT-block.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/arm-lib1funcs.as-fix-mismatch-between-conditions-of-an-IT-block.patch
new file mode 100644
index 000000000..39c90e7e7
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/arm-lib1funcs.as-fix-mismatch-between-conditions-of-an-IT-block.patch
@@ -0,0 +1,18 @@
1Fix for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43999
2
3http://patchwork.ozlabs.org/patch/72260/ is the patch that made into
4upstream gcc
5
6diff --git a/gcc/config/arm/lib1funcs.asm b/gcc/config/arm/lib1funcs.asm
7index 085e690..2e76c01 100644
8--- a/gcc/config/arm/lib1funcs.asm
9+++ b/gcc/config/arm/lib1funcs.asm
10@@ -641,7 +641,7 @@ pc .req r15
11 subhs \dividend, \dividend, \divisor, lsr #3
12 orrhs \result, \result, \curbit, lsr #3
13 cmp \dividend, #0 @ Early termination?
14- do_it hs, t
15+ do_it ne, t
16 movnes \curbit, \curbit, lsr #4 @ No, any more bits to do?
17 movne \divisor, \divisor, lsr #4
18 bne 1b
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/arm-unbreak-eabi-armv4t.dpatch b/meta-oe/recipes-devtools/gcc/gcc-4.5/arm-unbreak-eabi-armv4t.dpatch
new file mode 100644
index 000000000..7bb888706
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/arm-unbreak-eabi-armv4t.dpatch
@@ -0,0 +1,36 @@
1#! /bin/sh -e
2
3# DP: Fix armv4t build on ARM
4
5dir=
6if [ $# -eq 3 -a "$2" = '-d' ]; then
7 pdir="-d $3"
8 dir="$3/"
9elif [ $# -ne 1 ]; then
10 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
11 exit 1
12fi
13case "$1" in
14 -patch)
15 patch $pdir -f --no-backup-if-mismatch -p1 < $0
16 ;;
17 -unpatch)
18 patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
19 ;;
20 *)
21 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
22 exit 1
23esac
24exit 0
25
26--- src/gcc/config/arm/linux-eabi.h.orig 2007-11-24 12:37:38.000000000 +0000
27+++ src/gcc/config/arm/linux-eabi.h 2007-11-24 12:39:41.000000000 +0000
28@@ -44,7 +44,7 @@
29 The ARM10TDMI core is the default for armv5t, so set
30 SUBTARGET_CPU_DEFAULT to achieve this. */
31 #undef SUBTARGET_CPU_DEFAULT
32-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
33+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
34
35 /* TARGET_BIG_ENDIAN_DEFAULT is set in
36 config.gcc for big endian configurations. */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/cache-amnesia.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/cache-amnesia.patch
new file mode 100644
index 000000000..b889f9b6c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/cache-amnesia.patch
@@ -0,0 +1,31 @@
1---
2 gcc/configure | 2 +-
3 gcc/configure.ac | 2 +-
4 2 files changed, 2 insertions(+), 2 deletions(-)
5
6Index: gcc-4.5+svnr155514/gcc/configure
7===================================================================
8--- gcc-4.5+svnr155514.orig/gcc/configure 2009-12-29 22:00:40.000000000 -0800
9+++ gcc-4.5+svnr155514/gcc/configure 2009-12-29 23:52:43.381592113 -0800
10@@ -10467,7 +10467,7 @@ else
11 saved_CFLAGS="${CFLAGS}"
12 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
13 LDFLAGS="${LDFLAGS_FOR_BUILD}" \
14- ${realsrcdir}/configure \
15+ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
16 --enable-languages=${enable_languages-all} \
17 --target=$target_alias --host=$build_alias --build=$build_alias
18 CFLAGS="${saved_CFLAGS}"
19Index: gcc-4.5+svnr155514/gcc/configure.ac
20===================================================================
21--- gcc-4.5+svnr155514.orig/gcc/configure.ac 2009-12-29 22:00:40.000000000 -0800
22+++ gcc-4.5+svnr155514/gcc/configure.ac 2009-12-29 23:51:54.589091778 -0800
23@@ -1458,7 +1458,7 @@ else
24 saved_CFLAGS="${CFLAGS}"
25 CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
26 LDFLAGS="${LDFLAGS_FOR_BUILD}" \
27- ${realsrcdir}/configure \
28+ CONFIG_SITE= ${realsrcdir}/configure --cache-file=./other.cache \
29 --enable-languages=${enable_languages-all} \
30 --target=$target_alias --host=$build_alias --build=$build_alias
31 CFLAGS="${saved_CFLAGS}"
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/disable_relax_pic_calls_flag.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/disable_relax_pic_calls_flag.patch
new file mode 100644
index 000000000..b1d5a1a3c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/disable_relax_pic_calls_flag.patch
@@ -0,0 +1,44 @@
1GCC: disable MASK_RELAX_PIC_CALLS bit
2
3The new feature added after 4.3.3
4"http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html"
5will cause cc1plus eat up all the system memory when build webkit-gtk.
6The function mips_get_pic_call_symbol keeps on recursively calling itself.
7Disable this feature to walk aside the bug.
8
9Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
10
11diff -ruN gcc-4.5.0-orig/gcc/configure gcc-4.5.0/gcc/configure
12--- gcc-4.5.0-orig/gcc/configure 2010-09-17 23:30:21.000000000 +0800
13+++ gcc-4.5.0/gcc/configure 2010-09-19 18:21:28.000000000 +0800
14@@ -23945,13 +23945,6 @@
15 rm -f conftest.*
16 fi
17 fi
18- if test $gcc_cv_as_ld_jalr_reloc = yes; then
19- if test x$target_cpu_default = x; then
20- target_cpu_default=MASK_RELAX_PIC_CALLS
21- else
22- target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
23- fi
24- fi
25 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_ld_jalr_reloc" >&5
26 $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
27
28diff -ruN gcc-4.5.0-orig/gcc/configure.ac gcc-4.5.0/gcc/configure.ac
29--- gcc-4.5.0-orig/gcc/configure.ac 2010-09-17 23:30:21.000000000 +0800
30+++ gcc-4.5.0/gcc/configure.ac 2010-09-19 18:21:11.000000000 +0800
31@@ -3467,13 +3467,6 @@
32 rm -f conftest.*
33 fi
34 fi
35- if test $gcc_cv_as_ld_jalr_reloc = yes; then
36- if test x$target_cpu_default = x; then
37- target_cpu_default=MASK_RELAX_PIC_CALLS
38- else
39- target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CALLS"
40- fi
41- fi
42 AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
43
44 AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-c++-builtin-redecl.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-c++-builtin-redecl.patch
new file mode 100644
index 000000000..a149eae98
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-c++-builtin-redecl.patch
@@ -0,0 +1,114 @@
12007-10-02 Jakub Jelinek <jakub@redhat.com>
2
3 * decl.c (duplicate_decls): When redeclaring a builtin function,
4 keep the merged decl builtin whenever types match, even if new
5 decl defines a function.
6
7 * gcc.dg/builtins-65.c: New test.
8 * g++.dg/ext/builtin10.C: New test.
9
10Index: gcc/cp/decl.c
11===================================================================
12--- gcc/cp/decl.c.orig 2010-04-01 11:48:46.000000000 -0700
13+++ gcc/cp/decl.c 2010-06-25 10:10:54.749131719 -0700
14@@ -2021,23 +2021,21 @@
15 DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
16 DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
17 }
18+ /* If redeclaring a builtin function, it stays built in. */
19+ if (types_match && DECL_BUILT_IN (olddecl))
20+ {
21+ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
22+ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
23+ /* If we're keeping the built-in definition, keep the rtl,
24+ regardless of declaration matches. */
25+ COPY_DECL_RTL (olddecl, newdecl);
26+ }
27 if (new_defines_function)
28 /* If defining a function declared with other language
29 linkage, use the previously declared language linkage. */
30 SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
31 else if (types_match)
32 {
33- /* If redeclaring a builtin function, and not a definition,
34- it stays built in. */
35- if (DECL_BUILT_IN (olddecl))
36- {
37- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
38- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
39- /* If we're keeping the built-in definition, keep the rtl,
40- regardless of declaration matches. */
41- COPY_DECL_RTL (olddecl, newdecl);
42- }
43-
44 DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
45 /* Don't clear out the arguments if we're just redeclaring a
46 function. */
47Index: gcc/testsuite/gcc.dg/builtins-65.c
48===================================================================
49--- gcc/testsuite/gcc.dg/builtins-65.c.orig 2009-06-26 02:02:04.000000000 -0700
50+++ gcc/testsuite/gcc.dg/builtins-65.c 2010-06-25 10:10:54.784464429 -0700
51@@ -1,3 +1,28 @@
52+/* { dg-do compile } */
53+/* { dg-options "-O2" } */
54+
55+typedef __SIZE_TYPE__ size_t;
56+extern void __chk_fail (void);
57+extern int snprintf (char *, size_t, const char *, ...);
58+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
59+{
60+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
61+ __chk_fail ();
62+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
63+}
64+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
65+
66+char buf[10];
67+
68+int
69+main (void)
70+{
71+ snprintf (buf, 10, "%d%d\n", 10, 10);
72+ return 0;
73+}
74+
75+/* { dg-final { scan-assembler "mysnprintf" } } */
76+/* { dg-final { scan-assembler-not "__chk_fail" } } */
77 /* { dg-do link } */
78 /* { dg-options "-O2 -ffast-math" } */
79 /* { dg-require-effective-target c99_runtime } */
80Index: gcc/testsuite/g++.dg/ext/builtin10.C
81===================================================================
82--- gcc/testsuite/g++.dg/ext/builtin10.C.orig 2009-02-02 03:27:50.000000000 -0800
83+++ gcc/testsuite/g++.dg/ext/builtin10.C 2010-06-25 10:10:54.816467202 -0700
84@@ -1,3 +1,30 @@
85+// { dg-do compile }
86+// { dg-options "-O2" }
87+
88+typedef __SIZE_TYPE__ size_t;
89+extern "C" {
90+extern void __chk_fail (void);
91+extern int snprintf (char *, size_t, const char *, ...);
92+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
93+{
94+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
95+ __chk_fail ();
96+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
97+}
98+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
99+}
100+
101+char buf[10];
102+
103+int
104+main (void)
105+{
106+ snprintf (buf, 10, "%d%d\n", 10, 10);
107+ return 0;
108+}
109+
110+// { dg-final { scan-assembler "mysnprintf" } }
111+// { dg-final { scan-assembler-not "__chk_fail" } }
112 // { dg-do compile { target correct_iso_cpp_string_wchar_protos } }
113 // { dg-options "-O2 -fdump-tree-optimized" }
114
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-cpp-pragma.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-cpp-pragma.patch
new file mode 100644
index 000000000..00d37bd7c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-cpp-pragma.patch
@@ -0,0 +1,284 @@
12008-02-26 Jakub Jelinek <jakub@redhat.com>
2
3 * c-ppoutput.c (scan_translation_unit): Handle CPP_PRAGMA
4 and CPP_PRAGMA_EOL.
5 * c-pragma.c (pragma_ns_name): New typedef.
6 (registered_pp_pragmas): New variable.
7 (c_pp_lookup_pragma): New function.
8 (c_register_pragma_1): If flag_preprocess_only, do nothing
9 for non-expanded pragmas, for expanded ones push pragma's
10 namespace and name into registered_pp_pragmas vector.
11 (c_invoke_pragma_handler): Register OpenMP pragmas even when
12 flag_preprocess_only, don't register GCC pch_preprocess
13 pragma if flag_preprocess_only.
14 * c-opts.c (c_common_init): Call init_pragma even if
15 flag_preprocess_only.
16 * c-pragma.c (c_pp_lookup_pragma): New prototype.
17 * config/darwin.h (DARWIN_REGISTER_TARGET_PRAGMAS): Don't call
18 cpp_register_pragma if flag_preprocess_only.
19
20 * gcc.dg/gomp/preprocess-1.c: New test.
21
22--- gcc/c-ppoutput.c.jj 2008-01-26 18:01:16.000000000 +0100
23+++ gcc/c-ppoutput.c 2008-02-26 22:54:57.000000000 +0100
24@@ -1,6 +1,6 @@
25 /* Preprocess only, using cpplib.
26- Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
27- Free Software Foundation, Inc.
28+ Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007,
29+ 2008 Free Software Foundation, Inc.
30 Written by Per Bothner, 1994-95.
31
32 This program is free software; you can redistribute it and/or modify it
33@@ -177,7 +177,24 @@ scan_translation_unit (cpp_reader *pfile
34 avoid_paste = false;
35 print.source = NULL;
36 print.prev = token;
37- cpp_output_token (token, print.outf);
38+ if (token->type == CPP_PRAGMA)
39+ {
40+ const char *space;
41+ const char *name;
42+
43+ maybe_print_line (token->src_loc);
44+ fputs ("#pragma ", print.outf);
45+ c_pp_lookup_pragma (token->val.pragma, &space, &name);
46+ if (space)
47+ fprintf (print.outf, "%s %s", space, name);
48+ else
49+ fprintf (print.outf, "%s", name);
50+ print.printed = 1;
51+ }
52+ else if (token->type == CPP_PRAGMA_EOL)
53+ maybe_print_line (token->src_loc);
54+ else
55+ cpp_output_token (token, print.outf);
56
57 if (token->type == CPP_COMMENT)
58 account_for_newlines (token->val.str.text, token->val.str.len);
59--- gcc/c-pragma.c.jj 2008-02-15 18:43:03.000000000 +0100
60+++ gcc/c-pragma.c 2008-02-26 22:59:44.000000000 +0100
61@@ -1,6 +1,6 @@
62 /* Handle #pragma, system V.4 style. Supports #pragma weak and #pragma pack.
63 Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
64- 2006, 2007 Free Software Foundation, Inc.
65+ 2006, 2007, 2008 Free Software Foundation, Inc.
66
67 This file is part of GCC.
68
69@@ -872,6 +872,61 @@ DEF_VEC_ALLOC_O (pragma_handler, heap);
70
71 static VEC(pragma_handler, heap) *registered_pragmas;
72
73+typedef struct
74+{
75+ const char *space;
76+ const char *name;
77+} pragma_ns_name;
78+
79+DEF_VEC_O (pragma_ns_name);
80+DEF_VEC_ALLOC_O (pragma_ns_name, heap);
81+
82+static VEC(pragma_ns_name, heap) *registered_pp_pragmas;
83+
84+struct omp_pragma_def { const char *name; unsigned int id; };
85+static const struct omp_pragma_def omp_pragmas[] = {
86+ { "atomic", PRAGMA_OMP_ATOMIC },
87+ { "barrier", PRAGMA_OMP_BARRIER },
88+ { "critical", PRAGMA_OMP_CRITICAL },
89+ { "flush", PRAGMA_OMP_FLUSH },
90+ { "for", PRAGMA_OMP_FOR },
91+ { "master", PRAGMA_OMP_MASTER },
92+ { "ordered", PRAGMA_OMP_ORDERED },
93+ { "parallel", PRAGMA_OMP_PARALLEL },
94+ { "section", PRAGMA_OMP_SECTION },
95+ { "sections", PRAGMA_OMP_SECTIONS },
96+ { "single", PRAGMA_OMP_SINGLE },
97+ { "threadprivate", PRAGMA_OMP_THREADPRIVATE }
98+};
99+
100+void
101+c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
102+{
103+ const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas);
104+ int i;
105+
106+ for (i = 0; i < n_omp_pragmas; ++i)
107+ if (omp_pragmas[i].id == id)
108+ {
109+ *space = "omp";
110+ *name = omp_pragmas[i].name;
111+ return;
112+ }
113+
114+ if (id >= PRAGMA_FIRST_EXTERNAL
115+ && (id < PRAGMA_FIRST_EXTERNAL
116+ + VEC_length (pragma_ns_name, registered_pp_pragmas)))
117+ {
118+ *space = VEC_index (pragma_ns_name, registered_pp_pragmas,
119+ id - PRAGMA_FIRST_EXTERNAL)->space;
120+ *name = VEC_index (pragma_ns_name, registered_pp_pragmas,
121+ id - PRAGMA_FIRST_EXTERNAL)->name;
122+ return;
123+ }
124+
125+ gcc_unreachable ();
126+}
127+
128 /* Front-end wrappers for pragma registration to avoid dragging
129 cpplib.h in almost everywhere. */
130
131@@ -881,13 +936,29 @@ c_register_pragma_1 (const char *space,
132 {
133 unsigned id;
134
135- VEC_safe_push (pragma_handler, heap, registered_pragmas, &handler);
136- id = VEC_length (pragma_handler, registered_pragmas);
137- id += PRAGMA_FIRST_EXTERNAL - 1;
138-
139- /* The C++ front end allocates 6 bits in cp_token; the C front end
140- allocates 7 bits in c_token. At present this is sufficient. */
141- gcc_assert (id < 64);
142+ if (flag_preprocess_only)
143+ {
144+ pragma_ns_name ns_name;
145+
146+ if (!allow_expansion)
147+ return;
148+
149+ ns_name.space = space;
150+ ns_name.name = name;
151+ VEC_safe_push (pragma_ns_name, heap, registered_pp_pragmas, &ns_name);
152+ id = VEC_length (pragma_ns_name, registered_pp_pragmas);
153+ id += PRAGMA_FIRST_EXTERNAL - 1;
154+ }
155+ else
156+ {
157+ VEC_safe_push (pragma_handler, heap, registered_pragmas, &handler);
158+ id = VEC_length (pragma_handler, registered_pragmas);
159+ id += PRAGMA_FIRST_EXTERNAL - 1;
160+
161+ /* The C++ front end allocates 6 bits in cp_token; the C front end
162+ allocates 7 bits in c_token. At present this is sufficient. */
163+ gcc_assert (id < 64);
164+ }
165
166 cpp_register_deferred_pragma (parse_in, space, name, id,
167 allow_expansion, false);
168@@ -921,24 +992,8 @@ c_invoke_pragma_handler (unsigned int id
169 void
170 init_pragma (void)
171 {
172- if (flag_openmp && !flag_preprocess_only)
173+ if (flag_openmp)
174 {
175- struct omp_pragma_def { const char *name; unsigned int id; };
176- static const struct omp_pragma_def omp_pragmas[] = {
177- { "atomic", PRAGMA_OMP_ATOMIC },
178- { "barrier", PRAGMA_OMP_BARRIER },
179- { "critical", PRAGMA_OMP_CRITICAL },
180- { "flush", PRAGMA_OMP_FLUSH },
181- { "for", PRAGMA_OMP_FOR },
182- { "master", PRAGMA_OMP_MASTER },
183- { "ordered", PRAGMA_OMP_ORDERED },
184- { "parallel", PRAGMA_OMP_PARALLEL },
185- { "section", PRAGMA_OMP_SECTION },
186- { "sections", PRAGMA_OMP_SECTIONS },
187- { "single", PRAGMA_OMP_SINGLE },
188- { "threadprivate", PRAGMA_OMP_THREADPRIVATE }
189- };
190-
191 const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas);
192 int i;
193
194@@ -947,8 +1002,9 @@ init_pragma (void)
195 omp_pragmas[i].id, true, true);
196 }
197
198- cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
199- PRAGMA_GCC_PCH_PREPROCESS, false, false);
200+ if (!flag_preprocess_only)
201+ cpp_register_deferred_pragma (parse_in, "GCC", "pch_preprocess",
202+ PRAGMA_GCC_PCH_PREPROCESS, false, false);
203
204 #ifdef HANDLE_PRAGMA_PACK
205 #ifdef HANDLE_PRAGMA_PACK_WITH_EXPANSION
206--- gcc/c-opts.c.jj 2008-02-26 22:53:23.000000000 +0100
207+++ gcc/c-opts.c 2008-02-26 22:54:57.000000000 +0100
208@@ -1,5 +1,5 @@
209 /* C/ObjC/C++ command line option handling.
210- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
211+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
212 Free Software Foundation, Inc.
213 Contributed by Neil Booth.
214
215@@ -1239,6 +1239,9 @@ c_common_init (void)
216 if (version_flag)
217 c_common_print_pch_checksum (stderr);
218
219+ /* Has to wait until now so that cpplib has its hash table. */
220+ init_pragma ();
221+
222 if (flag_preprocess_only)
223 {
224 finish_options ();
225@@ -1246,9 +1249,6 @@ c_common_init (void)
226 return false;
227 }
228
229- /* Has to wait until now so that cpplib has its hash table. */
230- init_pragma ();
231-
232 return true;
233 }
234
235--- gcc/c-pragma.h.jj 2008-01-26 18:01:16.000000000 +0100
236+++ gcc/c-pragma.h 2008-02-26 22:54:57.000000000 +0100
237@@ -1,6 +1,6 @@
238 /* Pragma related interfaces.
239 Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
240- 2007 Free Software Foundation, Inc.
241+ 2007, 2008 Free Software Foundation, Inc.
242
243 This file is part of GCC.
244
245@@ -124,4 +124,6 @@ extern enum cpp_ttype pragma_lex (tree *
246 extern enum cpp_ttype c_lex_with_flags (tree *, location_t *, unsigned char *,
247 int);
248
249+extern void c_pp_lookup_pragma (unsigned int, const char **, const char **);
250+
251 #endif /* GCC_C_PRAGMA_H */
252--- gcc/config/darwin.h.jj 2008-02-11 14:48:12.000000000 +0100
253+++ gcc/config/darwin.h 2008-02-26 22:54:57.000000000 +0100
254@@ -892,8 +892,9 @@ enum machopic_addr_class {
255
256 #define DARWIN_REGISTER_TARGET_PRAGMAS() \
257 do { \
258- cpp_register_pragma (parse_in, NULL, "mark", \
259- darwin_pragma_ignore, false); \
260+ if (!flag_preprocess_only) \
261+ cpp_register_pragma (parse_in, NULL, "mark", \
262+ darwin_pragma_ignore, false); \
263 c_register_pragma (0, "options", darwin_pragma_options); \
264 c_register_pragma (0, "segment", darwin_pragma_ignore); \
265 c_register_pragma (0, "unused", darwin_pragma_unused); \
266--- gcc/testsuite/gcc.dg/gomp/preprocess-1.c.jj 2008-02-26 22:54:57.000000000 +0100
267+++ gcc/testsuite/gcc.dg/gomp/preprocess-1.c 2008-02-26 22:54:57.000000000 +0100
268@@ -0,0 +1,16 @@
269+/* { dg-do preprocess } */
270+
271+void foo (void)
272+{
273+ int i1, j1, k1;
274+#define p parallel
275+#define P(x) private (x##1)
276+#define S(x) shared (x##1)
277+#define F(x) firstprivate (x##1)
278+#pragma omp p P(i) \
279+ S(j) \
280+ F(k)
281+ ;
282+}
283+
284+/* { dg-final { scan-file preprocess-1.i "(^|\n)#pragma omp parallel private \\(i1\\) shared \\(j1\\) firstprivate \\(k1\\)($|\n)" } } */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-i386-libgomp.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-i386-libgomp.patch
new file mode 100644
index 000000000..a588db28e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-i386-libgomp.patch
@@ -0,0 +1,65 @@
1Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486
2hardware isn't supported because NPTL doesn't support it anyway.
3
4Index: libgomp/configure.tgt
5===================================================================
6--- libgomp/configure.tgt.orig 2010-01-28 13:47:59.000000000 -0800
7+++ libgomp/configure.tgt 2010-06-25 10:32:26.706135558 -0700
8@@ -48,14 +48,14 @@
9 ;;
10
11 # Note that bare i386 is not included here. We need cmpxchg.
12- i[456]86-*-linux*)
13+ i[3456]86-*-linux*)
14 config_path="linux/x86 linux posix"
15 case " ${CC} ${CFLAGS} " in
16 *" -m64 "*)
17 ;;
18 *)
19 if test -z "$with_arch"; then
20- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
21+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
22 fi
23 esac
24 ;;
25@@ -67,7 +67,7 @@
26 config_path="linux/x86 linux posix"
27 case " ${CC} ${CFLAGS} " in
28 *" -m32 "*)
29- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
30+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
31 ;;
32 esac
33 ;;
34Index: libstdc++-v3/libsupc++/guard.cc
35===================================================================
36--- libstdc++-v3/libsupc++/guard.cc.orig 2009-11-09 14:09:30.000000000 -0800
37+++ libstdc++-v3/libsupc++/guard.cc 2010-06-25 10:32:26.710135964 -0700
38@@ -30,6 +30,27 @@
39 #include <new>
40 #include <ext/atomicity.h>
41 #include <ext/concurrence.h>
42+#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS
43+# define _GLIBCXX_ATOMIC_BUILTINS 1
44+# define __sync_val_compare_and_swap(a, b, c) \
45+ ({ \
46+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
47+ int sltas; \
48+ __asm __volatile ("lock; cmpxchgl %3, (%1)" \
49+ : "=a" (sltas) \
50+ : "r" (a), "0" (b), "r" (c) : "memory"); \
51+ sltas; \
52+ })
53+# define __sync_lock_test_and_set(a, b) \
54+ ({ \
55+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
56+ int sltas; \
57+ __asm __volatile ("xchgl (%1), %0" \
58+ : "=r" (sltas) \
59+ : "r" (a), "0" (b) : "memory"); \
60+ sltas; \
61+ })
62+#endif
63 #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
64 && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
65 # include <climits>
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ia64-libunwind.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ia64-libunwind.patch
new file mode 100644
index 000000000..cad13d122
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ia64-libunwind.patch
@@ -0,0 +1,550 @@
12004-11-27 Jakub Jelinek <jakub@redhat.com>
2
3 * config.gcc (ia64*-*-linux*): If native and libelf is installed,
4 use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
5 fragments.
6 * config/ia64/t-glibc-no-libunwind: New file.
7 * config/ia64/change-symver.c: New file.
8 * config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
9 define _Unwind_* to __symverglobal_Unwind_*.
10 (alias): Undefine.
11 (symverglobal): Define. Use it on _Unwind_*.
12 * config/ia64/mkmap-symver-multi.awk: New file.
13 * config/ia64/libgcc-ia64-no-libunwind.ver: New file.
14
15Index: gcc/config.gcc
16===================================================================
17--- gcc/config.gcc.orig 2010-04-07 03:34:00.000000000 -0700
18+++ gcc/config.gcc 2010-06-25 10:15:25.133131055 -0700
19@@ -1457,9 +1457,16 @@
20 ;;
21 ia64*-*-linux*)
22 tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h glibc-stdint.h ia64/sysv4.h ia64/linux.h"
23- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
24- if test x$with_system_libunwind != xyes ; then
25- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
26+ tmake_file="${tmake_file} ia64/t-ia64"
27+ if test x${target} = x${host} && test x${target} = x${build} \
28+ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
29+ && test -f /usr/lib/libelf.so; then
30+ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
31+ else
32+ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
33+ if test x$with_system_libunwind != xyes ; then
34+ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
35+ fi
36 fi
37 target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
38 extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
39Index: gcc/config/ia64/t-glibc-no-libunwind
40===================================================================
41--- /dev/null 1970-01-01 00:00:00.000000000 +0000
42+++ gcc/config/ia64/t-glibc-no-libunwind 2010-06-25 10:14:32.521880765 -0700
43@@ -0,0 +1,30 @@
44+# Don't use system libunwind library on IA-64 GLIBC based system,
45+# but make _Unwind_* symbols unversioned, so that created programs
46+# are usable even when libgcc_s uses libunwind.
47+LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
48+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
49+SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
50+
51+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
52+ -Wl,--soname=$(SHLIB_SONAME) \
53+ -Wl,--version-script=$(SHLIB_MAP) \
54+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
55+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
56+ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
57+ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
58+ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
59+ else true; fi && \
60+ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
61+ $$(gcc_srcdir)/config/ia64/change-symver.c -lelf && \
62+ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
63+ GCC_3.4.2 _GLOBAL_ \
64+ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
65+ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
66+ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
67+ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
68+ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
69+ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
70+ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
71+ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
72+
73+TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
74Index: gcc/config/ia64/change-symver.c
75===================================================================
76--- /dev/null 1970-01-01 00:00:00.000000000 +0000
77+++ gcc/config/ia64/change-symver.c 2010-06-25 10:14:32.521880765 -0700
78@@ -0,0 +1,211 @@
79+#define _GNU_SOURCE 1
80+#define _FILE_OFFSET_BITS 64
81+#include <endian.h>
82+#include <errno.h>
83+#include <error.h>
84+#include <fcntl.h>
85+#include <fnmatch.h>
86+#include <gelf.h>
87+#include <stdlib.h>
88+#include <string.h>
89+#include <unistd.h>
90+
91+int
92+compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
93+{
94+ if (strcmp (name, "_GLOBAL_") == 0)
95+ return 1;
96+
97+ int cnt;
98+ size_t offset = 0;
99+ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
100+ {
101+ GElf_Verdef defmem;
102+ GElf_Verdef *def;
103+ GElf_Verdaux auxmem;
104+ GElf_Verdaux *aux;
105+ unsigned int auxoffset;
106+
107+ /* Get the data at the next offset. */
108+ def = gelf_getverdef (verd, offset, &defmem);
109+ if (def == NULL)
110+ break;
111+
112+ auxoffset = offset + def->vd_aux;
113+ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
114+ if (aux == NULL)
115+ break;
116+
117+ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
118+ aux->vda_name)) == 0)
119+ return def->vd_ndx;
120+
121+ /* Find the next offset. */
122+ offset += def->vd_next;
123+ }
124+
125+ return -1;
126+}
127+
128+int
129+main (int argc, char **argv)
130+{
131+ if (argc < 4)
132+ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
133+
134+ const char *fname = argv[1];
135+
136+ /* Open the file. */
137+ int fd;
138+ fd = open (fname, O_RDWR);
139+ if (fd == -1)
140+ error (1, errno, fname);
141+
142+ elf_version (EV_CURRENT);
143+
144+ /* Now get the ELF descriptor. */
145+ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
146+ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
147+ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
148+
149+ size_t shstrndx;
150+ /* Get the section header string table index. */
151+ if (elf_getshstrndx (elf, &shstrndx) < 0)
152+ error (1, 0, "cannot get shstrndx from %s", fname);
153+
154+ GElf_Ehdr ehdr_mem;
155+ GElf_Ehdr *ehdr;
156+
157+ /* We need the ELF header in a few places. */
158+ ehdr = gelf_getehdr (elf, &ehdr_mem);
159+ if (ehdr == NULL)
160+ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
161+
162+ Elf_Scn *scn = NULL;
163+ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
164+ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
165+
166+ while ((scn = elf_nextscn (elf, scn)) != NULL)
167+ {
168+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
169+
170+ if (shdr == NULL)
171+ error (1, 0, "couldn't get shdr from %s", fname);
172+
173+ if ((shdr->sh_flags & SHF_ALLOC) != 0)
174+ {
175+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
176+ Elf_Data **p;
177+
178+ if (strcmp (name, ".gnu.version") == 0)
179+ {
180+ p = &ver;
181+ ver_shdr = *shdr;
182+ }
183+ else if (strcmp (name, ".gnu.version_d") == 0)
184+ {
185+ p = &verd;
186+ verd_shdr = *shdr;
187+ }
188+ else if (strcmp (name, ".dynsym") == 0)
189+ {
190+ p = &dynsym;
191+ dynsym_shdr = *shdr;
192+ }
193+ else
194+ continue;
195+
196+ if (*p != NULL)
197+ error (1, 0, "Two %s sections in %s", name, fname);
198+ *p = elf_getdata (scn, NULL);
199+ if (*p == NULL || elf_getdata (scn, *p) != NULL)
200+ error (1, 0, "No data or non-contiguous data in %s section in %s",
201+ name, fname);
202+ }
203+ }
204+
205+ if (ver == NULL || verd == NULL || dynsym == NULL)
206+ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
207+
208+ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
209+ if (from_idx == -1)
210+ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
211+
212+ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
213+ if (to_idx == -1)
214+ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
215+
216+ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
217+ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
218+ || ver_shdr.sh_entsize != 2
219+ || (ver_shdr.sh_size & 1)
220+ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
221+ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
222+
223+ size_t nentries = ver_shdr.sh_size / 2;
224+ size_t cnt;
225+ GElf_Versym array[nentries];
226+ for (cnt = 0; cnt < nentries; ++cnt)
227+ {
228+ GElf_Versym vsymmem;
229+ GElf_Versym *vsym;
230+
231+ vsym = gelf_getversym (ver, cnt, &vsymmem);
232+ if (vsym == NULL)
233+ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
234+
235+ array[cnt] = *vsym;
236+ if (*vsym != from_idx)
237+ continue;
238+
239+ GElf_Sym sym_mem;
240+ GElf_Sym *sym;
241+ sym = gelf_getsym (dynsym, cnt, &sym_mem);
242+ if (sym == NULL)
243+ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
244+
245+ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
246+
247+ int argn;
248+ for (argn = 4; argn < argc; ++argn)
249+ if (fnmatch (argv[argn], name, 0) == 0)
250+ {
251+ array[cnt] = to_idx;
252+ break;
253+ }
254+ }
255+
256+ if (sizeof (array[0]) != 2)
257+ abort ();
258+
259+#if __BYTE_ORDER == __LITTLE_ENDIAN
260+ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
261+ ;
262+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
263+#elif __BYTE_ORDER == __BIG_ENDIAN
264+ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
265+ ;
266+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
267+#else
268+# error Unsupported endianity
269+#endif
270+ {
271+ for (cnt = 0; cnt < nentries; ++cnt)
272+ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
273+ }
274+ else
275+ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
276+
277+ if (elf_end (elf) != 0)
278+ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
279+
280+ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
281+ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
282+ fname);
283+
284+ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
285+ error (1, 0, "failed to write .gnu.version section into %s", fname);
286+
287+ close (fd);
288+ return 0;
289+}
290Index: gcc/config/ia64/unwind-ia64.c
291===================================================================
292--- gcc/config/ia64/unwind-ia64.c.orig 2009-09-07 08:41:52.000000000 -0700
293+++ gcc/config/ia64/unwind-ia64.c 2010-06-25 10:14:32.521880765 -0700
294@@ -48,6 +48,51 @@
295 #define MD_UNW_COMPATIBLE_PERSONALITY_P(HEADER) 1
296 #endif
297
298+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
299+extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
300+ (_Unwind_Trace_Fn, void *);
301+extern void __symverglobal_Unwind_DeleteException
302+ (struct _Unwind_Exception *);
303+extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
304+extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
305+ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
306+extern _Unwind_Word __symverglobal_Unwind_GetCFA
307+ (struct _Unwind_Context *);
308+extern _Unwind_Word __symverglobal_Unwind_GetBSP
309+ (struct _Unwind_Context *);
310+extern _Unwind_Word __symverglobal_Unwind_GetGR
311+ (struct _Unwind_Context *, int );
312+extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
313+extern void *__symverglobal_Unwind_GetLanguageSpecificData
314+ (struct _Unwind_Context *);
315+extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
316+ (struct _Unwind_Context *);
317+extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
318+ (struct _Unwind_Exception *);
319+extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
320+extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
321+ (struct _Unwind_Exception *);
322+extern void __symverglobal_Unwind_SetGR
323+ (struct _Unwind_Context *, int, _Unwind_Word);
324+extern void __symverglobal_Unwind_SetIP
325+ (struct _Unwind_Context *, _Unwind_Ptr);
326+#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
327+#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
328+#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
329+#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
330+#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
331+#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
332+#define _Unwind_GetGR __symverglobal_Unwind_GetGR
333+#define _Unwind_GetIP __symverglobal_Unwind_GetIP
334+#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
335+#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
336+#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
337+#define _Unwind_Resume __symverglobal_Unwind_Resume
338+#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
339+#define _Unwind_SetGR __symverglobal_Unwind_SetGR
340+#define _Unwind_SetIP __symverglobal_Unwind_SetIP
341+#endif
342+
343 enum unw_application_register
344 {
345 UNW_AR_BSP,
346@@ -2457,4 +2502,44 @@
347 alias (_Unwind_SetIP);
348 #endif
349
350+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
351+#undef alias
352+#define symverglobal(name, version) \
353+__typeof (__symverglobal##name) __symverlocal##name \
354+ __attribute__ ((alias ("__symverglobal" #name))); \
355+__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
356+__asm__ (".symver __symverlocal" #name"," #name "@" #version)
357+
358+#undef _Unwind_Backtrace
359+#undef _Unwind_DeleteException
360+#undef _Unwind_FindEnclosingFunction
361+#undef _Unwind_ForcedUnwind
362+#undef _Unwind_GetBSP
363+#undef _Unwind_GetCFA
364+#undef _Unwind_GetGR
365+#undef _Unwind_GetIP
366+#undef _Unwind_GetLanguageSpecificData
367+#undef _Unwind_GetRegionStart
368+#undef _Unwind_RaiseException
369+#undef _Unwind_Resume
370+#undef _Unwind_Resume_or_Rethrow
371+#undef _Unwind_SetGR
372+#undef _Unwind_SetIP
373+symverglobal (_Unwind_Backtrace, GCC_3.3);
374+symverglobal (_Unwind_DeleteException, GCC_3.0);
375+symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
376+symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
377+symverglobal (_Unwind_GetBSP, GCC_3.3.2);
378+symverglobal (_Unwind_GetCFA, GCC_3.3);
379+symverglobal (_Unwind_GetGR, GCC_3.0);
380+symverglobal (_Unwind_GetIP, GCC_3.0);
381+symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
382+symverglobal (_Unwind_GetRegionStart, GCC_3.0);
383+symverglobal (_Unwind_RaiseException, GCC_3.0);
384+symverglobal (_Unwind_Resume, GCC_3.0);
385+symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
386+symverglobal (_Unwind_SetGR, GCC_3.0);
387+symverglobal (_Unwind_SetIP, GCC_3.0);
388+#endif
389+
390 #endif
391Index: gcc/config/ia64/mkmap-symver-multi.awk
392===================================================================
393--- /dev/null 1970-01-01 00:00:00.000000000 +0000
394+++ gcc/config/ia64/mkmap-symver-multi.awk 2010-06-25 10:14:32.521880765 -0700
395@@ -0,0 +1,133 @@
396+# Generate an ELF symbol version map a-la Solaris and GNU ld.
397+# Contributed by Richard Henderson <rth@cygnus.com>
398+#
399+# This file is part of GCC.
400+#
401+# GCC is free software; you can redistribute it and/or modify it under
402+# the terms of the GNU General Public License as published by the Free
403+# Software Foundation; either version 2, or (at your option) any later
404+# version.
405+#
406+# GCC is distributed in the hope that it will be useful, but WITHOUT
407+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
408+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
409+# License for more details.
410+#
411+# You should have received a copy of the GNU General Public License
412+# along with GCC; see the file COPYING. If not, write to the Free
413+# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
414+# 02110-1301, USA.
415+
416+BEGIN {
417+ state = "nm";
418+ sawsymbol = 0;
419+}
420+
421+# Remove comment and blank lines.
422+/^ *#/ || /^ *$/ {
423+ next;
424+}
425+
426+# We begin with nm input. Collect the set of symbols that are present
427+# so that we can not emit them into the final version script -- Solaris
428+# complains at us if we do.
429+
430+state == "nm" && /^%%/ {
431+ state = "ver";
432+ next;
433+}
434+
435+state == "nm" && ($1 == "U" || $2 == "U") {
436+ next;
437+}
438+
439+state == "nm" && NF == 3 {
440+ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
441+ def[$3] = 1
442+ tl=$3
443+ sub(/^.*@/,"",tl)
444+ ver[$3] = tl
445+ } else {
446+ sub(/@@?GCC_[0-9.]*$/,"",$3)
447+ def[$3] = 1;
448+ }
449+ sawsymbol = 1;
450+ next;
451+}
452+
453+state == "nm" {
454+ next;
455+}
456+
457+# Now we process a simplified variant of the Solaris symbol version
458+# script. We have one symbol per line, no semicolons, simple markers
459+# for beginning and ending each section, and %inherit markers for
460+# describing version inheritence. A symbol may appear in more than
461+# one symbol version, and the last seen takes effect.
462+
463+NF == 3 && $1 == "%inherit" {
464+ inherit[$2] = $3;
465+ next;
466+}
467+
468+NF == 2 && $2 == "{" {
469+ libs[$1] = 1;
470+ thislib = $1;
471+ next;
472+}
473+
474+$1 == "}" {
475+ thislib = "";
476+ next;
477+}
478+
479+{
480+ ver[$1] = thislib;
481+ next;
482+}
483+
484+END {
485+ if (!sawsymbol)
486+ {
487+ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
488+ exit 1;
489+ }
490+ for (l in libs)
491+ output(l);
492+}
493+
494+function output(lib) {
495+ if (done[lib])
496+ return;
497+ done[lib] = 1;
498+ if (inherit[lib])
499+ output(inherit[lib]);
500+
501+ empty=1
502+ for (sym in ver)
503+ if ((ver[sym] == lib) && (sym in def))
504+ {
505+ if (empty)
506+ {
507+ printf("%s {\n", lib);
508+ printf(" global:\n");
509+ empty = 0;
510+ }
511+ symp = sym;
512+ sub(/@GCC_[0-9.]*$/,"",symp);
513+ printf("\t%s;\n", symp);
514+ if (dotsyms)
515+ printf("\t.%s;\n", symp);
516+ }
517+
518+ if (empty)
519+ {
520+ for (l in libs)
521+ if (inherit[l] == lib)
522+ inherit[l] = inherit[lib];
523+ }
524+ else if (inherit[lib])
525+ printf("} %s;\n", inherit[lib]);
526+ else
527+ printf ("\n local:\n\t*;\n};\n");
528+}
529Index: gcc/config/ia64/libgcc-ia64-no-libunwind.ver
530===================================================================
531--- /dev/null 1970-01-01 00:00:00.000000000 +0000
532+++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2010-06-25 10:14:32.525880902 -0700
533@@ -0,0 +1,17 @@
534+GCC_3.4.2 {
535+ _Unwind_GetGR
536+ _Unwind_RaiseException
537+ _Unwind_GetRegionStart
538+ _Unwind_SetIP
539+ _Unwind_GetIP
540+ _Unwind_GetLanguageSpecificData
541+ _Unwind_Resume
542+ _Unwind_DeleteException
543+ _Unwind_SetGR
544+ _Unwind_ForcedUnwind
545+ _Unwind_Backtrace
546+ _Unwind_FindEnclosingFunction
547+ _Unwind_GetCFA
548+ _Unwind_Resume_or_Rethrow
549+ _Unwind_GetBSP
550+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-debug-iface-type.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-debug-iface-type.patch
new file mode 100644
index 000000000..de14a5001
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-debug-iface-type.patch
@@ -0,0 +1,19 @@
12008-01-25 Jakub Jelinek <jakub@redhat.com>
2
3 * lang.c (java_classify_record): Revert 2007-12-20 change.
4
5Index: gcc/java/lang.c
6===================================================================
7--- gcc/java/lang.c.orig 2010-01-20 00:17:00.000000000 -0800
8+++ gcc/java/lang.c 2010-06-25 10:28:46.569383189 -0700
9@@ -881,9 +881,7 @@
10 if (! CLASS_P (type))
11 return RECORD_IS_STRUCT;
12
13- /* ??? GDB does not support DW_TAG_interface_type as of December,
14- 2007. Re-enable this at a later time. */
15- if (0 && CLASS_INTERFACE (TYPE_NAME (type)))
16+ if (CLASS_INTERFACE (TYPE_NAME (type)))
17 return RECORD_IS_INTERFACE;
18
19 return RECORD_IS_CLASS;
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-nomulti.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-nomulti.patch
new file mode 100644
index 000000000..3cb10f3c2
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-java-nomulti.patch
@@ -0,0 +1,48 @@
1Index: libjava/configure.ac
2===================================================================
3--- libjava/configure.ac.orig 2010-03-21 12:41:37.000000000 -0700
4+++ libjava/configure.ac 2010-06-25 10:17:47.489886278 -0700
5@@ -139,6 +139,13 @@
6 [allow rebuilding of .class and .h files]))
7 AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
8
9+AC_ARG_ENABLE(libjava-multilib,
10+ AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
11+if test "$enable_libjava_multilib" = no; then
12+ multilib=no
13+ ac_configure_args="$ac_configure_args --disable-multilib"
14+fi
15+
16 # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
17 GCC_NO_EXECUTABLES
18
19Index: libjava/configure
20===================================================================
21--- libjava/configure.orig 2010-04-02 11:18:06.000000000 -0700
22+++ libjava/configure 2010-06-25 10:17:47.516381209 -0700
23@@ -1609,6 +1609,8 @@
24 default=yes
25 --enable-java-maintainer-mode
26 allow rebuilding of .class and .h files
27+ --enable-libjava-multilib
28+ build libjava as multilib
29 --disable-dependency-tracking speeds up one-time build
30 --enable-dependency-tracking do not reject slow dependency extractors
31 --enable-maintainer-mode enable make rules and dependencies not useful
32@@ -3346,6 +3348,16 @@
33 fi
34
35
36+# Check whether --enable-libjava-multilib was given.
37+if test "${enable_libjava_multilib+set}" = set; then
38+ enableval=$enable_libjava_multilib;
39+fi
40+
41+if test "$enable_libjava_multilib" = no; then
42+ multilib=no
43+ ac_configure_args="$ac_configure_args --disable-multilib"
44+fi
45+
46 # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
47
48
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-libgomp-speedup.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-libgomp-speedup.patch
new file mode 100644
index 000000000..da85e556e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-libgomp-speedup.patch
@@ -0,0 +1,2797 @@
12008-03-28 Jakub Jelinek <jakub@redhat.com>
2
3 * config/linux/sparc/futex.h (atomic_write_barrier): Fix membar
4 argument.
5
62008-03-27 Jakub Jelinek <jakub@redhat.com>
7
8 * libgomp.h (struct gomp_team_state): Remove single_count field
9 ifndef HAVE_SYNC_BUILTINS.
10 (struct gomp_team): Likewise. Add work_share_list_free_lock
11 ifndef HAVE_SYNC_BUILTINS.
12 * team.c (gomp_new_team): If HAVE_SYNC_BUILTINS is not defined,
13 don't initialize single_count, but instead initialize
14 work_share_list_free_lock.
15 (free_team): Destroy work_share_list_free_lock ifndef
16 HAVE_SYNC_BUILTINS.
17 (gomp_team_start): Don't initialize ts.single_count ifndef
18 HAVE_SYNC_BUILTINS.
19 * work.c (alloc_work_share, free_work_share): Use
20 work_share_list_free_lock instead of atomic chaining ifndef
21 HAVE_SYNC_BUILTINS.
22
232008-03-26 Jakub Jelinek <jakub@redhat.com>
24
25 * loop.c (gomp_loop_init): Fix GFS_DYNAMIC ws->mode setting.
26 * testsuite/libgomp.c/loop-4.c: New test.
27
28 * libgomp.h (struct gomp_team_state): Add single_count field.
29 (struct gomp_team): Likewise.
30 * team.c (gomp_new_team): Clear single_count.
31 (gomp_team_start): Likewise.
32 * single.c (GOMP_single_start): Rewritten if HAVE_SYNC_BUILTINS.
33
342008-03-25 Jakub Jelinek <jakub@redhat.com>
35
36 * team.c (gomp_thread_start): Don't clear ts.static_trip here.
37 * loop.c (gomp_loop_static_start, gomp_loop_dynamic_start): Clear
38 ts.static_trip here.
39 * work.c (gomp_work_share_start): Don't clear ts.static_trip here.
40
412008-03-21 Jakub Jelinek <jakub@redhat.com>
42
43 * libgomp.h: Include ptrlock.h.
44 (struct gomp_work_share): Reshuffle fields. Add next_alloc,
45 next_ws, next_free and inline_ordered_team_ids fields, change
46 ordered_team_ids into pointer from flexible array member.
47 (struct gomp_team_state): Add last_work_share field, remove
48 work_share_generation.
49 (struct gomp_team): Remove work_share_lock, generation_mask,
50 oldest_live_gen, num_live_gen and init_work_shares fields, add
51 work work_share_list_alloc, work_share_list_free and work_share_chunk
52 fields. Change work_shares from pointer to pointers into an array.
53 (gomp_new_team): New prototype.
54 (gomp_team_start): Change type of last argument.
55 (gomp_new_work_share): Removed.
56 (gomp_init_work_share, gomp_fini_work_share): New prototypes.
57 (gomp_work_share_init_done): New static inline.
58 * team.c (gomp_thread_start): Clear ts.last_work_share, don't clear
59 ts.work_share_generation.
60 (new_team): Removed.
61 (gomp_new_team): New function.
62 (free_team): Free gomp_work_share blocks chained through next_alloc,
63 instead of freeing work_shares and destroying work_share_lock.
64 (gomp_team_start): Change last argument from ws to team, don't create
65 new team, set ts.work_share to &team->work_shares[0] and clear
66 ts.last_work_share. Don't clear ts.work_share_generation.
67 (gomp_team_end): Call gomp_fini_work_share.
68 * work.c (gomp_new_work_share): Removed.
69 (alloc_work_share, gomp_init_work_share, gomp_fini_work_share): New
70 functions.
71 (free_work_share): Add team argument. Call gomp_fini_work_share
72 and then either free ws if orphaned, or put it into
73 work_share_list_free list of the current team.
74 (gomp_work_share_start, gomp_work_share_end,
75 gomp_work_share_end_nowait): Rewritten.
76 * sections.c (GOMP_sections_start): Call gomp_work_share_init_done
77 after gomp_sections_init. If HAVE_SYNC_BUILTINS, call
78 gomp_iter_dynamic_next instead of the _locked variant and don't take
79 lock around it, otherwise acquire it before calling
80 gomp_iter_dynamic_next_locked.
81 (GOMP_sections_next): If HAVE_SYNC_BUILTINS, call
82 gomp_iter_dynamic_next instead of the _locked variant and don't take
83 lock around it.
84 (GOMP_parallel_sections_start): Call gomp_new_team instead of
85 gomp_new_work_share. Call gomp_sections_init on &team->work_shares[0].
86 Adjust gomp_team_start caller.
87 * loop.c (gomp_loop_static_start, gomp_loop_ordered_static_start): Call
88 gomp_work_share_init_done after gomp_loop_init. Don't unlock ws->lock.
89 (gomp_loop_dynamic_start, gomp_loop_guided_start): Call
90 gomp_work_share_init_done after gomp_loop_init. If HAVE_SYNC_BUILTINS,
91 don't unlock ws->lock, otherwise lock it.
92 (gomp_loop_ordered_dynamic_start, gomp_loop_ordered_guided_start): Call
93 gomp_work_share_init_done after gomp_loop_init. Lock ws->lock.
94 (gomp_parallel_loop_start): Call gomp_new_team instead of
95 gomp_new_work_share. Call gomp_loop_init on &team->work_shares[0].
96 Adjust gomp_team_start caller.
97 * single.c (GOMP_single_start, GOMP_single_copy_start): Call
98 gomp_work_share_init_done if gomp_work_share_start returned true.
99 Don't unlock ws->lock.
100 * parallel.c (GOMP_parallel_start): Call gomp_new_team and pass that
101 as last argument to gomp_team_start.
102 * config/linux/ptrlock.c: New file.
103 * config/linux/ptrlock.h: New file.
104 * config/posix/ptrlock.c: New file.
105 * config/posix/ptrlock.h: New file.
106 * Makefile.am (libgomp_la_SOURCES): Add ptrlock.c.
107 * Makefile.in: Regenerated.
108 * testsuite/Makefile.in: Regenerated.
109
1102008-03-19 Jakub Jelinek <jakub@redhat.com>
111
112 * libgomp.h (gomp_active_wait_policy): Remove decl.
113 (gomp_throttled_spin_count_var, gomp_available_cpus,
114 gomp_managed_threads): New extern decls.
115 * team.c (gomp_team_start, gomp_team_end): If number of threads
116 changed, adjust atomically gomp_managed_threads.
117 * env.c (gomp_active_wait_policy, gomp_block_time_var): Remove.
118 (gomp_throttled_spin_count_var, gomp_available_cpus,
119 gomp_managed_threads): New variables.
120 (parse_millis): Removed.
121 (parse_spincount): New function.
122 (parse_wait_policy): Return -1/0/1 instead of setting
123 gomp_active_wait_policy.
124 (initialize_env): Call gomp_init_num_threads unconditionally.
125 Initialize gomp_available_cpus. Call parse_spincount instead
126 of parse_millis, initialize gomp_{,throttled_}spin_count_var
127 depending on presence and value of OMP_WAIT_POLICY and
128 GOMP_SPINCOUNT env vars.
129 * config/linux/wait.h (do_wait): Use gomp_throttled_spin_count_var
130 instead of gomp_spin_count_var if gomp_managed_threads >
131 gomp_available_cpus.
132
133 * config/linux/wait.h: Include errno.h.
134 (FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Define.
135 (gomp_futex_wake, gomp_futex_wait): New extern decls.
136 * config/linux/mutex.c (gomp_futex_wake, gomp_futex_wait): New
137 variables.
138 * config/linux/powerpc/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
139 (sys_futex0): Return error code.
140 (futex_wake, futex_wait): If ENOSYS was returned, clear
141 FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
142 * config/linux/alpha/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
143 (futex_wake, futex_wait): If ENOSYS was returned, clear
144 FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
145 * config/linux/x86/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
146 (sys_futex0): Return error code.
147 (futex_wake, futex_wait): If ENOSYS was returned, clear
148 FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
149 * config/linux/s390/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
150 (sys_futex0): Return error code.
151 (futex_wake, futex_wait): If ENOSYS was returned, clear
152 FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
153 * config/linux/ia64/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
154 (sys_futex0): Return error code.
155 (futex_wake, futex_wait): If ENOSYS was returned, clear
156 FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
157 * config/linux/sparc/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
158 (sys_futex0): Return error code.
159 (futex_wake, futex_wait): If ENOSYS was returned, clear
160 FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
161
1622008-03-18 Jakub Jelinek <jakub@redhat.com>
163
164 * libgomp.h (struct gomp_work_share): Add mode field. Put lock and
165 next into a different cache line from most of the write-once fields.
166 * loop.c: Include limits.h.
167 (gomp_loop_init): For GFS_DYNAMIC, multiply ws->chunk_size by incr.
168 If adding ws->chunk_size nthreads + 1 times after end won't
169 overflow, set ws->mode to 1.
170 * iter.c (gomp_iter_dynamic_next_locked): Don't multiply
171 ws->chunk_size by incr.
172 (gomp_iter_dynamic_next): Likewise. If ws->mode, use more efficient
173 code.
174 * work.c: Include stddef.h.
175 (gomp_new_work_share): Use offsetof rather than sizeof.
176
1772008-03-17 Jakub Jelinek <jakub@redhat.com>
178
179 * libgomp.h (struct gomp_team): Change ordered_release field
180 into gomp_sem_t ** from flexible array member. Add implicit_task
181 and initial_work_shares fields.
182 (gomp_new_task): Removed.
183 (gomp_init_task): New prototype.
184 * team.c (new_team): Allocate implicit_task for each thread
185 and initial work_shares together with gomp_team allocation.
186 (free_team): Only free work_shares if it is not init_work_shares.
187 (gomp_team_start): Use gomp_init_task instead of gomp_new_task,
188 set thr->task to the corresponding implicit_task array entry.
189 * task.c (gomp_new_task): Removed.
190 (gomp_init_task): New function.
191 (gomp_end_task): Don't free the task.
192 (GOMP_task): Allocate struct gomp_task on the stack, call
193 gomp_init_task rather than gomp_new_task.
194 * work.c (gomp_work_share_start): If work_shares ==
195 init_work_shares, gomp_malloc + memcpy rather than gomp_realloc.
196
1972008-03-15 Jakub Jelinek <jakub@redhat.com>
198 Ulrich Drepper <drepper@redhat.com>
199
200 * config/linux/bar.h (gomp_barrier_state_t): Rewritten.
201 (gomp_barrier_state_t): Change to unsigned int.
202 (gomp_barrier_init, gomp_barrier_reinit, gomp_barrier_destroy,
203 gomp_barrier_wait_start, gomp_barrier_last_thread): Rewritten.
204 (gomp_barrier_wait_last): Prototype rather than inline.
205 * config/linux/bar.c (gomp_barrier_wait_end): Rewritten.
206 (gomp_barrier_wait_last): New function.
207
2082008-03-15 Jakub Jelinek <jakub@redhat.com>
209
210 * team.c (gomp_thread_start): Use gomp_barrier_wait_last instead
211 of gomp_barrier_wait.
212 * env.c (gomp_block_time_var, gomp_spin_count_var): New variables.
213 (parse_millis): New function.
214 (initialize_env): Handle GOMP_BLOCKTIME env var.
215 * libgomp.h (struct gomp_team): Move close to the end of the struct.
216 (gomp_spin_count_var): New extern var decl.
217 * work.c (gomp_work_share_end): Use gomp_barrier_state_t bstate
218 var instead of bool last, call gomp_barrier_last_thread to check
219 for last thread, pass bstate to gomp_barrier_wait_end.
220 * config/linux/wait.h: New file.
221 * config/linux/mutex.c: Include wait.h instead of libgomp.h and
222 futex.h.
223 (gomp_mutex_lock_slow): Call do_wait instead of futex_wait.
224 * config/linux/bar.c: Include wait.h instead of libgomp.h and
225 futex.h.
226 (gomp_barrier_wait_end): Change second argument to
227 gomp_barrier_state_t. Call do_wait instead of futex_wait.
228 * config/linux/sem.c: Include wait.h instead of libgomp.h and
229 futex.h.
230 (gomp_sem_wait_slow): Call do_wait instead of futex_wait.
231 * config/linux/lock.c: Include wait.h instead of libgomp.h and
232 futex.h.
233 (gomp_set_nest_lock_25): Call do_wait instead of futex_wait.
234 * config/linux/affinity.c: Assume HAVE_SYNC_BUILTINS.
235 * config/linux/bar.h (gomp_barrier_state_t): New typedef.
236 (gomp_barrier_wait_end): Change second argument to
237 gomp_barrier_state_t.
238 (gomp_barrier_wait_start): Return gomp_barrier_state_t.
239 (gomp_barrier_last_thread, gomp_barrier_wait_last): New static
240 inlines.
241 * config/linux/powerpc/futex.h (cpu_relax, atomic_write_barrier): New
242 static inlines.
243 * config/linux/alpha/futex.h (cpu_relax, atomic_write_barrier):
244 Likewise.
245 * config/linux/x86/futex.h (cpu_relax, atomic_write_barrier):
246 Likewise.
247 * config/linux/s390/futex.h (cpu_relax, atomic_write_barrier):
248 Likewise.
249 * config/linux/ia64/futex.h (cpu_relax, atomic_write_barrier):
250 Likewise.
251 * config/linux/sparc/futex.h (cpu_relax, atomic_write_barrier):
252 Likewise.
253 * config/posix/bar.c (gomp_barrier_wait_end): Change second argument
254 to gomp_barrier_state_t.
255 * config/posix/bar.h (gomp_barrier_state_t): New typedef.
256 (gomp_barrier_wait_end): Change second argument to
257 gomp_barrier_state_t.
258 (gomp_barrier_wait_start): Return gomp_barrier_state_t.
259 (gomp_barrier_last_thread, gomp_barrier_wait_last): New static
260 inlines.
261
262--- libgomp/parallel.c.jj 2007-12-07 14:41:01.000000000 +0100
263+++ libgomp/parallel.c 2008-03-26 15:32:06.000000000 +0100
264@@ -68,7 +68,7 @@ void
265 GOMP_parallel_start (void (*fn) (void *), void *data, unsigned num_threads)
266 {
267 num_threads = gomp_resolve_num_threads (num_threads);
268- gomp_team_start (fn, data, num_threads, NULL);
269+ gomp_team_start (fn, data, num_threads, gomp_new_team (num_threads));
270 }
271
272 void
273--- libgomp/sections.c.jj 2007-12-07 14:41:01.000000000 +0100
274+++ libgomp/sections.c 2008-03-26 15:33:06.000000000 +0100
275@@ -59,14 +59,24 @@ GOMP_sections_start (unsigned count)
276 long s, e, ret;
277
278 if (gomp_work_share_start (false))
279- gomp_sections_init (thr->ts.work_share, count);
280+ {
281+ gomp_sections_init (thr->ts.work_share, count);
282+ gomp_work_share_init_done ();
283+ }
284
285+#ifdef HAVE_SYNC_BUILTINS
286+ if (gomp_iter_dynamic_next (&s, &e))
287+ ret = s;
288+ else
289+ ret = 0;
290+#else
291+ gomp_mutex_lock (&thr->ts.work_share->lock);
292 if (gomp_iter_dynamic_next_locked (&s, &e))
293 ret = s;
294 else
295 ret = 0;
296-
297 gomp_mutex_unlock (&thr->ts.work_share->lock);
298+#endif
299
300 return ret;
301 }
302@@ -83,15 +93,23 @@ GOMP_sections_start (unsigned count)
303 unsigned
304 GOMP_sections_next (void)
305 {
306- struct gomp_thread *thr = gomp_thread ();
307 long s, e, ret;
308
309+#ifdef HAVE_SYNC_BUILTINS
310+ if (gomp_iter_dynamic_next (&s, &e))
311+ ret = s;
312+ else
313+ ret = 0;
314+#else
315+ struct gomp_thread *thr = gomp_thread ();
316+
317 gomp_mutex_lock (&thr->ts.work_share->lock);
318 if (gomp_iter_dynamic_next_locked (&s, &e))
319 ret = s;
320 else
321 ret = 0;
322 gomp_mutex_unlock (&thr->ts.work_share->lock);
323+#endif
324
325 return ret;
326 }
327@@ -103,15 +121,15 @@ void
328 GOMP_parallel_sections_start (void (*fn) (void *), void *data,
329 unsigned num_threads, unsigned count)
330 {
331- struct gomp_work_share *ws;
332+ struct gomp_team *team;
333
334 num_threads = gomp_resolve_num_threads (num_threads);
335 if (gomp_dyn_var && num_threads > count)
336 num_threads = count;
337
338- ws = gomp_new_work_share (false, num_threads);
339- gomp_sections_init (ws, count);
340- gomp_team_start (fn, data, num_threads, ws);
341+ team = gomp_new_team (num_threads);
342+ gomp_sections_init (&team->work_shares[0], count);
343+ gomp_team_start (fn, data, num_threads, team);
344 }
345
346 /* The GOMP_section_end* routines are called after the thread is told
347--- libgomp/env.c.jj 2007-12-07 14:41:01.000000000 +0100
348+++ libgomp/env.c 2008-03-26 16:40:26.000000000 +0100
349@@ -44,6 +44,11 @@ enum gomp_schedule_type gomp_run_sched_v
350 unsigned long gomp_run_sched_chunk = 1;
351 unsigned short *gomp_cpu_affinity;
352 size_t gomp_cpu_affinity_len;
353+#ifndef HAVE_SYNC_BUILTINS
354+gomp_mutex_t gomp_remaining_threads_lock;
355+#endif
356+unsigned long gomp_available_cpus = 1, gomp_managed_threads = 1;
357+unsigned long long gomp_spin_count_var, gomp_throttled_spin_count_var;
358
359 /* Parse the OMP_SCHEDULE environment variable. */
360
361@@ -147,6 +152,79 @@ parse_unsigned_long (const char *name, u
362 return false;
363 }
364
365+/* Parse the GOMP_SPINCOUNT environment varible. Return true if one was
366+ present and it was successfully parsed. */
367+
368+static bool
369+parse_spincount (const char *name, unsigned long long *pvalue)
370+{
371+ char *env, *end;
372+ unsigned long long value, mult = 1;
373+
374+ env = getenv (name);
375+ if (env == NULL)
376+ return false;
377+
378+ while (isspace ((unsigned char) *env))
379+ ++env;
380+ if (*env == '\0')
381+ goto invalid;
382+
383+ if (strncasecmp (env, "infinite", 8) == 0
384+ || strncasecmp (env, "infinity", 8) == 0)
385+ {
386+ value = ~0ULL;
387+ end = env + 8;
388+ goto check_tail;
389+ }
390+
391+ errno = 0;
392+ value = strtoull (env, &end, 10);
393+ if (errno)
394+ goto invalid;
395+
396+ while (isspace ((unsigned char) *end))
397+ ++end;
398+ if (*end != '\0')
399+ {
400+ switch (tolower (*end))
401+ {
402+ case 'k':
403+ mult = 1000LL;
404+ break;
405+ case 'm':
406+ mult = 1000LL * 1000LL;
407+ break;
408+ case 'g':
409+ mult = 1000LL * 1000LL * 1000LL;
410+ break;
411+ case 't':
412+ mult = 1000LL * 1000LL * 1000LL * 1000LL;
413+ break;
414+ default:
415+ goto invalid;
416+ }
417+ ++end;
418+ check_tail:
419+ while (isspace ((unsigned char) *end))
420+ ++end;
421+ if (*end != '\0')
422+ goto invalid;
423+ }
424+
425+ if (value > ~0ULL / mult)
426+ value = ~0ULL;
427+ else
428+ value *= mult;
429+
430+ *pvalue = value;
431+ return true;
432+
433+ invalid:
434+ gomp_error ("Invalid value for environment variable %s", name);
435+ return false;
436+}
437+
438 /* Parse a boolean value for environment variable NAME and store the
439 result in VALUE. */
440
441@@ -281,10 +359,25 @@ initialize_env (void)
442 parse_schedule ();
443 parse_boolean ("OMP_DYNAMIC", &gomp_dyn_var);
444 parse_boolean ("OMP_NESTED", &gomp_nest_var);
445+ gomp_init_num_threads ();
446+ gomp_available_cpus = gomp_nthreads_var;
447 if (!parse_unsigned_long ("OMP_NUM_THREADS", &gomp_nthreads_var))
448- gomp_init_num_threads ();
449+ gomp_nthreads_var = gomp_available_cpus;
450 if (parse_affinity ())
451 gomp_init_affinity ();
452+ if (!parse_spincount ("GOMP_SPINCOUNT", &gomp_spin_count_var))
453+ {
454+ /* Using a rough estimation of 100000 spins per msec,
455+ use 200 msec blocking.
456+ Depending on the CPU speed, this can be e.g. 5 times longer
457+ or 5 times shorter. */
458+ gomp_spin_count_var = 20000000LL;
459+ }
460+ /* gomp_throttled_spin_count_var is used when there are more libgomp
461+ managed threads than available CPUs. Use very short spinning. */
462+ gomp_throttled_spin_count_var = 100LL;
463+ if (gomp_throttled_spin_count_var > gomp_spin_count_var)
464+ gomp_throttled_spin_count_var = gomp_spin_count_var;
465
466 /* Not strictly environment related, but ordering constructors is tricky. */
467 pthread_attr_init (&gomp_thread_attr);
468--- libgomp/libgomp.h.jj 2007-12-07 14:41:01.000000000 +0100
469+++ libgomp/libgomp.h 2008-03-27 12:21:51.000000000 +0100
470@@ -50,6 +50,7 @@
471 #include "sem.h"
472 #include "mutex.h"
473 #include "bar.h"
474+#include "ptrlock.h"
475
476
477 /* This structure contains the data to control one work-sharing construct,
478@@ -70,6 +71,8 @@ struct gomp_work_share
479 If this is a SECTIONS construct, this value will always be DYNAMIC. */
480 enum gomp_schedule_type sched;
481
482+ int mode;
483+
484 /* This is the chunk_size argument to the SCHEDULE clause. */
485 long chunk_size;
486
487@@ -81,17 +84,38 @@ struct gomp_work_share
488 is always 1. */
489 long incr;
490
491- /* This lock protects the update of the following members. */
492- gomp_mutex_t lock;
493+ /* This is a circular queue that details which threads will be allowed
494+ into the ordered region and in which order. When a thread allocates
495+ iterations on which it is going to work, it also registers itself at
496+ the end of the array. When a thread reaches the ordered region, it
497+ checks to see if it is the one at the head of the queue. If not, it
498+ blocks on its RELEASE semaphore. */
499+ unsigned *ordered_team_ids;
500
501- union {
502- /* This is the next iteration value to be allocated. In the case of
503- GFS_STATIC loops, this the iteration start point and never changes. */
504- long next;
505+ /* This is the number of threads that have registered themselves in
506+ the circular queue ordered_team_ids. */
507+ unsigned ordered_num_used;
508
509- /* This is the returned data structure for SINGLE COPYPRIVATE. */
510- void *copyprivate;
511- };
512+ /* This is the team_id of the currently acknowledged owner of the ordered
513+ section, or -1u if the ordered section has not been acknowledged by
514+ any thread. This is distinguished from the thread that is *allowed*
515+ to take the section next. */
516+ unsigned ordered_owner;
517+
518+ /* This is the index into the circular queue ordered_team_ids of the
519+ current thread that's allowed into the ordered reason. */
520+ unsigned ordered_cur;
521+
522+ /* This is a chain of allocated gomp_work_share blocks, valid only
523+ in the first gomp_work_share struct in the block. */
524+ struct gomp_work_share *next_alloc;
525+
526+ /* The above fields are written once during workshare initialization,
527+ or related to ordered worksharing. Make sure the following fields
528+ are in a different cache line. */
529+
530+ /* This lock protects the update of the following members. */
531+ gomp_mutex_t lock __attribute__((aligned (64)));
532
533 /* This is the count of the number of threads that have exited the work
534 share construct. If the construct was marked nowait, they have moved on
535@@ -99,27 +123,28 @@ struct gomp_work_share
536 of the team to exit the work share construct must deallocate it. */
537 unsigned threads_completed;
538
539- /* This is the index into the circular queue ordered_team_ids of the
540- current thread that's allowed into the ordered reason. */
541- unsigned ordered_cur;
542+ union {
543+ /* This is the next iteration value to be allocated. In the case of
544+ GFS_STATIC loops, this the iteration start point and never changes. */
545+ long next;
546
547- /* This is the number of threads that have registered themselves in
548- the circular queue ordered_team_ids. */
549- unsigned ordered_num_used;
550+ /* This is the returned data structure for SINGLE COPYPRIVATE. */
551+ void *copyprivate;
552+ };
553
554- /* This is the team_id of the currently acknoledged owner of the ordered
555- section, or -1u if the ordered section has not been acknowledged by
556- any thread. This is distinguished from the thread that is *allowed*
557- to take the section next. */
558- unsigned ordered_owner;
559+ union {
560+ /* Link to gomp_work_share struct for next work sharing construct
561+ encountered after this one. */
562+ gomp_ptrlock_t next_ws;
563+
564+ /* gomp_work_share structs are chained in the free work share cache
565+ through this. */
566+ struct gomp_work_share *next_free;
567+ };
568
569- /* This is a circular queue that details which threads will be allowed
570- into the ordered region and in which order. When a thread allocates
571- iterations on which it is going to work, it also registers itself at
572- the end of the array. When a thread reaches the ordered region, it
573- checks to see if it is the one at the head of the queue. If not, it
574- blocks on its RELEASE semaphore. */
575- unsigned ordered_team_ids[];
576+ /* If only few threads are in the team, ordered_team_ids can point
577+ to this array which fills the padding at the end of this struct. */
578+ unsigned inline_ordered_team_ids[0];
579 };
580
581 /* This structure contains all of the thread-local data associated with
582@@ -133,21 +158,24 @@ struct gomp_team_state
583
584 /* This is the work share construct which this thread is currently
585 processing. Recall that with NOWAIT, not all threads may be
586- processing the same construct. This value is NULL when there
587- is no construct being processed. */
588+ processing the same construct. */
589 struct gomp_work_share *work_share;
590
591+ /* This is the previous work share construct or NULL if there wasn't any.
592+ When all threads are done with the current work sharing construct,
593+ the previous one can be freed. The current one can't, as its
594+ next_ws field is used. */
595+ struct gomp_work_share *last_work_share;
596+
597 /* This is the ID of this thread within the team. This value is
598 guaranteed to be between 0 and N-1, where N is the number of
599 threads in the team. */
600 unsigned team_id;
601
602- /* The work share "generation" is a number that increases by one for
603- each work share construct encountered in the dynamic flow of the
604- program. It is used to find the control data for the work share
605- when encountering it for the first time. This particular number
606- reflects the generation of the work_share member of this struct. */
607- unsigned work_share_generation;
608+#ifdef HAVE_SYNC_BUILTINS
609+ /* Number of single stmts encountered. */
610+ unsigned long single_count;
611+#endif
612
613 /* For GFS_RUNTIME loops that resolved to GFS_STATIC, this is the
614 trip number through the loop. So first time a particular loop
615@@ -163,41 +191,53 @@ struct gomp_team_state
616
617 struct gomp_team
618 {
619- /* This lock protects access to the following work shares data structures. */
620- gomp_mutex_t work_share_lock;
621-
622- /* This is a dynamically sized array containing pointers to the control
623- structs for all "live" work share constructs. Here "live" means that
624- the construct has been encountered by at least one thread, and not
625- completed by all threads. */
626- struct gomp_work_share **work_shares;
627-
628- /* The work_shares array is indexed by "generation & generation_mask".
629- The mask will be 2**N - 1, where 2**N is the size of the array. */
630- unsigned generation_mask;
631-
632- /* These two values define the bounds of the elements of the work_shares
633- array that are currently in use. */
634- unsigned oldest_live_gen;
635- unsigned num_live_gen;
636-
637 /* This is the number of threads in the current team. */
638 unsigned nthreads;
639
640+ /* This is number of gomp_work_share structs that have been allocated
641+ as a block last time. */
642+ unsigned work_share_chunk;
643+
644 /* This is the saved team state that applied to a master thread before
645 the current thread was created. */
646 struct gomp_team_state prev_ts;
647
648- /* This barrier is used for most synchronization of the team. */
649- gomp_barrier_t barrier;
650-
651 /* This semaphore should be used by the master thread instead of its
652 "native" semaphore in the thread structure. Required for nested
653 parallels, as the master is a member of two teams. */
654 gomp_sem_t master_release;
655
656- /* This array contains pointers to the release semaphore of the threads
657- in the team. */
658+ /* List of gomp_work_share structs chained through next_free fields.
659+ This is populated and taken off only by the first thread in the
660+ team encountering a new work sharing construct, in a critical
661+ section. */
662+ struct gomp_work_share *work_share_list_alloc;
663+
664+ /* List of gomp_work_share structs freed by free_work_share. New
665+ entries are atomically added to the start of the list, and
666+ alloc_work_share can safely only move all but the first entry
667+ to work_share_list alloc, as free_work_share can happen concurrently
668+ with alloc_work_share. */
669+ struct gomp_work_share *work_share_list_free;
670+
671+#ifdef HAVE_SYNC_BUILTINS
672+ /* Number of simple single regions encountered by threads in this
673+ team. */
674+ unsigned long single_count;
675+#else
676+ /* Mutex protecting addition of workshares to work_share_list_free. */
677+ gomp_mutex_t work_share_list_free_lock;
678+#endif
679+
680+ /* This barrier is used for most synchronization of the team. */
681+ gomp_barrier_t barrier;
682+
683+ /* Initial work shares, to avoid allocating any gomp_work_share
684+ structs in the common case. */
685+ struct gomp_work_share work_shares[8];
686+
687+ /* This is an array with pointers to the release semaphore
688+ of the threads in the team. */
689 gomp_sem_t *ordered_release[];
690 };
691
692@@ -242,6 +282,11 @@ extern bool gomp_dyn_var;
693 extern bool gomp_nest_var;
694 extern enum gomp_schedule_type gomp_run_sched_var;
695 extern unsigned long gomp_run_sched_chunk;
696+#ifndef HAVE_SYNC_BUILTINS
697+extern gomp_mutex_t gomp_remaining_threads_lock;
698+#endif
699+extern unsigned long long gomp_spin_count_var, gomp_throttled_spin_count_var;
700+extern unsigned long gomp_available_cpus, gomp_managed_threads;
701
702 /* The attributes to be used during thread creation. */
703 extern pthread_attr_t gomp_thread_attr;
704@@ -306,17 +351,27 @@ extern unsigned gomp_dynamic_max_threads
705
706 /* team.c */
707
708+extern struct gomp_team *gomp_new_team (unsigned);
709 extern void gomp_team_start (void (*) (void *), void *, unsigned,
710- struct gomp_work_share *);
711+ struct gomp_team *);
712 extern void gomp_team_end (void);
713
714 /* work.c */
715
716-extern struct gomp_work_share * gomp_new_work_share (bool, unsigned);
717+extern void gomp_init_work_share (struct gomp_work_share *, bool, unsigned);
718+extern void gomp_fini_work_share (struct gomp_work_share *);
719 extern bool gomp_work_share_start (bool);
720 extern void gomp_work_share_end (void);
721 extern void gomp_work_share_end_nowait (void);
722
723+static inline void
724+gomp_work_share_init_done (void)
725+{
726+ struct gomp_thread *thr = gomp_thread ();
727+ if (__builtin_expect (thr->ts.last_work_share != NULL, 1))
728+ gomp_ptrlock_set (&thr->ts.last_work_share->next_ws, thr->ts.work_share);
729+}
730+
731 #ifdef HAVE_ATTRIBUTE_VISIBILITY
732 # pragma GCC visibility pop
733 #endif
734--- libgomp/iter.c.jj 2008-03-26 14:48:34.000000000 +0100
735+++ libgomp/iter.c 2008-03-26 15:11:23.000000000 +0100
736@@ -1,4 +1,4 @@
737-/* Copyright (C) 2005 Free Software Foundation, Inc.
738+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
739 Contributed by Richard Henderson <rth@redhat.com>.
740
741 This file is part of the GNU OpenMP Library (libgomp).
742@@ -154,7 +154,7 @@ gomp_iter_dynamic_next_locked (long *pst
743 if (start == ws->end)
744 return false;
745
746- chunk = ws->chunk_size * ws->incr;
747+ chunk = ws->chunk_size;
748 left = ws->end - start;
749 if (ws->incr < 0)
750 {
751@@ -186,11 +186,38 @@ gomp_iter_dynamic_next (long *pstart, lo
752 struct gomp_work_share *ws = thr->ts.work_share;
753 long start, end, nend, chunk, incr;
754
755- start = ws->next;
756 end = ws->end;
757 incr = ws->incr;
758- chunk = ws->chunk_size * incr;
759+ chunk = ws->chunk_size;
760+
761+ if (__builtin_expect (ws->mode, 1))
762+ {
763+ long tmp = __sync_fetch_and_add (&ws->next, chunk);
764+ if (incr > 0)
765+ {
766+ if (tmp >= end)
767+ return false;
768+ nend = tmp + chunk;
769+ if (nend > end)
770+ nend = end;
771+ *pstart = tmp;
772+ *pend = nend;
773+ return true;
774+ }
775+ else
776+ {
777+ if (tmp <= end)
778+ return false;
779+ nend = tmp + chunk;
780+ if (nend < end)
781+ nend = end;
782+ *pstart = tmp;
783+ *pend = nend;
784+ return true;
785+ }
786+ }
787
788+ start = ws->next;
789 while (1)
790 {
791 long left = end - start;
792--- libgomp/work.c.jj 2007-12-07 14:41:01.000000000 +0100
793+++ libgomp/work.c 2008-03-27 12:21:51.000000000 +0100
794@@ -1,4 +1,4 @@
795-/* Copyright (C) 2005 Free Software Foundation, Inc.
796+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
797 Contributed by Richard Henderson <rth@redhat.com>.
798
799 This file is part of the GNU OpenMP Library (libgomp).
800@@ -29,39 +29,138 @@
801 of threads. */
802
803 #include "libgomp.h"
804+#include <stddef.h>
805 #include <stdlib.h>
806 #include <string.h>
807
808
809-/* Create a new work share structure. */
810+/* Allocate a new work share structure, preferably from current team's
811+ free gomp_work_share cache. */
812
813-struct gomp_work_share *
814-gomp_new_work_share (bool ordered, unsigned nthreads)
815+static struct gomp_work_share *
816+alloc_work_share (struct gomp_team *team)
817 {
818 struct gomp_work_share *ws;
819- size_t size;
820+ unsigned int i;
821
822- size = sizeof (*ws);
823- if (ordered)
824- size += nthreads * sizeof (ws->ordered_team_ids[0]);
825+ /* This is called in a critical section. */
826+ if (team->work_share_list_alloc != NULL)
827+ {
828+ ws = team->work_share_list_alloc;
829+ team->work_share_list_alloc = ws->next_free;
830+ return ws;
831+ }
832
833- ws = gomp_malloc_cleared (size);
834- gomp_mutex_init (&ws->lock);
835- ws->ordered_owner = -1;
836+#ifdef HAVE_SYNC_BUILTINS
837+ ws = team->work_share_list_free;
838+ /* We need atomic read from work_share_list_free,
839+ as free_work_share can be called concurrently. */
840+ __asm ("" : "+r" (ws));
841+
842+ if (ws && ws->next_free)
843+ {
844+ struct gomp_work_share *next = ws->next_free;
845+ ws->next_free = NULL;
846+ team->work_share_list_alloc = next->next_free;
847+ return next;
848+ }
849+#else
850+ gomp_mutex_lock (&team->work_share_list_free_lock);
851+ ws = team->work_share_list_free;
852+ if (ws)
853+ {
854+ team->work_share_list_alloc = ws->next_free;
855+ team->work_share_list_free = NULL;
856+ gomp_mutex_unlock (&team->work_share_list_free_lock);
857+ return ws;
858+ }
859+ gomp_mutex_unlock (&team->work_share_list_free_lock);
860+#endif
861
862+ team->work_share_chunk *= 2;
863+ ws = gomp_malloc (team->work_share_chunk * sizeof (struct gomp_work_share));
864+ ws->next_alloc = team->work_shares[0].next_alloc;
865+ team->work_shares[0].next_alloc = ws;
866+ team->work_share_list_alloc = &ws[1];
867+ for (i = 1; i < team->work_share_chunk - 1; i++)
868+ ws[i].next_free = &ws[i + 1];
869+ ws[i].next_free = NULL;
870 return ws;
871 }
872
873+/* Initialize an already allocated struct gomp_work_share.
874+ This shouldn't touch the next_alloc field. */
875+
876+void
877+gomp_init_work_share (struct gomp_work_share *ws, bool ordered,
878+ unsigned nthreads)
879+{
880+ gomp_mutex_init (&ws->lock);
881+ if (__builtin_expect (ordered, 0))
882+ {
883+#define INLINE_ORDERED_TEAM_IDS_CNT \
884+ ((sizeof (struct gomp_work_share) \
885+ - offsetof (struct gomp_work_share, inline_ordered_team_ids)) \
886+ / sizeof (((struct gomp_work_share *) 0)->inline_ordered_team_ids[0]))
887+
888+ if (nthreads > INLINE_ORDERED_TEAM_IDS_CNT)
889+ ws->ordered_team_ids
890+ = gomp_malloc (nthreads * sizeof (*ws->ordered_team_ids));
891+ else
892+ ws->ordered_team_ids = ws->inline_ordered_team_ids;
893+ memset (ws->ordered_team_ids, '\0',
894+ nthreads * sizeof (*ws->ordered_team_ids));
895+ ws->ordered_num_used = 0;
896+ ws->ordered_owner = -1;
897+ ws->ordered_cur = 0;
898+ }
899+ else
900+ ws->ordered_team_ids = NULL;
901+ gomp_ptrlock_init (&ws->next_ws, NULL);
902+ ws->threads_completed = 0;
903+}
904
905-/* Free a work share structure. */
906+/* Do any needed destruction of gomp_work_share fields before it
907+ is put back into free gomp_work_share cache or freed. */
908
909-static void
910-free_work_share (struct gomp_work_share *ws)
911+void
912+gomp_fini_work_share (struct gomp_work_share *ws)
913 {
914 gomp_mutex_destroy (&ws->lock);
915- free (ws);
916+ if (ws->ordered_team_ids != ws->inline_ordered_team_ids)
917+ free (ws->ordered_team_ids);
918+ gomp_ptrlock_destroy (&ws->next_ws);
919 }
920
921+/* Free a work share struct, if not orphaned, put it into current
922+ team's free gomp_work_share cache. */
923+
924+static inline void
925+free_work_share (struct gomp_team *team, struct gomp_work_share *ws)
926+{
927+ gomp_fini_work_share (ws);
928+ if (__builtin_expect (team == NULL, 0))
929+ free (ws);
930+ else
931+ {
932+ struct gomp_work_share *next_ws;
933+#ifdef HAVE_SYNC_BUILTINS
934+ do
935+ {
936+ next_ws = team->work_share_list_free;
937+ ws->next_free = next_ws;
938+ }
939+ while (!__sync_bool_compare_and_swap (&team->work_share_list_free,
940+ next_ws, ws));
941+#else
942+ gomp_mutex_lock (&team->work_share_list_free_lock);
943+ next_ws = team->work_share_list_free;
944+ ws->next_free = next_ws;
945+ team->work_share_list_free = ws;
946+ gomp_mutex_unlock (&team->work_share_list_free_lock);
947+#endif
948+ }
949+}
950
951 /* The current thread is ready to begin the next work sharing construct.
952 In all cases, thr->ts.work_share is updated to point to the new
953@@ -74,71 +173,34 @@ gomp_work_share_start (bool ordered)
954 struct gomp_thread *thr = gomp_thread ();
955 struct gomp_team *team = thr->ts.team;
956 struct gomp_work_share *ws;
957- unsigned ws_index, ws_gen;
958
959 /* Work sharing constructs can be orphaned. */
960 if (team == NULL)
961 {
962- ws = gomp_new_work_share (ordered, 1);
963+ ws = gomp_malloc (sizeof (*ws));
964+ gomp_init_work_share (ws, ordered, 1);
965 thr->ts.work_share = ws;
966- thr->ts.static_trip = 0;
967- gomp_mutex_lock (&ws->lock);
968- return true;
969+ return ws;
970 }
971
972- gomp_mutex_lock (&team->work_share_lock);
973-
974- /* This thread is beginning its next generation. */
975- ws_gen = ++thr->ts.work_share_generation;
976-
977- /* If this next generation is not newer than any other generation in
978- the team, then simply reference the existing construct. */
979- if (ws_gen - team->oldest_live_gen < team->num_live_gen)
980+ ws = thr->ts.work_share;
981+ thr->ts.last_work_share = ws;
982+ ws = gomp_ptrlock_get (&ws->next_ws);
983+ if (ws == NULL)
984 {
985- ws_index = ws_gen & team->generation_mask;
986- ws = team->work_shares[ws_index];
987+ /* This thread encountered a new ws first. */
988+ struct gomp_work_share *ws = alloc_work_share (team);
989+ gomp_init_work_share (ws, ordered, team->nthreads);
990 thr->ts.work_share = ws;
991- thr->ts.static_trip = 0;
992-
993- gomp_mutex_lock (&ws->lock);
994- gomp_mutex_unlock (&team->work_share_lock);
995-
996- return false;
997+ return true;
998 }
999-
1000- /* Resize the work shares queue if we've run out of space. */
1001- if (team->num_live_gen++ == team->generation_mask)
1002+ else
1003 {
1004- team->work_shares = gomp_realloc (team->work_shares,
1005- 2 * team->num_live_gen
1006- * sizeof (*team->work_shares));
1007-
1008- /* Unless oldest_live_gen is zero, the sequence of live elements
1009- wraps around the end of the array. If we do nothing, we break
1010- lookup of the existing elements. Fix that by unwrapping the
1011- data from the front to the end. */
1012- if (team->oldest_live_gen > 0)
1013- memcpy (team->work_shares + team->num_live_gen,
1014- team->work_shares,
1015- (team->oldest_live_gen & team->generation_mask)
1016- * sizeof (*team->work_shares));
1017-
1018- team->generation_mask = team->generation_mask * 2 + 1;
1019- }
1020-
1021- ws_index = ws_gen & team->generation_mask;
1022- ws = gomp_new_work_share (ordered, team->nthreads);
1023- thr->ts.work_share = ws;
1024- thr->ts.static_trip = 0;
1025- team->work_shares[ws_index] = ws;
1026-
1027- gomp_mutex_lock (&ws->lock);
1028- gomp_mutex_unlock (&team->work_share_lock);
1029-
1030- return true;
1031+ thr->ts.work_share = ws;
1032+ return false;
1033+ }
1034 }
1035
1036-
1037 /* The current thread is done with its current work sharing construct.
1038 This version does imply a barrier at the end of the work-share. */
1039
1040@@ -147,36 +209,28 @@ gomp_work_share_end (void)
1041 {
1042 struct gomp_thread *thr = gomp_thread ();
1043 struct gomp_team *team = thr->ts.team;
1044- struct gomp_work_share *ws = thr->ts.work_share;
1045- bool last;
1046-
1047- thr->ts.work_share = NULL;
1048+ gomp_barrier_state_t bstate;
1049
1050 /* Work sharing constructs can be orphaned. */
1051 if (team == NULL)
1052 {
1053- free_work_share (ws);
1054+ free_work_share (NULL, thr->ts.work_share);
1055+ thr->ts.work_share = NULL;
1056 return;
1057 }
1058
1059- last = gomp_barrier_wait_start (&team->barrier);
1060+ bstate = gomp_barrier_wait_start (&team->barrier);
1061
1062- if (last)
1063+ if (gomp_barrier_last_thread (bstate))
1064 {
1065- unsigned ws_index;
1066-
1067- ws_index = thr->ts.work_share_generation & team->generation_mask;
1068- team->work_shares[ws_index] = NULL;
1069- team->oldest_live_gen++;
1070- team->num_live_gen = 0;
1071-
1072- free_work_share (ws);
1073+ if (__builtin_expect (thr->ts.last_work_share != NULL, 1))
1074+ free_work_share (team, thr->ts.last_work_share);
1075 }
1076
1077- gomp_barrier_wait_end (&team->barrier, last);
1078+ gomp_barrier_wait_end (&team->barrier, bstate);
1079+ thr->ts.last_work_share = NULL;
1080 }
1081
1082-
1083 /* The current thread is done with its current work sharing construct.
1084 This version does NOT imply a barrier at the end of the work-share. */
1085
1086@@ -188,15 +242,17 @@ gomp_work_share_end_nowait (void)
1087 struct gomp_work_share *ws = thr->ts.work_share;
1088 unsigned completed;
1089
1090- thr->ts.work_share = NULL;
1091-
1092 /* Work sharing constructs can be orphaned. */
1093 if (team == NULL)
1094 {
1095- free_work_share (ws);
1096+ free_work_share (NULL, ws);
1097+ thr->ts.work_share = NULL;
1098 return;
1099 }
1100
1101+ if (__builtin_expect (thr->ts.last_work_share == NULL, 0))
1102+ return;
1103+
1104 #ifdef HAVE_SYNC_BUILTINS
1105 completed = __sync_add_and_fetch (&ws->threads_completed, 1);
1106 #else
1107@@ -206,18 +262,6 @@ gomp_work_share_end_nowait (void)
1108 #endif
1109
1110 if (completed == team->nthreads)
1111- {
1112- unsigned ws_index;
1113-
1114- gomp_mutex_lock (&team->work_share_lock);
1115-
1116- ws_index = thr->ts.work_share_generation & team->generation_mask;
1117- team->work_shares[ws_index] = NULL;
1118- team->oldest_live_gen++;
1119- team->num_live_gen--;
1120-
1121- gomp_mutex_unlock (&team->work_share_lock);
1122-
1123- free_work_share (ws);
1124- }
1125+ free_work_share (team, thr->ts.last_work_share);
1126+ thr->ts.last_work_share = NULL;
1127 }
1128--- libgomp/single.c.jj 2007-12-07 14:41:01.000000000 +0100
1129+++ libgomp/single.c 2008-03-26 15:11:32.000000000 +0100
1130@@ -1,4 +1,4 @@
1131-/* Copyright (C) 2005 Free Software Foundation, Inc.
1132+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
1133 Contributed by Richard Henderson <rth@redhat.com>.
1134
1135 This file is part of the GNU OpenMP Library (libgomp).
1136@@ -37,10 +37,24 @@
1137 bool
1138 GOMP_single_start (void)
1139 {
1140+#ifdef HAVE_SYNC_BUILTINS
1141+ struct gomp_thread *thr = gomp_thread ();
1142+ struct gomp_team *team = thr->ts.team;
1143+ unsigned long single_count;
1144+
1145+ if (__builtin_expect (team == NULL, 0))
1146+ return true;
1147+
1148+ single_count = thr->ts.single_count++;
1149+ return __sync_bool_compare_and_swap (&team->single_count, single_count,
1150+ single_count + 1L);
1151+#else
1152 bool ret = gomp_work_share_start (false);
1153- gomp_mutex_unlock (&gomp_thread ()->ts.work_share->lock);
1154+ if (ret)
1155+ gomp_work_share_init_done ();
1156 gomp_work_share_end_nowait ();
1157 return ret;
1158+#endif
1159 }
1160
1161 /* This routine is called when first encountering a SINGLE construct that
1162@@ -57,10 +71,12 @@ GOMP_single_copy_start (void)
1163 void *ret;
1164
1165 first = gomp_work_share_start (false);
1166- gomp_mutex_unlock (&thr->ts.work_share->lock);
1167
1168 if (first)
1169- ret = NULL;
1170+ {
1171+ gomp_work_share_init_done ();
1172+ ret = NULL;
1173+ }
1174 else
1175 {
1176 gomp_barrier_wait (&thr->ts.team->barrier);
1177--- libgomp/loop.c.jj 2007-12-07 14:41:01.000000000 +0100
1178+++ libgomp/loop.c 2008-03-26 18:47:04.000000000 +0100
1179@@ -27,8 +27,9 @@
1180
1181 /* This file handles the LOOP (FOR/DO) construct. */
1182
1183-#include "libgomp.h"
1184+#include <limits.h>
1185 #include <stdlib.h>
1186+#include "libgomp.h"
1187
1188
1189 /* Initialize the given work share construct from the given arguments. */
1190@@ -44,6 +45,39 @@ gomp_loop_init (struct gomp_work_share *
1191 ? start : end;
1192 ws->incr = incr;
1193 ws->next = start;
1194+ if (sched == GFS_DYNAMIC)
1195+ {
1196+ ws->chunk_size *= incr;
1197+
1198+#ifdef HAVE_SYNC_BUILTINS
1199+ {
1200+ /* For dynamic scheduling prepare things to make each iteration
1201+ faster. */
1202+ struct gomp_thread *thr = gomp_thread ();
1203+ struct gomp_team *team = thr->ts.team;
1204+ long nthreads = team ? team->nthreads : 1;
1205+
1206+ if (__builtin_expect (incr > 0, 1))
1207+ {
1208+ /* Cheap overflow protection. */
1209+ if (__builtin_expect ((nthreads | ws->chunk_size)
1210+ >= 1UL << (sizeof (long)
1211+ * __CHAR_BIT__ / 2 - 1), 0))
1212+ ws->mode = 0;
1213+ else
1214+ ws->mode = ws->end < (LONG_MAX
1215+ - (nthreads + 1) * ws->chunk_size);
1216+ }
1217+ /* Cheap overflow protection. */
1218+ else if (__builtin_expect ((nthreads | -ws->chunk_size)
1219+ >= 1UL << (sizeof (long)
1220+ * __CHAR_BIT__ / 2 - 1), 0))
1221+ ws->mode = 0;
1222+ else
1223+ ws->mode = ws->end > (nthreads + 1) * -ws->chunk_size - LONG_MAX;
1224+ }
1225+#endif
1226+ }
1227 }
1228
1229 /* The *_start routines are called when first encountering a loop construct
1230@@ -68,10 +102,13 @@ gomp_loop_static_start (long start, long
1231 {
1232 struct gomp_thread *thr = gomp_thread ();
1233
1234+ thr->ts.static_trip = 0;
1235 if (gomp_work_share_start (false))
1236- gomp_loop_init (thr->ts.work_share, start, end, incr,
1237- GFS_STATIC, chunk_size);
1238- gomp_mutex_unlock (&thr->ts.work_share->lock);
1239+ {
1240+ gomp_loop_init (thr->ts.work_share, start, end, incr,
1241+ GFS_STATIC, chunk_size);
1242+ gomp_work_share_init_done ();
1243+ }
1244
1245 return !gomp_iter_static_next (istart, iend);
1246 }
1247@@ -84,13 +121,16 @@ gomp_loop_dynamic_start (long start, lon
1248 bool ret;
1249
1250 if (gomp_work_share_start (false))
1251- gomp_loop_init (thr->ts.work_share, start, end, incr,
1252- GFS_DYNAMIC, chunk_size);
1253+ {
1254+ gomp_loop_init (thr->ts.work_share, start, end, incr,
1255+ GFS_DYNAMIC, chunk_size);
1256+ gomp_work_share_init_done ();
1257+ }
1258
1259 #ifdef HAVE_SYNC_BUILTINS
1260- gomp_mutex_unlock (&thr->ts.work_share->lock);
1261 ret = gomp_iter_dynamic_next (istart, iend);
1262 #else
1263+ gomp_mutex_lock (&thr->ts.work_share->lock);
1264 ret = gomp_iter_dynamic_next_locked (istart, iend);
1265 gomp_mutex_unlock (&thr->ts.work_share->lock);
1266 #endif
1267@@ -106,13 +146,16 @@ gomp_loop_guided_start (long start, long
1268 bool ret;
1269
1270 if (gomp_work_share_start (false))
1271- gomp_loop_init (thr->ts.work_share, start, end, incr,
1272- GFS_GUIDED, chunk_size);
1273+ {
1274+ gomp_loop_init (thr->ts.work_share, start, end, incr,
1275+ GFS_GUIDED, chunk_size);
1276+ gomp_work_share_init_done ();
1277+ }
1278
1279 #ifdef HAVE_SYNC_BUILTINS
1280- gomp_mutex_unlock (&thr->ts.work_share->lock);
1281 ret = gomp_iter_guided_next (istart, iend);
1282 #else
1283+ gomp_mutex_lock (&thr->ts.work_share->lock);
1284 ret = gomp_iter_guided_next_locked (istart, iend);
1285 gomp_mutex_unlock (&thr->ts.work_share->lock);
1286 #endif
1287@@ -149,13 +192,14 @@ gomp_loop_ordered_static_start (long sta
1288 {
1289 struct gomp_thread *thr = gomp_thread ();
1290
1291+ thr->ts.static_trip = 0;
1292 if (gomp_work_share_start (true))
1293 {
1294 gomp_loop_init (thr->ts.work_share, start, end, incr,
1295 GFS_STATIC, chunk_size);
1296 gomp_ordered_static_init ();
1297+ gomp_work_share_init_done ();
1298 }
1299- gomp_mutex_unlock (&thr->ts.work_share->lock);
1300
1301 return !gomp_iter_static_next (istart, iend);
1302 }
1303@@ -168,8 +212,14 @@ gomp_loop_ordered_dynamic_start (long st
1304 bool ret;
1305
1306 if (gomp_work_share_start (true))
1307- gomp_loop_init (thr->ts.work_share, start, end, incr,
1308- GFS_DYNAMIC, chunk_size);
1309+ {
1310+ gomp_loop_init (thr->ts.work_share, start, end, incr,
1311+ GFS_DYNAMIC, chunk_size);
1312+ gomp_mutex_lock (&thr->ts.work_share->lock);
1313+ gomp_work_share_init_done ();
1314+ }
1315+ else
1316+ gomp_mutex_lock (&thr->ts.work_share->lock);
1317
1318 ret = gomp_iter_dynamic_next_locked (istart, iend);
1319 if (ret)
1320@@ -187,8 +237,14 @@ gomp_loop_ordered_guided_start (long sta
1321 bool ret;
1322
1323 if (gomp_work_share_start (true))
1324- gomp_loop_init (thr->ts.work_share, start, end, incr,
1325- GFS_GUIDED, chunk_size);
1326+ {
1327+ gomp_loop_init (thr->ts.work_share, start, end, incr,
1328+ GFS_GUIDED, chunk_size);
1329+ gomp_mutex_lock (&thr->ts.work_share->lock);
1330+ gomp_work_share_init_done ();
1331+ }
1332+ else
1333+ gomp_mutex_lock (&thr->ts.work_share->lock);
1334
1335 ret = gomp_iter_guided_next_locked (istart, iend);
1336 if (ret)
1337@@ -375,12 +431,12 @@ gomp_parallel_loop_start (void (*fn) (vo
1338 long incr, enum gomp_schedule_type sched,
1339 long chunk_size)
1340 {
1341- struct gomp_work_share *ws;
1342+ struct gomp_team *team;
1343
1344 num_threads = gomp_resolve_num_threads (num_threads);
1345- ws = gomp_new_work_share (false, num_threads);
1346- gomp_loop_init (ws, start, end, incr, sched, chunk_size);
1347- gomp_team_start (fn, data, num_threads, ws);
1348+ team = gomp_new_team (num_threads);
1349+ gomp_loop_init (&team->work_shares[0], start, end, incr, sched, chunk_size);
1350+ gomp_team_start (fn, data, num_threads, team);
1351 }
1352
1353 void
1354--- libgomp/Makefile.in.jj 2008-01-10 20:53:47.000000000 +0100
1355+++ libgomp/Makefile.in 2008-03-26 18:51:01.000000000 +0100
1356@@ -83,7 +83,7 @@ libgomp_la_LIBADD =
1357 am_libgomp_la_OBJECTS = alloc.lo barrier.lo critical.lo env.lo \
1358 error.lo iter.lo loop.lo ordered.lo parallel.lo sections.lo \
1359 single.lo team.lo work.lo lock.lo mutex.lo proc.lo sem.lo \
1360- bar.lo time.lo fortran.lo affinity.lo
1361+ bar.lo ptrlock.lo time.lo fortran.lo affinity.lo
1362 libgomp_la_OBJECTS = $(am_libgomp_la_OBJECTS)
1363 DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
1364 depcomp = $(SHELL) $(top_srcdir)/../depcomp
1365@@ -292,7 +292,7 @@ libgomp_version_info = -version-info $(l
1366 libgomp_la_LDFLAGS = $(libgomp_version_info) $(libgomp_version_script)
1367 libgomp_la_SOURCES = alloc.c barrier.c critical.c env.c error.c iter.c \
1368 loop.c ordered.c parallel.c sections.c single.c team.c work.c \
1369- lock.c mutex.c proc.c sem.c bar.c time.c fortran.c affinity.c
1370+ lock.c mutex.c proc.c sem.c bar.c ptrlock.c time.c fortran.c affinity.c
1371
1372 nodist_noinst_HEADERS = libgomp_f.h
1373 nodist_libsubinclude_HEADERS = omp.h
1374@@ -434,6 +434,7 @@ distclean-compile:
1375 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ordered.Plo@am__quote@
1376 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parallel.Plo@am__quote@
1377 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proc.Plo@am__quote@
1378+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptrlock.Plo@am__quote@
1379 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sections.Plo@am__quote@
1380 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sem.Plo@am__quote@
1381 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/single.Plo@am__quote@
1382--- libgomp/testsuite/libgomp.c/loop-4.c.jj 2008-03-26 18:47:04.000000000 +0100
1383+++ libgomp/testsuite/libgomp.c/loop-4.c 2008-03-26 18:47:04.000000000 +0100
1384@@ -0,0 +1,28 @@
1385+/* { dg-do run } */
1386+
1387+extern void abort (void);
1388+
1389+int
1390+main (void)
1391+{
1392+ int e = 0;
1393+#pragma omp parallel num_threads (4) reduction(+:e)
1394+ {
1395+ long i;
1396+ #pragma omp for schedule(dynamic,1)
1397+ for (i = __LONG_MAX__ - 30001; i <= __LONG_MAX__ - 10001; i += 10000)
1398+ if (i != __LONG_MAX__ - 30001
1399+ && i != __LONG_MAX__ - 20001
1400+ && i != __LONG_MAX__ - 10001)
1401+ e = 1;
1402+ #pragma omp for schedule(dynamic,1)
1403+ for (i = -__LONG_MAX__ + 30000; i >= -__LONG_MAX__ + 10000; i -= 10000)
1404+ if (i != -__LONG_MAX__ + 30000
1405+ && i != -__LONG_MAX__ + 20000
1406+ && i != -__LONG_MAX__ + 10000)
1407+ e = 1;
1408+ }
1409+ if (e)
1410+ abort ();
1411+ return 0;
1412+}
1413--- libgomp/Makefile.am.jj 2007-12-07 14:41:01.000000000 +0100
1414+++ libgomp/Makefile.am 2008-03-26 15:15:19.000000000 +0100
1415@@ -31,7 +31,7 @@ libgomp_la_LDFLAGS = $(libgomp_version_i
1416
1417 libgomp_la_SOURCES = alloc.c barrier.c critical.c env.c error.c iter.c \
1418 loop.c ordered.c parallel.c sections.c single.c team.c work.c \
1419- lock.c mutex.c proc.c sem.c bar.c time.c fortran.c affinity.c
1420+ lock.c mutex.c proc.c sem.c bar.c ptrlock.c time.c fortran.c affinity.c
1421
1422 nodist_noinst_HEADERS = libgomp_f.h
1423 nodist_libsubinclude_HEADERS = omp.h
1424--- libgomp/team.c.jj 2007-12-07 14:41:01.000000000 +0100
1425+++ libgomp/team.c 2008-03-27 12:22:26.000000000 +0100
1426@@ -94,7 +94,7 @@ gomp_thread_start (void *xdata)
1427 {
1428 gomp_barrier_wait (&thr->ts.team->barrier);
1429 local_fn (local_data);
1430- gomp_barrier_wait (&thr->ts.team->barrier);
1431+ gomp_barrier_wait_last (&thr->ts.team->barrier);
1432 }
1433 else
1434 {
1435@@ -114,11 +114,10 @@ gomp_thread_start (void *xdata)
1436 thr->data = NULL;
1437 thr->ts.team = NULL;
1438 thr->ts.work_share = NULL;
1439+ thr->ts.last_work_share = NULL;
1440 thr->ts.team_id = 0;
1441- thr->ts.work_share_generation = 0;
1442- thr->ts.static_trip = 0;
1443
1444- gomp_barrier_wait (&team->barrier);
1445+ gomp_barrier_wait_last (&team->barrier);
1446 gomp_barrier_wait (&gomp_threads_dock);
1447
1448 local_fn = thr->fn;
1449@@ -133,21 +132,29 @@ gomp_thread_start (void *xdata)
1450
1451 /* Create a new team data structure. */
1452
1453-static struct gomp_team *
1454-new_team (unsigned nthreads, struct gomp_work_share *work_share)
1455+struct gomp_team *
1456+gomp_new_team (unsigned nthreads)
1457 {
1458 struct gomp_team *team;
1459 size_t size;
1460+ int i;
1461
1462 size = sizeof (*team) + nthreads * sizeof (team->ordered_release[0]);
1463 team = gomp_malloc (size);
1464- gomp_mutex_init (&team->work_share_lock);
1465
1466- team->work_shares = gomp_malloc (4 * sizeof (struct gomp_work_share *));
1467- team->generation_mask = 3;
1468- team->oldest_live_gen = work_share == NULL;
1469- team->num_live_gen = work_share != NULL;
1470- team->work_shares[0] = work_share;
1471+ team->work_share_chunk = 8;
1472+#ifdef HAVE_SYNC_BUILTINS
1473+ team->single_count = 0;
1474+#else
1475+ gomp_mutex_init (&team->work_share_list_free_lock);
1476+#endif
1477+ gomp_init_work_share (&team->work_shares[0], false, nthreads);
1478+ team->work_shares[0].next_alloc = NULL;
1479+ team->work_share_list_free = NULL;
1480+ team->work_share_list_alloc = &team->work_shares[1];
1481+ for (i = 1; i < 7; i++)
1482+ team->work_shares[i].next_free = &team->work_shares[i + 1];
1483+ team->work_shares[i].next_free = NULL;
1484
1485 team->nthreads = nthreads;
1486 gomp_barrier_init (&team->barrier, nthreads);
1487@@ -164,10 +171,22 @@ new_team (unsigned nthreads, struct gomp
1488 static void
1489 free_team (struct gomp_team *team)
1490 {
1491- free (team->work_shares);
1492- gomp_mutex_destroy (&team->work_share_lock);
1493+ if (__builtin_expect (team->work_shares[0].next_alloc != NULL, 0))
1494+ {
1495+ struct gomp_work_share *ws = team->work_shares[0].next_alloc;
1496+ do
1497+ {
1498+ struct gomp_work_share *next_ws = ws->next_alloc;
1499+ free (ws);
1500+ ws = next_ws;
1501+ }
1502+ while (ws != NULL);
1503+ }
1504 gomp_barrier_destroy (&team->barrier);
1505 gomp_sem_destroy (&team->master_release);
1506+#ifndef HAVE_SYNC_BUILTINS
1507+ gomp_mutex_destroy (&team->work_share_list_free_lock);
1508+#endif
1509 free (team);
1510 }
1511
1512@@ -176,11 +195,10 @@ free_team (struct gomp_team *team)
1513
1514 void
1515 gomp_team_start (void (*fn) (void *), void *data, unsigned nthreads,
1516- struct gomp_work_share *work_share)
1517+ struct gomp_team *team)
1518 {
1519 struct gomp_thread_start_data *start_data;
1520 struct gomp_thread *thr, *nthr;
1521- struct gomp_team *team;
1522 bool nested;
1523 unsigned i, n, old_threads_used = 0;
1524 pthread_attr_t thread_attr, *attr;
1525@@ -188,17 +206,18 @@ gomp_team_start (void (*fn) (void *), vo
1526 thr = gomp_thread ();
1527 nested = thr->ts.team != NULL;
1528
1529- team = new_team (nthreads, work_share);
1530-
1531 /* Always save the previous state, even if this isn't a nested team.
1532 In particular, we should save any work share state from an outer
1533 orphaned work share construct. */
1534 team->prev_ts = thr->ts;
1535
1536 thr->ts.team = team;
1537- thr->ts.work_share = work_share;
1538 thr->ts.team_id = 0;
1539- thr->ts.work_share_generation = 0;
1540+ thr->ts.work_share = &team->work_shares[0];
1541+ thr->ts.last_work_share = NULL;
1542+#ifdef HAVE_SYNC_BUILTINS
1543+ thr->ts.single_count = 0;
1544+#endif
1545 thr->ts.static_trip = 0;
1546
1547 if (nthreads == 1)
1548@@ -241,9 +260,12 @@ gomp_team_start (void (*fn) (void *), vo
1549 {
1550 nthr = gomp_threads[i];
1551 nthr->ts.team = team;
1552- nthr->ts.work_share = work_share;
1553+ nthr->ts.work_share = &team->work_shares[0];
1554+ nthr->ts.last_work_share = NULL;
1555 nthr->ts.team_id = i;
1556- nthr->ts.work_share_generation = 0;
1557+#ifdef HAVE_SYNC_BUILTINS
1558+ nthr->ts.single_count = 0;
1559+#endif
1560 nthr->ts.static_trip = 0;
1561 nthr->fn = fn;
1562 nthr->data = data;
1563@@ -266,8 +288,24 @@ gomp_team_start (void (*fn) (void *), vo
1564 }
1565 }
1566
1567+ if (__builtin_expect (nthreads > old_threads_used, 0))
1568+ {
1569+ long diff = (long) nthreads - (long) old_threads_used;
1570+
1571+ if (old_threads_used == 0)
1572+ --diff;
1573+
1574+#ifdef HAVE_SYNC_BUILTINS
1575+ __sync_fetch_and_add (&gomp_managed_threads, diff);
1576+#else
1577+ gomp_mutex_lock (&gomp_remaining_threads_lock);
1578+ gomp_managed_threads += diff;
1579+ gomp_mutex_unlock (&gomp_remaining_threads_lock);
1580+#endif
1581+ }
1582+
1583 attr = &gomp_thread_attr;
1584- if (gomp_cpu_affinity != NULL)
1585+ if (__builtin_expect (gomp_cpu_affinity != NULL, 0))
1586 {
1587 size_t stacksize;
1588 pthread_attr_init (&thread_attr);
1589@@ -287,9 +325,12 @@ gomp_team_start (void (*fn) (void *), vo
1590 int err;
1591
1592 start_data->ts.team = team;
1593- start_data->ts.work_share = work_share;
1594+ start_data->ts.work_share = &team->work_shares[0];
1595+ start_data->ts.last_work_share = NULL;
1596 start_data->ts.team_id = i;
1597- start_data->ts.work_share_generation = 0;
1598+#ifdef HAVE_SYNC_BUILTINS
1599+ start_data->ts.single_count = 0;
1600+#endif
1601 start_data->ts.static_trip = 0;
1602 start_data->fn = fn;
1603 start_data->fn_data = data;
1604@@ -303,7 +344,7 @@ gomp_team_start (void (*fn) (void *), vo
1605 gomp_fatal ("Thread creation failed: %s", strerror (err));
1606 }
1607
1608- if (gomp_cpu_affinity != NULL)
1609+ if (__builtin_expect (gomp_cpu_affinity != NULL, 0))
1610 pthread_attr_destroy (&thread_attr);
1611
1612 do_release:
1613@@ -313,8 +354,20 @@ gomp_team_start (void (*fn) (void *), vo
1614 that should arrive back at the end of this team. The extra
1615 threads should be exiting. Note that we arrange for this test
1616 to never be true for nested teams. */
1617- if (nthreads < old_threads_used)
1618- gomp_barrier_reinit (&gomp_threads_dock, nthreads);
1619+ if (__builtin_expect (nthreads < old_threads_used, 0))
1620+ {
1621+ long diff = (long) nthreads - (long) old_threads_used;
1622+
1623+ gomp_barrier_reinit (&gomp_threads_dock, nthreads);
1624+
1625+#ifdef HAVE_SYNC_BUILTINS
1626+ __sync_fetch_and_add (&gomp_managed_threads, diff);
1627+#else
1628+ gomp_mutex_lock (&gomp_remaining_threads_lock);
1629+ gomp_managed_threads += diff;
1630+ gomp_mutex_unlock (&gomp_remaining_threads_lock);
1631+#endif
1632+ }
1633 }
1634
1635
1636@@ -329,8 +382,21 @@ gomp_team_end (void)
1637
1638 gomp_barrier_wait (&team->barrier);
1639
1640+ gomp_fini_work_share (thr->ts.work_share);
1641+
1642 thr->ts = team->prev_ts;
1643
1644+ if (__builtin_expect (thr->ts.team != NULL, 0))
1645+ {
1646+#ifdef HAVE_SYNC_BUILTINS
1647+ __sync_fetch_and_add (&gomp_managed_threads, 1L - team->nthreads);
1648+#else
1649+ gomp_mutex_lock (&gomp_remaining_threads_lock);
1650+ gomp_managed_threads -= team->nthreads - 1L;
1651+ gomp_mutex_unlock (&gomp_remaining_threads_lock);
1652+#endif
1653+ }
1654+
1655 free_team (team);
1656 }
1657
1658--- libgomp/config/posix/bar.h.jj 2007-12-07 14:41:01.000000000 +0100
1659+++ libgomp/config/posix/bar.h 2008-03-26 15:11:32.000000000 +0100
1660@@ -1,4 +1,4 @@
1661-/* Copyright (C) 2005 Free Software Foundation, Inc.
1662+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
1663 Contributed by Richard Henderson <rth@redhat.com>.
1664
1665 This file is part of the GNU OpenMP Library (libgomp).
1666@@ -46,18 +46,32 @@ typedef struct
1667 unsigned total;
1668 unsigned arrived;
1669 } gomp_barrier_t;
1670+typedef bool gomp_barrier_state_t;
1671
1672 extern void gomp_barrier_init (gomp_barrier_t *, unsigned);
1673 extern void gomp_barrier_reinit (gomp_barrier_t *, unsigned);
1674 extern void gomp_barrier_destroy (gomp_barrier_t *);
1675
1676 extern void gomp_barrier_wait (gomp_barrier_t *);
1677-extern void gomp_barrier_wait_end (gomp_barrier_t *, bool);
1678+extern void gomp_barrier_wait_end (gomp_barrier_t *, gomp_barrier_state_t);
1679
1680-static inline bool gomp_barrier_wait_start (gomp_barrier_t *bar)
1681+static inline gomp_barrier_state_t
1682+gomp_barrier_wait_start (gomp_barrier_t *bar)
1683 {
1684 gomp_mutex_lock (&bar->mutex1);
1685 return ++bar->arrived == bar->total;
1686 }
1687
1688+static inline bool
1689+gomp_barrier_last_thread (gomp_barrier_state_t state)
1690+{
1691+ return state;
1692+}
1693+
1694+static inline void
1695+gomp_barrier_wait_last (gomp_barrier_t *bar)
1696+{
1697+ gomp_barrier_wait (bar);
1698+}
1699+
1700 #endif /* GOMP_BARRIER_H */
1701--- libgomp/config/posix/ptrlock.h.jj 2008-03-26 15:11:32.000000000 +0100
1702+++ libgomp/config/posix/ptrlock.h 2008-03-26 15:11:32.000000000 +0100
1703@@ -0,0 +1,69 @@
1704+/* Copyright (C) 2008 Free Software Foundation, Inc.
1705+ Contributed by Jakub Jelinek <jakub@redhat.com>.
1706+
1707+ This file is part of the GNU OpenMP Library (libgomp).
1708+
1709+ Libgomp is free software; you can redistribute it and/or modify it
1710+ under the terms of the GNU Lesser General Public License as published by
1711+ the Free Software Foundation; either version 2.1 of the License, or
1712+ (at your option) any later version.
1713+
1714+ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
1715+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1716+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
1717+ more details.
1718+
1719+ You should have received a copy of the GNU Lesser General Public License
1720+ along with libgomp; see the file COPYING.LIB. If not, write to the
1721+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
1722+ MA 02110-1301, USA. */
1723+
1724+/* As a special exception, if you link this library with other files, some
1725+ of which are compiled with GCC, to produce an executable, this library
1726+ does not by itself cause the resulting executable to be covered by the
1727+ GNU General Public License. This exception does not however invalidate
1728+ any other reasons why the executable file might be covered by the GNU
1729+ General Public License. */
1730+
1731+/* This is a Linux specific implementation of a mutex synchronization
1732+ mechanism for libgomp. This type is private to the library. This
1733+ implementation uses atomic instructions and the futex syscall. */
1734+
1735+#ifndef GOMP_PTRLOCK_H
1736+#define GOMP_PTRLOCK_H 1
1737+
1738+typedef struct { void *ptr; gomp_mutex_t lock; } gomp_ptrlock_t;
1739+
1740+static inline void gomp_ptrlock_init (gomp_ptrlock_t *ptrlock, void *ptr)
1741+{
1742+ ptrlock->ptr = ptr;
1743+ gomp_mutex_init (&ptrlock->lock);
1744+}
1745+
1746+static inline void *gomp_ptrlock_get (gomp_ptrlock_t *ptrlock)
1747+{
1748+ if (ptrlock->ptr != NULL)
1749+ return ptrlock->ptr;
1750+
1751+ gomp_mutex_lock (&ptrlock->lock);
1752+ if (ptrlock->ptr != NULL)
1753+ {
1754+ gomp_mutex_unlock (&ptrlock->lock);
1755+ return ptrlock->ptr;
1756+ }
1757+
1758+ return NULL;
1759+}
1760+
1761+static inline void gomp_ptrlock_set (gomp_ptrlock_t *ptrlock, void *ptr)
1762+{
1763+ ptrlock->ptr = ptr;
1764+ gomp_mutex_unlock (&ptrlock->lock);
1765+}
1766+
1767+static inline void gomp_ptrlock_destroy (gomp_ptrlock_t *ptrlock)
1768+{
1769+ gomp_mutex_destroy (&ptrlock->lock);
1770+}
1771+
1772+#endif /* GOMP_PTRLOCK_H */
1773--- libgomp/config/posix/ptrlock.c.jj 2008-03-26 15:11:32.000000000 +0100
1774+++ libgomp/config/posix/ptrlock.c 2008-03-26 15:11:32.000000000 +0100
1775@@ -0,0 +1 @@
1776+/* Everything is in the header. */
1777--- libgomp/config/posix/bar.c.jj 2007-12-07 14:41:01.000000000 +0100
1778+++ libgomp/config/posix/bar.c 2008-03-26 15:11:32.000000000 +0100
1779@@ -1,4 +1,4 @@
1780-/* Copyright (C) 2005 Free Software Foundation, Inc.
1781+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
1782 Contributed by Richard Henderson <rth@redhat.com>.
1783
1784 This file is part of the GNU OpenMP Library (libgomp).
1785@@ -70,7 +70,7 @@ gomp_barrier_reinit (gomp_barrier_t *bar
1786 }
1787
1788 void
1789-gomp_barrier_wait_end (gomp_barrier_t *bar, bool last)
1790+gomp_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t last)
1791 {
1792 unsigned int n;
1793
1794--- libgomp/config/linux/alpha/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
1795+++ libgomp/config/linux/alpha/futex.h 2008-03-26 15:11:32.000000000 +0100
1796@@ -1,4 +1,4 @@
1797-/* Copyright (C) 2005 Free Software Foundation, Inc.
1798+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
1799 Contributed by Richard Henderson <rth@redhat.com>.
1800
1801 This file is part of the GNU OpenMP Library (libgomp).
1802@@ -30,8 +30,6 @@
1803 #ifndef SYS_futex
1804 #define SYS_futex 394
1805 #endif
1806-#define FUTEX_WAIT 0
1807-#define FUTEX_WAKE 1
1808
1809
1810 static inline void
1811@@ -45,7 +43,7 @@ futex_wait (int *addr, int val)
1812
1813 sc_0 = SYS_futex;
1814 sc_16 = (long) addr;
1815- sc_17 = FUTEX_WAIT;
1816+ sc_17 = gomp_futex_wait;
1817 sc_18 = val;
1818 sc_19 = 0;
1819 __asm volatile ("callsys"
1820@@ -53,6 +51,20 @@ futex_wait (int *addr, int val)
1821 : "0"(sc_0), "r" (sc_16), "r"(sc_17), "r"(sc_18), "1"(sc_19)
1822 : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
1823 "$22", "$23", "$24", "$25", "$27", "$28", "memory");
1824+ if (__builtin_expect (sc_19, 0) && sc_0 == ENOSYS)
1825+ {
1826+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
1827+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
1828+ sc_0 = SYS_futex;
1829+ sc_17 &= ~FUTEX_PRIVATE_FLAG;
1830+ sc_19 = 0;
1831+ __asm volatile ("callsys"
1832+ : "=r" (sc_0), "=r"(sc_19)
1833+ : "0"(sc_0), "r" (sc_16), "r"(sc_17), "r"(sc_18),
1834+ "1"(sc_19)
1835+ : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
1836+ "$22", "$23", "$24", "$25", "$27", "$28", "memory");
1837+ }
1838 }
1839
1840 static inline void
1841@@ -66,11 +78,35 @@ futex_wake (int *addr, int count)
1842
1843 sc_0 = SYS_futex;
1844 sc_16 = (long) addr;
1845- sc_17 = FUTEX_WAKE;
1846+ sc_17 = gomp_futex_wake;
1847 sc_18 = count;
1848 __asm volatile ("callsys"
1849 : "=r" (sc_0), "=r"(sc_19)
1850 : "0"(sc_0), "r" (sc_16), "r"(sc_17), "r"(sc_18)
1851 : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
1852 "$22", "$23", "$24", "$25", "$27", "$28", "memory");
1853+ if (__builtin_expect (sc_19, 0) && sc_0 == ENOSYS)
1854+ {
1855+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
1856+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
1857+ sc_0 = SYS_futex;
1858+ sc_17 &= ~FUTEX_PRIVATE_FLAG;
1859+ __asm volatile ("callsys"
1860+ : "=r" (sc_0), "=r"(sc_19)
1861+ : "0"(sc_0), "r" (sc_16), "r"(sc_17), "r"(sc_18)
1862+ : "$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8",
1863+ "$22", "$23", "$24", "$25", "$27", "$28", "memory");
1864+ }
1865+}
1866+
1867+static inline void
1868+cpu_relax (void)
1869+{
1870+ __asm volatile ("" : : : "memory");
1871+}
1872+
1873+static inline void
1874+atomic_write_barrier (void)
1875+{
1876+ __asm volatile ("wmb" : : : "memory");
1877 }
1878--- libgomp/config/linux/affinity.c.jj 2007-12-07 14:41:00.000000000 +0100
1879+++ libgomp/config/linux/affinity.c 2008-03-26 15:11:32.000000000 +0100
1880@@ -1,4 +1,4 @@
1881-/* Copyright (C) 2006, 2007 Free Software Foundation, Inc.
1882+/* Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
1883 Contributed by Jakub Jelinek <jakub@redhat.com>.
1884
1885 This file is part of the GNU OpenMP Library (libgomp).
1886@@ -38,9 +38,6 @@
1887 #ifdef HAVE_PTHREAD_AFFINITY_NP
1888
1889 static unsigned int affinity_counter;
1890-#ifndef HAVE_SYNC_BUILTINS
1891-static gomp_mutex_t affinity_lock;
1892-#endif
1893
1894 void
1895 gomp_init_affinity (void)
1896@@ -76,9 +73,6 @@ gomp_init_affinity (void)
1897 CPU_SET (gomp_cpu_affinity[0], &cpuset);
1898 pthread_setaffinity_np (pthread_self (), sizeof (cpuset), &cpuset);
1899 affinity_counter = 1;
1900-#ifndef HAVE_SYNC_BUILTINS
1901- gomp_mutex_init (&affinity_lock);
1902-#endif
1903 }
1904
1905 void
1906@@ -87,13 +81,7 @@ gomp_init_thread_affinity (pthread_attr_
1907 unsigned int cpu;
1908 cpu_set_t cpuset;
1909
1910-#ifdef HAVE_SYNC_BUILTINS
1911 cpu = __sync_fetch_and_add (&affinity_counter, 1);
1912-#else
1913- gomp_mutex_lock (&affinity_lock);
1914- cpu = affinity_counter++;
1915- gomp_mutex_unlock (&affinity_lock);
1916-#endif
1917 cpu %= gomp_cpu_affinity_len;
1918 CPU_ZERO (&cpuset);
1919 CPU_SET (gomp_cpu_affinity[cpu], &cpuset);
1920--- libgomp/config/linux/bar.h.jj 2007-12-07 14:41:00.000000000 +0100
1921+++ libgomp/config/linux/bar.h 2008-03-26 15:11:32.000000000 +0100
1922@@ -1,4 +1,4 @@
1923-/* Copyright (C) 2005 Free Software Foundation, Inc.
1924+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
1925 Contributed by Richard Henderson <rth@redhat.com>.
1926
1927 This file is part of the GNU OpenMP Library (libgomp).
1928@@ -36,40 +36,49 @@
1929
1930 typedef struct
1931 {
1932- gomp_mutex_t mutex;
1933- unsigned total;
1934- unsigned arrived;
1935- int generation;
1936+ /* Make sure total/generation is in a mostly read cacheline, while
1937+ awaited in a separate cacheline. */
1938+ unsigned total __attribute__((aligned (64)));
1939+ unsigned generation;
1940+ unsigned awaited __attribute__((aligned (64)));
1941 } gomp_barrier_t;
1942+typedef unsigned int gomp_barrier_state_t;
1943
1944 static inline void gomp_barrier_init (gomp_barrier_t *bar, unsigned count)
1945 {
1946- gomp_mutex_init (&bar->mutex);
1947 bar->total = count;
1948- bar->arrived = 0;
1949+ bar->awaited = count;
1950 bar->generation = 0;
1951 }
1952
1953 static inline void gomp_barrier_reinit (gomp_barrier_t *bar, unsigned count)
1954 {
1955- gomp_mutex_lock (&bar->mutex);
1956+ __sync_fetch_and_add (&bar->awaited, count - bar->total);
1957 bar->total = count;
1958- gomp_mutex_unlock (&bar->mutex);
1959 }
1960
1961 static inline void gomp_barrier_destroy (gomp_barrier_t *bar)
1962 {
1963- /* Before destroying, make sure all threads have left the barrier. */
1964- gomp_mutex_lock (&bar->mutex);
1965 }
1966
1967 extern void gomp_barrier_wait (gomp_barrier_t *);
1968-extern void gomp_barrier_wait_end (gomp_barrier_t *, bool);
1969+extern void gomp_barrier_wait_last (gomp_barrier_t *);
1970+extern void gomp_barrier_wait_end (gomp_barrier_t *, gomp_barrier_state_t);
1971
1972-static inline bool gomp_barrier_wait_start (gomp_barrier_t *bar)
1973+static inline gomp_barrier_state_t
1974+gomp_barrier_wait_start (gomp_barrier_t *bar)
1975 {
1976- gomp_mutex_lock (&bar->mutex);
1977- return ++bar->arrived == bar->total;
1978+ unsigned int ret = bar->generation;
1979+ /* Do we need any barrier here or is __sync_add_and_fetch acting
1980+ as the needed LoadLoad barrier already? */
1981+ ret += __sync_add_and_fetch (&bar->awaited, -1) == 0;
1982+ return ret;
1983+}
1984+
1985+static inline bool
1986+gomp_barrier_last_thread (gomp_barrier_state_t state)
1987+{
1988+ return state & 1;
1989 }
1990
1991 #endif /* GOMP_BARRIER_H */
1992--- libgomp/config/linux/ptrlock.h.jj 2008-03-26 15:11:32.000000000 +0100
1993+++ libgomp/config/linux/ptrlock.h 2008-03-26 15:11:32.000000000 +0100
1994@@ -0,0 +1,65 @@
1995+/* Copyright (C) 2008 Free Software Foundation, Inc.
1996+ Contributed by Jakub Jelinek <jakub@redhat.com>.
1997+
1998+ This file is part of the GNU OpenMP Library (libgomp).
1999+
2000+ Libgomp is free software; you can redistribute it and/or modify it
2001+ under the terms of the GNU Lesser General Public License as published by
2002+ the Free Software Foundation; either version 2.1 of the License, or
2003+ (at your option) any later version.
2004+
2005+ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
2006+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2007+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
2008+ more details.
2009+
2010+ You should have received a copy of the GNU Lesser General Public License
2011+ along with libgomp; see the file COPYING.LIB. If not, write to the
2012+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2013+ MA 02110-1301, USA. */
2014+
2015+/* As a special exception, if you link this library with other files, some
2016+ of which are compiled with GCC, to produce an executable, this library
2017+ does not by itself cause the resulting executable to be covered by the
2018+ GNU General Public License. This exception does not however invalidate
2019+ any other reasons why the executable file might be covered by the GNU
2020+ General Public License. */
2021+
2022+/* This is a Linux specific implementation of a mutex synchronization
2023+ mechanism for libgomp. This type is private to the library. This
2024+ implementation uses atomic instructions and the futex syscall. */
2025+
2026+#ifndef GOMP_PTRLOCK_H
2027+#define GOMP_PTRLOCK_H 1
2028+
2029+typedef void *gomp_ptrlock_t;
2030+
2031+static inline void gomp_ptrlock_init (gomp_ptrlock_t *ptrlock, void *ptr)
2032+{
2033+ *ptrlock = ptr;
2034+}
2035+
2036+extern void *gomp_ptrlock_get_slow (gomp_ptrlock_t *ptrlock);
2037+static inline void *gomp_ptrlock_get (gomp_ptrlock_t *ptrlock)
2038+{
2039+ if ((uintptr_t) *ptrlock > 2)
2040+ return *ptrlock;
2041+
2042+ if (__sync_bool_compare_and_swap (ptrlock, NULL, (uintptr_t) 1))
2043+ return NULL;
2044+
2045+ return gomp_ptrlock_get_slow (ptrlock);
2046+}
2047+
2048+extern void gomp_ptrlock_set_slow (gomp_ptrlock_t *ptrlock, void *ptr);
2049+static inline void gomp_ptrlock_set (gomp_ptrlock_t *ptrlock, void *ptr)
2050+{
2051+ if (!__sync_bool_compare_and_swap (ptrlock, (uintptr_t) 1, ptr))
2052+ gomp_ptrlock_set_slow (ptrlock, ptr);
2053+}
2054+
2055+static inline void gomp_ptrlock_destroy (gomp_ptrlock_t *ptrlock)
2056+{
2057+}
2058+
2059+#endif /* GOMP_PTRLOCK_H */
2060--- libgomp/config/linux/lock.c.jj 2007-12-07 14:41:00.000000000 +0100
2061+++ libgomp/config/linux/lock.c 2008-03-26 15:11:32.000000000 +0100
2062@@ -29,11 +29,10 @@
2063 primitives. This implementation uses atomic instructions and the futex
2064 syscall. */
2065
2066-#include "libgomp.h"
2067 #include <string.h>
2068 #include <unistd.h>
2069 #include <sys/syscall.h>
2070-#include "futex.h"
2071+#include "wait.h"
2072
2073
2074 /* The internal gomp_mutex_t and the external non-recursive omp_lock_t
2075@@ -137,7 +136,7 @@ omp_set_nest_lock (omp_nest_lock_t *lock
2076 return;
2077 }
2078
2079- futex_wait (&lock->owner, otid);
2080+ do_wait (&lock->owner, otid);
2081 }
2082 }
2083
2084--- libgomp/config/linux/ptrlock.c.jj 2008-03-26 15:11:32.000000000 +0100
2085+++ libgomp/config/linux/ptrlock.c 2008-03-26 15:11:32.000000000 +0100
2086@@ -0,0 +1,70 @@
2087+/* Copyright (C) 2008 Free Software Foundation, Inc.
2088+ Contributed by Jakub Jelinek <jakub@redhat.com>.
2089+
2090+ This file is part of the GNU OpenMP Library (libgomp).
2091+
2092+ Libgomp is free software; you can redistribute it and/or modify it
2093+ under the terms of the GNU Lesser General Public License as published by
2094+ the Free Software Foundation; either version 2.1 of the License, or
2095+ (at your option) any later version.
2096+
2097+ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
2098+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2099+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
2100+ more details.
2101+
2102+ You should have received a copy of the GNU Lesser General Public License
2103+ along with libgomp; see the file COPYING.LIB. If not, write to the
2104+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2105+ MA 02110-1301, USA. */
2106+
2107+/* As a special exception, if you link this library with other files, some
2108+ of which are compiled with GCC, to produce an executable, this library
2109+ does not by itself cause the resulting executable to be covered by the
2110+ GNU General Public License. This exception does not however invalidate
2111+ any other reasons why the executable file might be covered by the GNU
2112+ General Public License. */
2113+
2114+/* This is a Linux specific implementation of a mutex synchronization
2115+ mechanism for libgomp. This type is private to the library. This
2116+ implementation uses atomic instructions and the futex syscall. */
2117+
2118+#include <endian.h>
2119+#include <limits.h>
2120+#include "wait.h"
2121+
2122+void *
2123+gomp_ptrlock_get_slow (gomp_ptrlock_t *ptrlock)
2124+{
2125+ int *intptr;
2126+ __sync_bool_compare_and_swap (ptrlock, 1, 2);
2127+
2128+ /* futex works on ints, not pointers.
2129+ But a valid work share pointer will be at least
2130+ 8 byte aligned, so it is safe to assume the low
2131+ 32-bits of the pointer won't contain values 1 or 2. */
2132+ __asm volatile ("" : "=r" (intptr) : "0" (ptrlock));
2133+#if __BYTE_ORDER == __BIG_ENDIAN
2134+ if (sizeof (*ptrlock) > sizeof (int))
2135+ intptr += (sizeof (*ptrlock) / sizeof (int)) - 1;
2136+#endif
2137+ do
2138+ do_wait (intptr, 2);
2139+ while (*intptr == 2);
2140+ __asm volatile ("" : : : "memory");
2141+ return *ptrlock;
2142+}
2143+
2144+void
2145+gomp_ptrlock_set_slow (gomp_ptrlock_t *ptrlock, void *ptr)
2146+{
2147+ int *intptr;
2148+
2149+ *ptrlock = ptr;
2150+ __asm volatile ("" : "=r" (intptr) : "0" (ptrlock));
2151+#if __BYTE_ORDER == __BIG_ENDIAN
2152+ if (sizeof (*ptrlock) > sizeof (int))
2153+ intptr += (sizeof (*ptrlock) / sizeof (int)) - 1;
2154+#endif
2155+ futex_wake (intptr, INT_MAX);
2156+}
2157--- libgomp/config/linux/x86/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
2158+++ libgomp/config/linux/x86/futex.h 2008-03-26 15:11:32.000000000 +0100
2159@@ -1,4 +1,4 @@
2160-/* Copyright (C) 2005 Free Software Foundation, Inc.
2161+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2162 Contributed by Richard Henderson <rth@redhat.com>.
2163
2164 This file is part of the GNU OpenMP Library (libgomp).
2165@@ -27,9 +27,6 @@
2166
2167 /* Provide target-specific access to the futex system call. */
2168
2169-#define FUTEX_WAIT 0
2170-#define FUTEX_WAKE 1
2171-
2172 #ifdef __LP64__
2173 # ifndef SYS_futex
2174 # define SYS_futex 202
2175@@ -38,14 +35,26 @@
2176 static inline void
2177 futex_wait (int *addr, int val)
2178 {
2179- register long r10 __asm__("%r10") = 0;
2180+ register long r10 __asm__("%r10");
2181 long res;
2182
2183+ r10 = 0;
2184 __asm volatile ("syscall"
2185 : "=a" (res)
2186- : "0"(SYS_futex), "D" (addr), "S"(FUTEX_WAIT),
2187- "d"(val), "r"(r10)
2188+ : "0" (SYS_futex), "D" (addr), "S" (gomp_futex_wait),
2189+ "d" (val), "r" (r10)
2190 : "r11", "rcx", "memory");
2191+ if (__builtin_expect (res == -ENOSYS, 0))
2192+ {
2193+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2194+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2195+ r10 = 0;
2196+ __asm volatile ("syscall"
2197+ : "=a" (res)
2198+ : "0" (SYS_futex), "D" (addr), "S" (gomp_futex_wait),
2199+ "d" (val), "r" (r10)
2200+ : "r11", "rcx", "memory");
2201+ }
2202 }
2203
2204 static inline void
2205@@ -55,8 +64,19 @@ futex_wake (int *addr, int count)
2206
2207 __asm volatile ("syscall"
2208 : "=a" (res)
2209- : "0"(SYS_futex), "D" (addr), "S"(FUTEX_WAKE), "d"(count)
2210+ : "0" (SYS_futex), "D" (addr), "S" (gomp_futex_wake),
2211+ "d" (count)
2212 : "r11", "rcx", "memory");
2213+ if (__builtin_expect (res == -ENOSYS, 0))
2214+ {
2215+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2216+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2217+ __asm volatile ("syscall"
2218+ : "=a" (res)
2219+ : "0" (SYS_futex), "D" (addr), "S" (gomp_futex_wake),
2220+ "d" (count)
2221+ : "r11", "rcx", "memory");
2222+ }
2223 }
2224 #else
2225 # ifndef SYS_futex
2226@@ -65,7 +85,7 @@ futex_wake (int *addr, int count)
2227
2228 # ifdef __PIC__
2229
2230-static inline void
2231+static inline long
2232 sys_futex0 (int *addr, int op, int val)
2233 {
2234 long res;
2235@@ -77,11 +97,12 @@ sys_futex0 (int *addr, int op, int val)
2236 : "0"(SYS_futex), "r" (addr), "c"(op),
2237 "d"(val), "S"(0)
2238 : "memory");
2239+ return res;
2240 }
2241
2242 # else
2243
2244-static inline void
2245+static inline long
2246 sys_futex0 (int *addr, int op, int val)
2247 {
2248 long res;
2249@@ -91,6 +112,7 @@ sys_futex0 (int *addr, int op, int val)
2250 : "0"(SYS_futex), "b" (addr), "c"(op),
2251 "d"(val), "S"(0)
2252 : "memory");
2253+ return res;
2254 }
2255
2256 # endif /* __PIC__ */
2257@@ -98,13 +120,37 @@ sys_futex0 (int *addr, int op, int val)
2258 static inline void
2259 futex_wait (int *addr, int val)
2260 {
2261- sys_futex0 (addr, FUTEX_WAIT, val);
2262+ long res = sys_futex0 (addr, gomp_futex_wait, val);
2263+ if (__builtin_expect (res == -ENOSYS, 0))
2264+ {
2265+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2266+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2267+ sys_futex0 (addr, gomp_futex_wait, val);
2268+ }
2269 }
2270
2271 static inline void
2272 futex_wake (int *addr, int count)
2273 {
2274- sys_futex0 (addr, FUTEX_WAKE, count);
2275+ long res = sys_futex0 (addr, gomp_futex_wake, count);
2276+ if (__builtin_expect (res == -ENOSYS, 0))
2277+ {
2278+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2279+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2280+ sys_futex0 (addr, gomp_futex_wake, count);
2281+ }
2282 }
2283
2284 #endif /* __LP64__ */
2285+
2286+static inline void
2287+cpu_relax (void)
2288+{
2289+ __asm volatile ("rep; nop" : : : "memory");
2290+}
2291+
2292+static inline void
2293+atomic_write_barrier (void)
2294+{
2295+ __sync_synchronize ();
2296+}
2297--- libgomp/config/linux/wait.h.jj 2008-03-26 15:11:32.000000000 +0100
2298+++ libgomp/config/linux/wait.h 2008-03-26 15:11:32.000000000 +0100
2299@@ -0,0 +1,68 @@
2300+/* Copyright (C) 2008 Free Software Foundation, Inc.
2301+ Contributed by Jakub Jelinek <jakub@redhat.com>.
2302+
2303+ This file is part of the GNU OpenMP Library (libgomp).
2304+
2305+ Libgomp is free software; you can redistribute it and/or modify it
2306+ under the terms of the GNU Lesser General Public License as published by
2307+ the Free Software Foundation; either version 2.1 of the License, or
2308+ (at your option) any later version.
2309+
2310+ Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
2311+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
2312+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
2313+ more details.
2314+
2315+ You should have received a copy of the GNU Lesser General Public License
2316+ along with libgomp; see the file COPYING.LIB. If not, write to the
2317+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
2318+ MA 02110-1301, USA. */
2319+
2320+/* As a special exception, if you link this library with other files, some
2321+ of which are compiled with GCC, to produce an executable, this library
2322+ does not by itself cause the resulting executable to be covered by the
2323+ GNU General Public License. This exception does not however invalidate
2324+ any other reasons why the executable file might be covered by the GNU
2325+ General Public License. */
2326+
2327+/* This is a Linux specific implementation of a mutex synchronization
2328+ mechanism for libgomp. This type is private to the library. This
2329+ implementation uses atomic instructions and the futex syscall. */
2330+
2331+#ifndef GOMP_WAIT_H
2332+#define GOMP_WAIT_H 1
2333+
2334+#include "libgomp.h"
2335+#include <errno.h>
2336+
2337+#define FUTEX_WAIT 0
2338+#define FUTEX_WAKE 1
2339+#define FUTEX_PRIVATE_FLAG 128L
2340+
2341+#ifdef HAVE_ATTRIBUTE_VISIBILITY
2342+# pragma GCC visibility push(hidden)
2343+#endif
2344+
2345+extern long int gomp_futex_wait, gomp_futex_wake;
2346+
2347+#include "futex.h"
2348+
2349+static inline void do_wait (int *addr, int val)
2350+{
2351+ unsigned long long i, count = gomp_spin_count_var;
2352+
2353+ if (__builtin_expect (gomp_managed_threads > gomp_available_cpus, 0))
2354+ count = gomp_throttled_spin_count_var;
2355+ for (i = 0; i < count; i++)
2356+ if (__builtin_expect (*addr != val, 0))
2357+ return;
2358+ else
2359+ cpu_relax ();
2360+ futex_wait (addr, val);
2361+}
2362+
2363+#ifdef HAVE_ATTRIBUTE_VISIBILITY
2364+# pragma GCC visibility pop
2365+#endif
2366+
2367+#endif /* GOMP_WAIT_H */
2368--- libgomp/config/linux/sparc/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
2369+++ libgomp/config/linux/sparc/futex.h 2008-03-26 15:11:32.000000000 +0100
2370@@ -1,4 +1,4 @@
2371-/* Copyright (C) 2005 Free Software Foundation, Inc.
2372+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2373 Contributed by Jakub Jelinek <jakub@redhat.com>.
2374
2375 This file is part of the GNU OpenMP Library (libgomp).
2376@@ -28,10 +28,8 @@
2377 /* Provide target-specific access to the futex system call. */
2378
2379 #include <sys/syscall.h>
2380-#define FUTEX_WAIT 0
2381-#define FUTEX_WAKE 1
2382
2383-static inline void
2384+static inline long
2385 sys_futex0 (int *addr, int op, int val)
2386 {
2387 register long int g1 __asm__ ("g1");
2388@@ -47,9 +45,9 @@ sys_futex0 (int *addr, int op, int val)
2389 o3 = 0;
2390
2391 #ifdef __arch64__
2392-# define SYSCALL_STRING "ta\t0x6d"
2393+# define SYSCALL_STRING "ta\t0x6d; bcs,a,pt %%xcc, 1f; sub %%g0, %%o0, %%o0; 1:"
2394 #else
2395-# define SYSCALL_STRING "ta\t0x10"
2396+# define SYSCALL_STRING "ta\t0x10; bcs,a 1f; sub %%g0, %%o0, %%o0; 1:"
2397 #endif
2398
2399 __asm volatile (SYSCALL_STRING
2400@@ -65,16 +63,49 @@ sys_futex0 (int *addr, int op, int val)
2401 "f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62",
2402 #endif
2403 "cc", "memory");
2404+ return o0;
2405 }
2406
2407 static inline void
2408 futex_wait (int *addr, int val)
2409 {
2410- sys_futex0 (addr, FUTEX_WAIT, val);
2411+ long err = sys_futex0 (addr, gomp_futex_wait, val);
2412+ if (__builtin_expect (err == ENOSYS, 0))
2413+ {
2414+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2415+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2416+ sys_futex0 (addr, gomp_futex_wait, val);
2417+ }
2418 }
2419
2420 static inline void
2421 futex_wake (int *addr, int count)
2422 {
2423- sys_futex0 (addr, FUTEX_WAKE, count);
2424+ long err = sys_futex0 (addr, gomp_futex_wake, count);
2425+ if (__builtin_expect (err == ENOSYS, 0))
2426+ {
2427+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2428+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2429+ sys_futex0 (addr, gomp_futex_wake, count);
2430+ }
2431+}
2432+
2433+static inline void
2434+cpu_relax (void)
2435+{
2436+#if defined __arch64__ || defined __sparc_v9__
2437+ __asm volatile ("membar #LoadLoad" : : : "memory");
2438+#else
2439+ __asm volatile ("" : : : "memory");
2440+#endif
2441+}
2442+
2443+static inline void
2444+atomic_write_barrier (void)
2445+{
2446+#if defined __arch64__ || defined __sparc_v9__
2447+ __asm volatile ("membar #StoreStore" : : : "memory");
2448+#else
2449+ __sync_synchronize ();
2450+#endif
2451 }
2452--- libgomp/config/linux/ia64/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
2453+++ libgomp/config/linux/ia64/futex.h 2008-03-26 15:11:32.000000000 +0100
2454@@ -1,4 +1,4 @@
2455-/* Copyright (C) 2005 Free Software Foundation, Inc.
2456+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2457 Contributed by Richard Henderson <rth@redhat.com>.
2458
2459 This file is part of the GNU OpenMP Library (libgomp).
2460@@ -29,23 +29,24 @@
2461
2462 #include <sys/syscall.h>
2463
2464-#define FUTEX_WAIT 0
2465-#define FUTEX_WAKE 1
2466
2467
2468-static inline void
2469-sys_futex0(int *addr, int op, int val)
2470+static inline long
2471+sys_futex0(int *addr, long op, int val)
2472 {
2473 register long out0 asm ("out0") = (long) addr;
2474 register long out1 asm ("out1") = op;
2475 register long out2 asm ("out2") = val;
2476 register long out3 asm ("out3") = 0;
2477+ register long r8 asm ("r8");
2478+ register long r10 asm ("r10");
2479 register long r15 asm ("r15") = SYS_futex;
2480
2481 __asm __volatile ("break 0x100000"
2482- : "=r"(r15), "=r"(out0), "=r"(out1), "=r"(out2), "=r"(out3)
2483+ : "=r"(r15), "=r"(out0), "=r"(out1), "=r"(out2), "=r"(out3),
2484+ "=r"(r8), "=r"(r10)
2485 : "r"(r15), "r"(out0), "r"(out1), "r"(out2), "r"(out3)
2486- : "memory", "r8", "r10", "out4", "out5", "out6", "out7",
2487+ : "memory", "out4", "out5", "out6", "out7",
2488 /* Non-stacked integer registers, minus r8, r10, r15. */
2489 "r2", "r3", "r9", "r11", "r12", "r13", "r14", "r16", "r17", "r18",
2490 "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", "r27",
2491@@ -56,16 +57,41 @@ sys_futex0(int *addr, int op, int val)
2492 "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
2493 /* Branch registers. */
2494 "b6");
2495+ return r8 & r10;
2496 }
2497
2498 static inline void
2499 futex_wait (int *addr, int val)
2500 {
2501- sys_futex0 (addr, FUTEX_WAIT, val);
2502+ long err = sys_futex0 (addr, gomp_futex_wait, val);
2503+ if (__builtin_expect (err == ENOSYS, 0))
2504+ {
2505+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2506+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2507+ sys_futex0 (addr, gomp_futex_wait, val);
2508+ }
2509 }
2510
2511 static inline void
2512 futex_wake (int *addr, int count)
2513 {
2514- sys_futex0 (addr, FUTEX_WAKE, count);
2515+ long err = sys_futex0 (addr, gomp_futex_wake, count);
2516+ if (__builtin_expect (err == ENOSYS, 0))
2517+ {
2518+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2519+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2520+ sys_futex0 (addr, gomp_futex_wake, count);
2521+ }
2522+}
2523+
2524+static inline void
2525+cpu_relax (void)
2526+{
2527+ __asm volatile ("hint @pause" : : : "memory");
2528+}
2529+
2530+static inline void
2531+atomic_write_barrier (void)
2532+{
2533+ __sync_synchronize ();
2534 }
2535--- libgomp/config/linux/s390/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
2536+++ libgomp/config/linux/s390/futex.h 2008-03-26 15:11:32.000000000 +0100
2537@@ -1,4 +1,4 @@
2538-/* Copyright (C) 2005 Free Software Foundation, Inc.
2539+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2540 Contributed by Jakub Jelinek <jakub@redhat.com>.
2541
2542 This file is part of the GNU OpenMP Library (libgomp).
2543@@ -28,10 +28,8 @@
2544 /* Provide target-specific access to the futex system call. */
2545
2546 #include <sys/syscall.h>
2547-#define FUTEX_WAIT 0
2548-#define FUTEX_WAKE 1
2549
2550-static inline void
2551+static inline long
2552 sys_futex0 (int *addr, int op, int val)
2553 {
2554 register long int gpr2 __asm__ ("2");
2555@@ -49,16 +47,41 @@ sys_futex0 (int *addr, int op, int val)
2556 : "i" (SYS_futex),
2557 "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5)
2558 : "memory");
2559+ return gpr2;
2560 }
2561
2562 static inline void
2563 futex_wait (int *addr, int val)
2564 {
2565- sys_futex0 (addr, FUTEX_WAIT, val);
2566+ long err = sys_futex0 (addr, gomp_futex_wait, val);
2567+ if (__builtin_expect (err == -ENOSYS, 0))
2568+ {
2569+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2570+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2571+ sys_futex0 (addr, gomp_futex_wait, val);
2572+ }
2573 }
2574
2575 static inline void
2576 futex_wake (int *addr, int count)
2577 {
2578- sys_futex0 (addr, FUTEX_WAKE, count);
2579+ long err = sys_futex0 (addr, gomp_futex_wake, count);
2580+ if (__builtin_expect (err == -ENOSYS, 0))
2581+ {
2582+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2583+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2584+ sys_futex0 (addr, gomp_futex_wake, count);
2585+ }
2586+}
2587+
2588+static inline void
2589+cpu_relax (void)
2590+{
2591+ __asm volatile ("" : : : "memory");
2592+}
2593+
2594+static inline void
2595+atomic_write_barrier (void)
2596+{
2597+ __sync_synchronize ();
2598 }
2599--- libgomp/config/linux/mutex.c.jj 2007-12-07 14:41:00.000000000 +0100
2600+++ libgomp/config/linux/mutex.c 2008-03-26 15:11:32.000000000 +0100
2601@@ -1,4 +1,4 @@
2602-/* Copyright (C) 2005 Free Software Foundation, Inc.
2603+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2604 Contributed by Richard Henderson <rth@redhat.com>.
2605
2606 This file is part of the GNU OpenMP Library (libgomp).
2607@@ -29,9 +29,10 @@
2608 mechanism for libgomp. This type is private to the library. This
2609 implementation uses atomic instructions and the futex syscall. */
2610
2611-#include "libgomp.h"
2612-#include "futex.h"
2613+#include "wait.h"
2614
2615+long int gomp_futex_wake = FUTEX_WAKE | FUTEX_PRIVATE_FLAG;
2616+long int gomp_futex_wait = FUTEX_WAIT | FUTEX_PRIVATE_FLAG;
2617
2618 void
2619 gomp_mutex_lock_slow (gomp_mutex_t *mutex)
2620@@ -40,7 +41,7 @@ gomp_mutex_lock_slow (gomp_mutex_t *mute
2621 {
2622 int oldval = __sync_val_compare_and_swap (mutex, 1, 2);
2623 if (oldval != 0)
2624- futex_wait (mutex, 2);
2625+ do_wait (mutex, 2);
2626 }
2627 while (!__sync_bool_compare_and_swap (mutex, 0, 2));
2628 }
2629--- libgomp/config/linux/sem.c.jj 2007-12-07 14:41:00.000000000 +0100
2630+++ libgomp/config/linux/sem.c 2008-03-26 15:11:32.000000000 +0100
2631@@ -1,4 +1,4 @@
2632-/* Copyright (C) 2005 Free Software Foundation, Inc.
2633+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2634 Contributed by Richard Henderson <rth@redhat.com>.
2635
2636 This file is part of the GNU OpenMP Library (libgomp).
2637@@ -29,8 +29,7 @@
2638 mechanism for libgomp. This type is private to the library. This
2639 implementation uses atomic instructions and the futex syscall. */
2640
2641-#include "libgomp.h"
2642-#include "futex.h"
2643+#include "wait.h"
2644
2645
2646 void
2647@@ -44,7 +43,7 @@ gomp_sem_wait_slow (gomp_sem_t *sem)
2648 if (__sync_bool_compare_and_swap (sem, val, val - 1))
2649 return;
2650 }
2651- futex_wait (sem, -1);
2652+ do_wait (sem, -1);
2653 }
2654 }
2655
2656--- libgomp/config/linux/powerpc/futex.h.jj 2007-12-07 14:41:00.000000000 +0100
2657+++ libgomp/config/linux/powerpc/futex.h 2008-03-26 15:11:32.000000000 +0100
2658@@ -1,4 +1,4 @@
2659-/* Copyright (C) 2005 Free Software Foundation, Inc.
2660+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2661 Contributed by Richard Henderson <rth@redhat.com>.
2662
2663 This file is part of the GNU OpenMP Library (libgomp).
2664@@ -28,10 +28,8 @@
2665 /* Provide target-specific access to the futex system call. */
2666
2667 #include <sys/syscall.h>
2668-#define FUTEX_WAIT 0
2669-#define FUTEX_WAKE 1
2670
2671-static inline void
2672+static inline long
2673 sys_futex0 (int *addr, int op, int val)
2674 {
2675 register long int r0 __asm__ ("r0");
2676@@ -50,21 +48,48 @@ sys_futex0 (int *addr, int op, int val)
2677 doesn't. It doesn't much matter for us. In the interest of unity,
2678 go ahead and clobber it always. */
2679
2680- __asm volatile ("sc"
2681+ __asm volatile ("sc; mfcr %0"
2682 : "=r"(r0), "=r"(r3), "=r"(r4), "=r"(r5), "=r"(r6)
2683 : "r"(r0), "r"(r3), "r"(r4), "r"(r5), "r"(r6)
2684 : "r7", "r8", "r9", "r10", "r11", "r12",
2685 "cr0", "ctr", "memory");
2686+ if (__builtin_expect (r0 & (1 << 28), 0))
2687+ return r3;
2688+ return 0;
2689 }
2690
2691 static inline void
2692 futex_wait (int *addr, int val)
2693 {
2694- sys_futex0 (addr, FUTEX_WAIT, val);
2695+ long err = sys_futex0 (addr, gomp_futex_wait, val);
2696+ if (__builtin_expect (err == ENOSYS, 0))
2697+ {
2698+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2699+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2700+ sys_futex0 (addr, gomp_futex_wait, val);
2701+ }
2702 }
2703
2704 static inline void
2705 futex_wake (int *addr, int count)
2706 {
2707- sys_futex0 (addr, FUTEX_WAKE, count);
2708+ long err = sys_futex0 (addr, gomp_futex_wake, count);
2709+ if (__builtin_expect (err == ENOSYS, 0))
2710+ {
2711+ gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
2712+ gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
2713+ sys_futex0 (addr, gomp_futex_wake, count);
2714+ }
2715+}
2716+
2717+static inline void
2718+cpu_relax (void)
2719+{
2720+ __asm volatile ("" : : : "memory");
2721+}
2722+
2723+static inline void
2724+atomic_write_barrier (void)
2725+{
2726+ __asm volatile ("eieio" : : : "memory");
2727 }
2728--- libgomp/config/linux/bar.c.jj 2007-12-07 14:41:00.000000000 +0100
2729+++ libgomp/config/linux/bar.c 2008-03-26 15:11:32.000000000 +0100
2730@@ -1,4 +1,4 @@
2731-/* Copyright (C) 2005 Free Software Foundation, Inc.
2732+/* Copyright (C) 2005, 2008 Free Software Foundation, Inc.
2733 Contributed by Richard Henderson <rth@redhat.com>.
2734
2735 This file is part of the GNU OpenMP Library (libgomp).
2736@@ -29,32 +29,29 @@
2737 mechanism for libgomp. This type is private to the library. This
2738 implementation uses atomic instructions and the futex syscall. */
2739
2740-#include "libgomp.h"
2741-#include "futex.h"
2742 #include <limits.h>
2743+#include "wait.h"
2744
2745
2746 void
2747-gomp_barrier_wait_end (gomp_barrier_t *bar, bool last)
2748+gomp_barrier_wait_end (gomp_barrier_t *bar, gomp_barrier_state_t state)
2749 {
2750- if (last)
2751+ if (__builtin_expect ((state & 1) != 0, 0))
2752 {
2753- bar->generation++;
2754- futex_wake (&bar->generation, INT_MAX);
2755+ /* Next time we'll be awaiting TOTAL threads again. */
2756+ bar->awaited = bar->total;
2757+ atomic_write_barrier ();
2758+ bar->generation += 2;
2759+ futex_wake ((int *) &bar->generation, INT_MAX);
2760 }
2761 else
2762 {
2763- unsigned int generation = bar->generation;
2764-
2765- gomp_mutex_unlock (&bar->mutex);
2766+ unsigned int generation = state;
2767
2768 do
2769- futex_wait (&bar->generation, generation);
2770+ do_wait ((int *) &bar->generation, generation);
2771 while (bar->generation == generation);
2772 }
2773-
2774- if (__sync_add_and_fetch (&bar->arrived, -1) == 0)
2775- gomp_mutex_unlock (&bar->mutex);
2776 }
2777
2778 void
2779@@ -62,3 +59,18 @@ gomp_barrier_wait (gomp_barrier_t *barri
2780 {
2781 gomp_barrier_wait_end (barrier, gomp_barrier_wait_start (barrier));
2782 }
2783+
2784+/* Like gomp_barrier_wait, except that if the encountering thread
2785+ is not the last one to hit the barrier, it returns immediately.
2786+ The intended usage is that a thread which intends to gomp_barrier_destroy
2787+ this barrier calls gomp_barrier_wait, while all other threads
2788+ call gomp_barrier_wait_last. When gomp_barrier_wait returns,
2789+ the barrier can be safely destroyed. */
2790+
2791+void
2792+gomp_barrier_wait_last (gomp_barrier_t *barrier)
2793+{
2794+ gomp_barrier_state_t state = gomp_barrier_wait_start (barrier);
2795+ if (state & 1)
2796+ gomp_barrier_wait_end (barrier, state);
2797+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ppc32-retaddr.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ppc32-retaddr.patch
new file mode 100644
index 000000000..3de4158eb
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-ppc32-retaddr.patch
@@ -0,0 +1,90 @@
12005-11-28 Jakub Jelinek <jakub@redhat.com>
2
3 * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
4 read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
5 instead of doing an extran indirection from frame_pointer_rtx.
6
7 * gcc.dg/20051128-1.c: New test.
8
9Index: gcc/config/rs6000/rs6000.c
10===================================================================
11--- gcc/config/rs6000/rs6000.c.orig 2010-03-27 03:27:39.000000000 -0700
12+++ gcc/config/rs6000/rs6000.c 2010-06-25 10:18:04.053381930 -0700
13@@ -17646,17 +17646,22 @@
14 don't try to be too clever here. */
15 if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
16 {
17+ rtx x;
18 cfun->machine->ra_needs_full_frame = 1;
19
20- return
21- gen_rtx_MEM
22- (Pmode,
23- memory_address
24- (Pmode,
25- plus_constant (copy_to_reg
26- (gen_rtx_MEM (Pmode,
27- memory_address (Pmode, frame))),
28- RETURN_ADDRESS_OFFSET)));
29+ if (count == 0)
30+ {
31+ gcc_assert (frame == frame_pointer_rtx);
32+ x = arg_pointer_rtx;
33+ }
34+ else
35+ {
36+ x = memory_address (Pmode, frame);
37+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
38+ }
39+
40+ x = plus_constant (x, RETURN_ADDRESS_OFFSET);
41+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
42 }
43
44 cfun->machine->ra_need_lr = 1;
45Index: gcc/testsuite/gcc.dg/20051128-1.c
46===================================================================
47--- /dev/null 1970-01-01 00:00:00.000000000 +0000
48+++ gcc/testsuite/gcc.dg/20051128-1.c 2010-06-25 10:18:04.061382856 -0700
49@@ -0,0 +1,41 @@
50+/* { dg-do run } */
51+/* { dg-options "-O2 -fpic" } */
52+
53+extern void exit (int);
54+extern void abort (void);
55+
56+int b;
57+
58+struct A
59+{
60+ void *pad[147];
61+ void *ra, *h;
62+ long o;
63+};
64+
65+void
66+__attribute__((noinline))
67+foo (struct A *a, void *x)
68+{
69+ __builtin_memset (a, 0, sizeof (a));
70+ if (!b)
71+ exit (0);
72+}
73+
74+void
75+__attribute__((noinline))
76+bar (void)
77+{
78+ struct A a;
79+
80+ __builtin_unwind_init ();
81+ foo (&a, __builtin_return_address (0));
82+}
83+
84+int
85+main (void)
86+{
87+ bar ();
88+ abort ();
89+ return 0;
90+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr27898.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr27898.patch
new file mode 100644
index 000000000..172bb8117
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr27898.patch
@@ -0,0 +1,16 @@
12006-08-18 Jakub Jelinek <jakub@redhat.com>
2
3 PR c/27898
4 * gcc.dg/pr27898.c: New test.
5
6--- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200
7+++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200
8@@ -0,0 +1,8 @@
9+/* PR c/27898 */
10+/* { dg-do compile } */
11+/* { dg-options "--combine" } */
12+/* { dg-additional-sources "pr27898.c" } */
13+
14+union u { struct { int i; }; };
15+
16+extern int foo (union u *);
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr32139.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr32139.patch
new file mode 100644
index 000000000..f35696703
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr32139.patch
@@ -0,0 +1,19 @@
12007-06-01 Jakub Jelinek <jakub@redhat.com>
2
3 PR tree-optimization/32139
4 * gcc.c-torture/compile/20070531-1.c: New test.
5
6--- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj 2007-05-31 13:47:22.000000000 +0200
7+++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c 2007-06-01 10:57:15.000000000 +0200
8@@ -0,0 +1,11 @@
9+/* PR tree-optimization/32139 */
10+int foo (void);
11+int bar (void) __attribute__ ((const));
12+
13+int
14+test (int x)
15+{
16+ int a = (x == 10000 ? foo : bar) ();
17+ int b = (x == 10000 ? foo : bar) ();
18+ return a + b;
19+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr33763.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr33763.patch
new file mode 100644
index 000000000..68c30650f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-pr33763.patch
@@ -0,0 +1,159 @@
12007-11-06 Jakub Jelinek <jakub@redhat.com>
2
3 PR tree-optimization/33763
4 * gcc.dg/pr33763.c: New test.
5 * g++.dg/opt/inline13.C: New test.
6
72007-11-06 Jan Hubicka <jh@suse.cz>
8
9 PR tree-optimization/33763
10 * tree-inline.c (expand_call_inline): Silently ignore always_inline
11 attribute for redefined extern inline functions.
12
13Index: gcc/tree-inline.c
14===================================================================
15--- gcc/tree-inline.c.orig 2010-03-18 13:07:13.000000000 -0700
16+++ gcc/tree-inline.c 2010-06-25 10:18:51.230139825 -0700
17@@ -3545,6 +3545,12 @@
18 goto egress;
19
20 if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
21+ /* For extern inline functions that get redefined we always
22+ silently ignored alway_inline flag. Better behaviour would
23+ be to be able to keep both bodies and use extern inline body
24+ for inlining, but we can't do that because frontends overwrite
25+ the body. */
26+ && !cg_edge->callee->local.redefined_extern_inline
27 /* Avoid warnings during early inline pass. */
28 && cgraph_global_info_ready)
29 {
30Index: gcc/testsuite/gcc.dg/pr33763.c
31===================================================================
32--- /dev/null 1970-01-01 00:00:00.000000000 +0000
33+++ gcc/testsuite/gcc.dg/pr33763.c 2010-06-25 10:18:51.234141302 -0700
34@@ -0,0 +1,60 @@
35+/* PR tree-optimization/33763 */
36+/* { dg-do compile } */
37+/* { dg-options "-O2" } */
38+
39+typedef struct
40+{
41+ void *a;
42+ void *b;
43+} T;
44+extern void *foo (const char *, const char *);
45+extern void *bar (void *, const char *, T);
46+extern int baz (const char *, int);
47+
48+extern inline __attribute__ ((always_inline, gnu_inline)) int
49+baz (const char *x, int y)
50+{
51+ return 2;
52+}
53+
54+int
55+baz (const char *x, int y)
56+{
57+ return 1;
58+}
59+
60+int xa, xb;
61+
62+static void *
63+inl (const char *x, const char *y)
64+{
65+ T t = { &xa, &xb };
66+ int *f = (int *) __builtin_malloc (sizeof (int));
67+ const char *z;
68+ int o = 0;
69+ void *r = 0;
70+
71+ for (z = y; *z; z++)
72+ {
73+ if (*z == 'r')
74+ o |= 1;
75+ if (*z == 'w')
76+ o |= 2;
77+ }
78+ if (o == 1)
79+ *f = baz (x, 0);
80+ if (o == 2)
81+ *f = baz (x, 1);
82+ if (o == 3)
83+ *f = baz (x, 2);
84+
85+ if (o && *f > 0)
86+ r = bar (f, "w", t);
87+ return r;
88+}
89+
90+void *
91+foo (const char *x, const char *y)
92+{
93+ return inl (x, y);
94+}
95Index: gcc/testsuite/g++.dg/opt/inline13.C
96===================================================================
97--- /dev/null 1970-01-01 00:00:00.000000000 +0000
98+++ gcc/testsuite/g++.dg/opt/inline13.C 2010-06-25 10:18:51.261052137 -0700
99@@ -0,0 +1,60 @@
100+// PR tree-optimization/33763
101+// { dg-do compile }
102+// { dg-options "-O2" }
103+
104+typedef struct
105+{
106+ void *a;
107+ void *b;
108+} T;
109+extern void *foo (const char *, const char *);
110+extern void *bar (void *, const char *, T);
111+extern int baz (const char *, int);
112+
113+extern inline __attribute__ ((always_inline, gnu_inline)) int
114+baz (const char *x, int y)
115+{
116+ return 2;
117+}
118+
119+int
120+baz (const char *x, int y)
121+{
122+ return 1;
123+}
124+
125+int xa, xb;
126+
127+static void *
128+inl (const char *x, const char *y)
129+{
130+ T t = { &xa, &xb };
131+ int *f = (int *) __builtin_malloc (sizeof (int));
132+ const char *z;
133+ int o = 0;
134+ void *r = 0;
135+
136+ for (z = y; *z; z++)
137+ {
138+ if (*z == 'r')
139+ o |= 1;
140+ if (*z == 'w')
141+ o |= 2;
142+ }
143+ if (o == 1)
144+ *f = baz (x, 0);
145+ if (o == 2)
146+ *f = baz (x, 1);
147+ if (o == 3)
148+ *f = baz (x, 2);
149+
150+ if (o && *f > 0)
151+ r = bar (f, "w", t);
152+ return r;
153+}
154+
155+void *
156+foo (const char *x, const char *y)
157+{
158+ return inl (x, y);
159+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh251682.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh251682.patch
new file mode 100644
index 000000000..e96ae6f13
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh251682.patch
@@ -0,0 +1,89 @@
12008-04-01 Jakub Jelinek <jakub@redhat.com>
2
3 PR pch/13675
4 * files.c (struct _cpp_file): Remove pch field.
5 (pch_open_file): Don't set file->pch, just file->pchname.
6 (should_stack_file): After pfile->cb.read_pch call
7 free pchname and clear pchname, don't close file->fd.
8 Test file->pchname instead of file->pch. Don't close fd after cb.
9 (_cpp_stack_include): Test file->pchname instead of file->pch.
10
11 * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
12
13--- libcpp/files.c.jj 2008-02-18 23:50:17.000000000 +0100
14+++ libcpp/files.c 2008-03-31 15:59:01.000000000 +0200
15@@ -106,9 +106,6 @@ struct _cpp_file
16
17 /* If BUFFER above contains the true contents of the file. */
18 bool buffer_valid;
19-
20- /* File is a PCH (on return from find_include_file). */
21- bool pch;
22 };
23
24 /* A singly-linked list for all searches for a given file name, with
25@@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_f
26 }
27 closedir (pchdir);
28 }
29- if (valid)
30- file->pch = true;
31- else
32+ if (!valid)
33 *invalid_pch = true;
34 }
35
36@@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _c
37 return false;
38
39 /* Handle PCH files immediately; don't stack them. */
40- if (file->pch)
41+ if (file->pchname)
42 {
43 pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path);
44- close (file->fd);
45 file->fd = -1;
46+ free ((void *) file->pchname);
47+ file->pchname = NULL;
48 return false;
49 }
50
51@@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, c
52 complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we
53 found a PCH file (in which case linemap_add is not called) or we
54 were included from the command-line. */
55- if (! file->pch && file->err_no == 0 && type != IT_CMDLINE)
56+ if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE)
57 pfile->line_table->highest_location--;
58
59 return _cpp_stack_file (pfile, file, type == IT_IMPORT);
60--- gcc/c-pch.c.jj 2008-02-18 23:46:08.000000000 +0100
61+++ gcc/c-pch.c 2008-03-31 15:56:00.000000000 +0200
62@@ -372,6 +372,7 @@ c_common_read_pch (cpp_reader *pfile, co
63 if (f == NULL)
64 {
65 cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen");
66+ close (fd);
67 return;
68 }
69
70@@ -380,6 +381,7 @@ c_common_read_pch (cpp_reader *pfile, co
71 if (fread (&h, sizeof (h), 1, f) != 1)
72 {
73 cpp_errno (pfile, CPP_DL_ERROR, "reading");
74+ fclose (f);
75 return;
76 }
77
78@@ -425,7 +427,10 @@ c_common_read_pch (cpp_reader *pfile, co
79 gt_pch_restore (f);
80
81 if (cpp_read_state (pfile, name, f, smd) != 0)
82- return;
83+ {
84+ fclose (f);
85+ return;
86+ }
87
88 fclose (f);
89
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh330771.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh330771.patch
new file mode 100644
index 000000000..4888ac47d
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh330771.patch
@@ -0,0 +1,31 @@
12007-10-16 Jakub Jelinek <jakub@redhat.com>
2
3 * Makefile.am (libgcj_tools_la_LIBADD): Add.
4 * Makefile.in: Regenerated.
5
6Index: libjava/Makefile.am
7===================================================================
8--- libjava/Makefile.am.orig 2010-03-21 12:41:37.000000000 -0700
9+++ libjava/Makefile.am 2010-06-25 10:22:11.394130458 -0700
10@@ -507,6 +507,8 @@
11 libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \
12 -fno-bootstrap-classes -fno-indirect-classes \
13 -fsource-filename=$(here)/classpath/tools/all-classes.lst
14+## See jv_convert_LDADD.
15+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
16 libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
17 -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
18 $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF)
19Index: libjava/Makefile.in
20===================================================================
21--- libjava/Makefile.in.orig 2010-04-02 11:18:06.000000000 -0700
22+++ libjava/Makefile.in 2010-06-25 10:27:41.841708512 -0700
23@@ -1190,7 +1190,7 @@
24 -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
25 $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF)
26
27-libgcj_tools_la_LIBADD = libgcj.la -lm
28+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la -lm
29 libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec $(am__append_22)
30 libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS)
31 libjvm_la_SOURCES = jni-libjvm.cc
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh341221.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh341221.patch
new file mode 100644
index 000000000..7e2801b99
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fedora/gcc43-rh341221.patch
@@ -0,0 +1,32 @@
12007-10-21 Jakub Jelinek <jakub@redhat.com>
2
3 * doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
4 timestamp rather than from current date.
5 * doc/Makefile.in: Regenerated.
6
7Index: libjava/classpath/doc/Makefile.am
8===================================================================
9--- libjava/classpath/doc/Makefile.am.orig 2008-10-21 10:55:01.000000000 -0700
10+++ libjava/classpath/doc/Makefile.am 2010-06-25 10:28:30.237631599 -0700
11@@ -31,7 +31,7 @@
12 gtnameserv.1 \
13 gjdoc.1
14
15-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
16+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
17 TEXI2POD = perl $(srcdir)/texi2pod.pl
18 STAMP = echo timestamp >
19
20Index: libjava/classpath/doc/Makefile.in
21===================================================================
22--- libjava/classpath/doc/Makefile.in.orig 2010-04-02 11:18:06.000000000 -0700
23+++ libjava/classpath/doc/Makefile.in 2010-06-25 10:28:30.245635728 -0700
24@@ -376,7 +376,7 @@
25 gtnameserv.1 \
26 gjdoc.1
27
28-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
29+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
30 TEXI2POD = perl $(srcdir)/texi2pod.pl
31 STAMP = echo timestamp >
32 @GENINSRC_FALSE@STAMP_GENINSRC =
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/fortran-cross-compile-hack.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/fortran-cross-compile-hack.patch
new file mode 100644
index 000000000..348c77006
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/fortran-cross-compile-hack.patch
@@ -0,0 +1,30 @@
1* Fortran would have searched for arm-angstrom-gnueabi-gfortran but would have used
2 used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler from our cross
3 directory.
4
5Index: gcc-4.5+svnr155514/libgfortran/configure
6===================================================================
7--- gcc-4.5+svnr155514.orig/libgfortran/configure 2009-12-29 22:02:01.000000000 -0800
8+++ gcc-4.5+svnr155514/libgfortran/configure 2009-12-30 08:12:40.889091657 -0800
9@@ -11655,7 +11655,7 @@ CC="$lt_save_CC"
10
11 # We need gfortran to compile parts of the library
12 #AC_PROG_FC(gfortran)
13-FC="$GFORTRAN"
14+#FC="$GFORTRAN"
15 ac_ext=${ac_fc_srcext-f}
16 ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
17 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
18Index: gcc-4.5+svnr155514/libgfortran/configure.ac
19===================================================================
20--- gcc-4.5+svnr155514.orig/libgfortran/configure.ac 2009-12-29 22:02:01.000000000 -0800
21+++ gcc-4.5+svnr155514/libgfortran/configure.ac 2009-12-30 08:12:13.453094218 -0800
22@@ -187,7 +187,7 @@ AC_SUBST(enable_static)
23
24 # We need gfortran to compile parts of the library
25 #AC_PROG_FC(gfortran)
26-FC="$GFORTRAN"
27+#FC="$GFORTRAN"
28 AC_PROG_FC(gfortran)
29
30 # extra LD Flags which are required for targets
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.0.2-e300c2c3.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.0.2-e300c2c3.patch
new file mode 100644
index 000000000..d1df8b271
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.0.2-e300c2c3.patch
@@ -0,0 +1,319 @@
1Adds support for Freescale Power architecture e300c2 and e300c3 cores.
2http://www.bitshrine.org/gpp/tc-fsl-x86lnx-e300c3-nptl-4.0.2-2.src.rpm
3
4Leon Woestenberg <leonw@mailcan.com>
5
6---
7 gcc/config.gcc | 2
8 gcc/config/rs6000/e300c2c3.md | 189 ++++++++++++++++++++++++++++++++++++++++++
9 gcc/config/rs6000/rs6000.c | 24 +++++
10 gcc/config/rs6000/rs6000.h | 4
11 gcc/config/rs6000/rs6000.md | 3
12 5 files changed, 220 insertions(+), 2 deletions(-)
13
14Index: gcc-4.3.1/gcc/config/rs6000/e300c2c3.md
15===================================================================
16--- /dev/null 1970-01-01 00:00:00.000000000 +0000
17+++ gcc-4.3.1/gcc/config/rs6000/e300c2c3.md 2008-08-23 16:51:33.000000000 -0700
18@@ -0,0 +1,189 @@
19+;; Pipeline description for Motorola PowerPC e300c3 core.
20+;; Copyright (C) 2003 Free Software Foundation, Inc.
21+;;
22+;; This file is part of GCC.
23+
24+;; GCC is free software; you can redistribute it and/or modify it
25+;; under the terms of the GNU General Public License as published
26+;; by the Free Software Foundation; either version 2, or (at your
27+;; option) any later version.
28+
29+;; GCC is distributed in the hope that it will be useful, but WITHOUT
30+;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
31+;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
32+;; License for more details.
33+
34+;; You should have received a copy of the GNU General Public License
35+;; along with GCC; see the file COPYING. If not, write to the
36+;; Free Software Foundation, 59 Temple Place - Suite 330, Boston,
37+;; MA 02111-1307, USA.
38+
39+(define_automaton "ppce300c3_most,ppce300c3_long,ppce300c3_retire")
40+(define_cpu_unit "ppce300c3_decode_0,ppce300c3_decode_1" "ppce300c3_most")
41+
42+;; We don't simulate general issue queue (GIC). If we have SU insn
43+;; and then SU1 insn, they can not be issued on the same cycle
44+;; (although SU1 insn and then SU insn can be issued) because the SU
45+;; insn will go to SU1 from GIC0 entry. Fortunately, the first cycle
46+;; multipass insn scheduling will find the situation and issue the SU1
47+;; insn and then the SU insn.
48+(define_cpu_unit "ppce300c3_issue_0,ppce300c3_issue_1" "ppce300c3_most")
49+
50+;; We could describe completion buffers slots in combination with the
51+;; retirement units and the order of completion but the result
52+;; automaton would behave in the same way because we can not describe
53+;; real latency time with taking in order completion into account.
54+;; Actually we could define the real latency time by querying reserved
55+;; automaton units but the current scheduler uses latency time before
56+;; issuing insns and making any reservations.
57+;;
58+;; So our description is aimed to achieve a insn schedule in which the
59+;; insns would not wait in the completion buffer.
60+(define_cpu_unit "ppce300c3_retire_0,ppce300c3_retire_1" "ppce300c3_retire")
61+
62+;; Branch unit:
63+(define_cpu_unit "ppce300c3_bu" "ppce300c3_most")
64+
65+;; IU:
66+(define_cpu_unit "ppce300c3_iu0_stage0,ppce300c3_iu1_stage0" "ppce300c3_most")
67+
68+;; IU: This used to describe non-pipelined division.
69+(define_cpu_unit "ppce300c3_mu_div" "ppce300c3_long")
70+
71+;; SRU:
72+(define_cpu_unit "ppce300c3_sru_stage0" "ppce300c3_most")
73+
74+;; Here we simplified LSU unit description not describing the stages.
75+(define_cpu_unit "ppce300c3_lsu" "ppce300c3_most")
76+
77+;; FPU:
78+(define_cpu_unit "ppce300c3_fpu" "ppce300c3_most")
79+
80+;; The following units are used to make automata deterministic
81+(define_cpu_unit "present_ppce300c3_decode_0" "ppce300c3_most")
82+(define_cpu_unit "present_ppce300c3_issue_0" "ppce300c3_most")
83+(define_cpu_unit "present_ppce300c3_retire_0" "ppce300c3_retire")
84+(define_cpu_unit "present_ppce300c3_iu0_stage0" "ppce300c3_most")
85+
86+;; The following sets to make automata deterministic when option ndfa is used.
87+(presence_set "present_ppce300c3_decode_0" "ppce300c3_decode_0")
88+(presence_set "present_ppce300c3_issue_0" "ppce300c3_issue_0")
89+(presence_set "present_ppce300c3_retire_0" "ppce300c3_retire_0")
90+(presence_set "present_ppce300c3_iu0_stage0" "ppce300c3_iu0_stage0")
91+
92+;; Some useful abbreviations.
93+(define_reservation "ppce300c3_decode"
94+ "ppce300c3_decode_0|ppce300c3_decode_1+present_ppce300c3_decode_0")
95+(define_reservation "ppce300c3_issue"
96+ "ppce300c3_issue_0|ppce300c3_issue_1+present_ppce300c3_issue_0")
97+(define_reservation "ppce300c3_retire"
98+ "ppce300c3_retire_0|ppce300c3_retire_1+present_ppce300c3_retire_0")
99+(define_reservation "ppce300c3_iu_stage0"
100+ "ppce300c3_iu0_stage0|ppce300c3_iu1_stage0+present_ppce300c3_iu0_stage0")
101+
102+;; Compares can be executed either one of the IU or SRU
103+(define_insn_reservation "ppce300c3_cmp" 1
104+ (and (eq_attr "type" "cmp,compare,delayed_compare,fast_compare")
105+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
106+ "ppce300c3_decode,ppce300c3_issue+(ppce300c3_iu_stage0|ppce300c3_sru_stage0) \
107+ +ppce300c3_retire")
108+
109+;; Other one cycle IU insns
110+(define_insn_reservation "ppce300c3_iu" 1
111+ (and (eq_attr "type" "integer,insert_word")
112+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
113+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_retire")
114+
115+;; Branch. Actually this latency time is not used by the scheduler.
116+(define_insn_reservation "ppce300c3_branch" 1
117+ (and (eq_attr "type" "jmpreg,branch")
118+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
119+ "ppce300c3_decode,ppce300c3_bu,ppce300c3_retire")
120+
121+;; Multiply is non-pipelined but can be executed in any IU
122+(define_insn_reservation "ppce300c3_multiply" 2
123+ (and (eq_attr "type" "imul,imul2,imul3,imul_compare")
124+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
125+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0, \
126+ ppce300c3_iu_stage0+ppce300c3_retire")
127+
128+;; Divide. We use the average latency time here. We omit reserving a
129+;; retire unit because of the result automata will be huge.
130+(define_insn_reservation "ppce300c3_divide" 20
131+ (and (eq_attr "type" "idiv")
132+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
133+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_iu_stage0+ppce300c3_mu_div,\
134+ ppce300c3_mu_div*19")
135+
136+;; CR logical
137+(define_insn_reservation "ppce300c3_cr_logical" 1
138+ (and (eq_attr "type" "cr_logical,delayed_cr")
139+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
140+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
141+
142+;; Mfcr
143+(define_insn_reservation "ppce300c3_mfcr" 1
144+ (and (eq_attr "type" "mfcr")
145+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
146+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
147+
148+;; Mtcrf
149+(define_insn_reservation "ppce300c3_mtcrf" 1
150+ (and (eq_attr "type" "mtcr")
151+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
152+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
153+
154+;; Mtjmpr
155+(define_insn_reservation "ppce300c3_mtjmpr" 1
156+ (and (eq_attr "type" "mtjmpr,mfjmpr")
157+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
158+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_sru_stage0+ppce300c3_retire")
159+
160+;; Float point instructions
161+(define_insn_reservation "ppce300c3_fpcompare" 3
162+ (and (eq_attr "type" "fpcompare")
163+ (eq_attr "cpu" "ppce300c3"))
164+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
165+
166+(define_insn_reservation "ppce300c3_fp" 3
167+ (and (eq_attr "type" "fp")
168+ (eq_attr "cpu" "ppce300c3"))
169+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,nothing,ppce300c3_retire")
170+
171+(define_insn_reservation "ppce300c3_dmul" 4
172+ (and (eq_attr "type" "dmul")
173+ (eq_attr "cpu" "ppce300c3"))
174+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu,nothing,ppce300c3_retire")
175+
176+; Divides are not pipelined
177+(define_insn_reservation "ppce300c3_sdiv" 18
178+ (and (eq_attr "type" "sdiv")
179+ (eq_attr "cpu" "ppce300c3"))
180+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*17")
181+
182+(define_insn_reservation "ppce300c3_ddiv" 33
183+ (and (eq_attr "type" "ddiv")
184+ (eq_attr "cpu" "ppce300c3"))
185+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_fpu,ppce300c3_fpu*32")
186+
187+;; Loads
188+(define_insn_reservation "ppce300c3_load" 2
189+ (and (eq_attr "type" "load,load_ext,load_ext_u,load_ext_ux,load_ux,load_u")
190+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
191+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
192+
193+(define_insn_reservation "ppce300c3_fpload" 2
194+ (and (eq_attr "type" "fpload,fpload_ux,fpload_u")
195+ (eq_attr "cpu" "ppce300c3"))
196+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
197+
198+;; Stores.
199+(define_insn_reservation "ppce300c3_store" 2
200+ (and (eq_attr "type" "store,store_ux,store_u")
201+ (ior (eq_attr "cpu" "ppce300c2") (eq_attr "cpu" "ppce300c3")))
202+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
203+
204+(define_insn_reservation "ppce300c3_fpstore" 2
205+ (and (eq_attr "type" "fpstore,fpstore_ux,fpstore_u")
206+ (eq_attr "cpu" "ppce300c3"))
207+ "ppce300c3_decode,ppce300c3_issue+ppce300c3_lsu,ppce300c3_retire")
208Index: gcc-4.3.1/gcc/config/rs6000/rs6000.c
209===================================================================
210--- gcc-4.3.1.orig/gcc/config/rs6000/rs6000.c 2008-08-23 16:49:39.000000000 -0700
211+++ gcc-4.3.1/gcc/config/rs6000/rs6000.c 2008-08-23 16:54:25.000000000 -0700
212@@ -669,6 +669,21 @@ struct processor_costs ppc8540_cost = {
213 1, /* prefetch streams /*/
214 };
215
216+/* Instruction costs on E300C2 and E300C3 cores. */
217+static const
218+struct processor_costs ppce300c2c3_cost = {
219+ COSTS_N_INSNS (4), /* mulsi */
220+ COSTS_N_INSNS (4), /* mulsi_const */
221+ COSTS_N_INSNS (4), /* mulsi_const9 */
222+ COSTS_N_INSNS (4), /* muldi */
223+ COSTS_N_INSNS (19), /* divsi */
224+ COSTS_N_INSNS (19), /* divdi */
225+ COSTS_N_INSNS (3), /* fp */
226+ COSTS_N_INSNS (4), /* dmul */
227+ COSTS_N_INSNS (18), /* sdiv */
228+ COSTS_N_INSNS (33), /* ddiv */
229+};
230+
231 /* Instruction costs on POWER4 and POWER5 processors. */
232 static const
233 struct processor_costs power4_cost = {
234@@ -1420,6 +1435,8 @@ rs6000_override_options (const char *def
235 {"8540", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN},
236 /* 8548 has a dummy entry for now. */
237 {"8548", PROCESSOR_PPC8540, POWERPC_BASE_MASK | MASK_STRICT_ALIGN},
238+ {"e300c2", PROCESSOR_PPCE300C2, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
239+ {"e300c3", PROCESSOR_PPCE300C3, POWERPC_BASE_MASK},
240 {"860", PROCESSOR_MPCCORE, POWERPC_BASE_MASK | MASK_SOFT_FLOAT},
241 {"970", PROCESSOR_POWER4,
242 POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64},
243@@ -1845,6 +1862,11 @@ rs6000_override_options (const char *def
244 rs6000_cost = &ppc8540_cost;
245 break;
246
247+ case PROCESSOR_PPCE300C2:
248+ case PROCESSOR_PPCE300C3:
249+ rs6000_cost = &ppce300c2c3_cost;
250+ break;
251+
252 case PROCESSOR_POWER4:
253 case PROCESSOR_POWER5:
254 rs6000_cost = &power4_cost;
255@@ -18606,6 +18628,8 @@ rs6000_issue_rate (void)
256 case CPU_PPC7400:
257 case CPU_PPC8540:
258 case CPU_CELL:
259+ case CPU_PPCE300C2:
260+ case CPU_PPCE300C3:
261 return 2;
262 case CPU_RIOS2:
263 case CPU_PPC604:
264Index: gcc-4.3.1/gcc/config/rs6000/rs6000.h
265===================================================================
266--- gcc-4.3.1.orig/gcc/config/rs6000/rs6000.h 2008-01-26 09:18:35.000000000 -0800
267+++ gcc-4.3.1/gcc/config/rs6000/rs6000.h 2008-08-23 16:55:30.000000000 -0700
268@@ -117,6 +117,8 @@
269 %{mcpu=G5: -mpower4 -maltivec} \
270 %{mcpu=8540: -me500} \
271 %{mcpu=8548: -me500} \
272+%{mcpu=e300c2: -mppc} \
273+%{mcpu=e300c3: -mppc -mpmr} \
274 %{maltivec: -maltivec} \
275 -many"
276
277@@ -262,6 +264,8 @@ enum processor_type
278 PROCESSOR_PPC7400,
279 PROCESSOR_PPC7450,
280 PROCESSOR_PPC8540,
281+ PROCESSOR_PPCE300C2,
282+ PROCESSOR_PPCE300C3,
283 PROCESSOR_POWER4,
284 PROCESSOR_POWER5,
285 PROCESSOR_POWER6,
286Index: gcc-4.3.1/gcc/config/rs6000/rs6000.md
287===================================================================
288--- gcc-4.3.1.orig/gcc/config/rs6000/rs6000.md 2008-02-13 16:14:45.000000000 -0800
289+++ gcc-4.3.1/gcc/config/rs6000/rs6000.md 2008-08-23 16:57:29.000000000 -0700
290@@ -133,7 +133,7 @@
291 ;; Processor type -- this attribute must exactly match the processor_type
292 ;; enumeration in rs6000.h.
293
294-(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5,power6,cell"
295+(define_attr "cpu" "rios1,rios2,rs64a,mpccore,ppc403,ppc405,ppc440,ppc601,ppc603,ppc604,ppc604e,ppc620,ppc630,ppc750,ppc7400,ppc7450,ppc8540,power4,power5,power6,cell,ppce300c2,ppce300c3"
296 (const (symbol_ref "rs6000_cpu_attr")))
297
298
299@@ -166,6 +166,7 @@
300 (include "7xx.md")
301 (include "7450.md")
302 (include "8540.md")
303+(include "e300c2c3.md")
304 (include "power4.md")
305 (include "power5.md")
306 (include "power6.md")
307Index: gcc-4.3.1/gcc/config.gcc
308===================================================================
309--- gcc-4.3.1.orig/gcc/config.gcc 2008-08-23 16:49:43.000000000 -0700
310+++ gcc-4.3.1/gcc/config.gcc 2008-08-23 17:03:55.000000000 -0700
311@@ -3144,7 +3144,7 @@ case "${target}" in
312 | rios | rios1 | rios2 | rsc | rsc1 | rs64a \
313 | 401 | 403 | 405 | 405fp | 440 | 440fp | 505 \
314 | 601 | 602 | 603 | 603e | ec603e | 604 \
315- | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 \
316+ | 604e | 620 | 630 | 740 | 750 | 7400 | 7450 | e300c[23] \
317 | 854[08] | 801 | 821 | 823 | 860 | 970 | G3 | G4 | G5 | cell)
318 # OK
319 ;;
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
new file mode 100644
index 000000000..f33e6c1ea
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
@@ -0,0 +1,31 @@
1---
2 configure | 2 +-
3 configure.ac | 2 +-
4 2 files changed, 2 insertions(+), 2 deletions(-)
5
6Index: gcc-4.3.1/configure.ac
7===================================================================
8--- gcc-4.3.1.orig/configure.ac 2008-07-21 12:29:18.000000000 -0700
9+++ gcc-4.3.1/configure.ac 2008-07-21 12:29:35.000000000 -0700
10@@ -2352,7 +2352,7 @@ fi
11 # for target_alias and gcc doesn't manage it consistently.
12 target_configargs="--cache-file=./config.cache ${target_configargs}"
13
14-FLAGS_FOR_TARGET=
15+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
16 case " $target_configdirs " in
17 *" newlib "*)
18 case " $target_configargs " in
19Index: gcc-4.3.1/configure
20===================================================================
21--- gcc-4.3.1.orig/configure 2008-07-21 12:29:48.000000000 -0700
22+++ gcc-4.3.1/configure 2008-07-21 12:29:59.000000000 -0700
23@@ -5841,7 +5841,7 @@ fi
24 # for target_alias and gcc doesn't manage it consistently.
25 target_configargs="--cache-file=./config.cache ${target_configargs}"
26
27-FLAGS_FOR_TARGET=
28+FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
29 case " $target_configdirs " in
30 *" newlib "*)
31 case " $target_configargs " in
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.5.0_to_svn_162697.patch.bz2 b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.5.0_to_svn_162697.patch.bz2
new file mode 100644
index 000000000..d37a2c032
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-4.5.0_to_svn_162697.patch.bz2
Binary files differ
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-arm-volatile-bitfield-fix.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-arm-volatile-bitfield-fix.patch
new file mode 100644
index 000000000..d5a31d19d
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-arm-volatile-bitfield-fix.patch
@@ -0,0 +1,103 @@
1Date: Mon, 22 Nov 2010 13:28:54 +0000
2From: Julian Brown <julian at codesourcery dot com>
3To: gcc-patches at gcc dot gnu dot org
4Cc: DJ Delorie <dj at redhat dot com>
5Subject: [PATCH] Volatile bitfields vs. inline asm memory constraints
6Message-ID: <20101122132854.0aca431a@rex.config>
7Mime-Version: 1.0
8Content-Type: multipart/mixed; boundary="MP_/ONpW806RnQ1ziaYj7_Y5E27"
9X-IsSubscribed: yes
10Mailing-List: contact gcc-patches-help at gcc dot gnu dot org; run by ezmlm
11Precedence: bulk
12List-Id: <gcc-patches.gcc.gnu.org>
13List-Archive: <http://gcc.gnu.org/ml/gcc-patches/>
14List-Post: <mailto:gcc-patches at gcc dot gnu dot org>
15List-Help: <mailto:gcc-patches-help at gcc dot gnu dot org>
16Sender: gcc-patches-owner at gcc dot gnu dot org
17Delivered-To: mailing list gcc-patches at gcc dot gnu dot org
18
19
20
21Hi,
22
23This patch fixes the issue in the (Launchpad, not GCC) bug tracker:
24
25https://bugs.launchpad.net/gcc-linaro/+bug/675347
26
27The problem was introduced by the patch from DJ to honour volatile
28bitfield types:
29
30http://gcc.gnu.org/ml/gcc-patches/2010-06/msg01167.html
31
32but not exposed (on ARM) until the option was made the default (on the
33Linaro branch) -- it's not yet the default on mainline.
34
35The issue is as follows: after DJ's patch and with
36-fstrict-volatile-bitfields, in expr.c:expand_expr_real_1, the if
37condition with the comment "In cases where an aligned union has an
38unaligned object as a field, we might be extracting a BLKmode value
39from an integer-mode (e.g., SImode) object [...]" triggers for a normal
40(non-bitfield) volatile field of a struct/class.
41
42But, this appears to be over-eager: in the particular case mentioned
43above, when expanding a "volatile int" struct field used as a memory
44constraint for an inline asm, we end up with something which is no
45longer addressable (I think because of the actions of
46extract_bit_field). So, compilation aborts.
47
48My proposed fix is to restrict the conditional by only making it execute
49for -fstrict-volatile-bitfields only for non-naturally-aligned accesses:
50this appears to work (fixes test in question, and no regressions for
51cross to ARM Linux, gcc/g++/libstdc++, with -fstrict-volatile-bitfields
52turned on), but I don't know if there will be unintended consequences.
53DJ, does it look sane to you?
54
55Incidentally the constraints in the inline asm in the Launchpad
56testcase might be slightly dubious (attempting to force (mem (reg)) by
57using both "+m" (var) and "r" (&var) constraints), but replacing
58them with e.g.:
59
60 asm volatile("0:\n"
61 "ldrex %[newValue], %[_q_value]\n"
62 "sub %[newValue], %[newValue], #1\n"
63 "strex %[result], %[newValue], %[_q_value]\n"
64 "teq %[result], #0\n"
65 "bne 0b\n"
66 : [newValue] "=&r" (newValue),
67 [result] "=&r" (result)
68 : [_q_value] "Q" (_q_value)
69 : "cc", "memory");
70
71still leads to a warning (not an error) with trunk and
72-fstrict-volatile-bitfields:
73
74atomic-changed.cc:24:35: warning: use of memory input without lvalue in
75asm operand 2 is deprecated [enabled by default]
76
77The warning goes away with the attached patch. So, I don't think the
78problem is purely that the original inline asm is invalid.
79
80OK to apply, or any comments?
81
82Julian
83
84ChangeLog
85
86 gcc/
87 * expr.c (expand_expr_real_1): Only use BLKmode for volatile
88 accesses which are not naturally aligned.
89
90Index: gcc-4_5-branch/gcc/expr.c
91===================================================================
92--- gcc-4_5-branch.orig/gcc/expr.c 2010-12-23 00:42:11.690101002 -0800
93+++ gcc-4_5-branch/gcc/expr.c 2010-12-24 15:07:39.400101000 -0800
94@@ -9029,7 +9029,8 @@
95 && modifier != EXPAND_INITIALIZER)
96 /* If the field is volatile, we always want an aligned
97 access. */
98- || (volatilep && flag_strict_volatile_bitfields > 0)
99+ || (volatilep && flag_strict_volatile_bitfields > 0
100+ && (bitpos % GET_MODE_ALIGNMENT (mode) != 0))
101 /* If the field isn't aligned enough to fetch as a memref,
102 fetch it as a bit field. */
103 || (mode1 != BLKmode
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-armv4-pass-fix-v4bx-to-ld.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-armv4-pass-fix-v4bx-to-ld.patch
new file mode 100644
index 000000000..5d1a033a9
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-armv4-pass-fix-v4bx-to-ld.patch
@@ -0,0 +1,29 @@
1The LINK_SPEC for linux gets overwritten by linux-eabi.h which
2means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
3the option is not passed to linker when chosing march=armv4
4This patch redefines this in linux-eabi.h and reinserts it
5for eabi defaulting toolchains.
6
7We might want to send it upstream
8
9-Khem
10Index: gcc-4.5/gcc/config/arm/linux-eabi.h
11===================================================================
12--- gcc-4.5.orig/gcc/config/arm/linux-eabi.h
13+++ gcc-4.5/gcc/config/arm/linux-eabi.h
14@@ -63,10 +63,14 @@
15 #undef GLIBC_DYNAMIC_LINKER
16 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
17
18+/* For armv4 we pass --fix-v4bx to linker to support EABI */
19+#undef TARGET_FIX_V4BX_SPEC
20+#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}"
21+
22 /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
23 use the GNU/Linux version, not the generic BPABI version. */
24 #undef LINK_SPEC
25-#define LINK_SPEC LINUX_TARGET_LINK_SPEC BE8_LINK_SPEC
26+#define LINK_SPEC LINUX_TARGET_LINK_SPEC BE8_LINK_SPEC TARGET_FIX_V4BX_SPEC
27
28 /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
29 do not use -lfloat. */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-flags-for-build.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-flags-for-build.patch
new file mode 100644
index 000000000..51892855a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-flags-for-build.patch
@@ -0,0 +1,178 @@
1Index: gcc-4.5/Makefile.def
2===================================================================
3--- gcc-4.5.orig/Makefile.def
4+++ gcc-4.5/Makefile.def
5@@ -240,6 +240,7 @@ flags_to_pass = { flag= AWK ; };
6 flags_to_pass = { flag= BISON ; };
7 flags_to_pass = { flag= CC_FOR_BUILD ; };
8 flags_to_pass = { flag= CFLAGS_FOR_BUILD ; };
9+flags_to_pass = { flag= CPPFLAGS_FOR_BUILD ; };
10 flags_to_pass = { flag= CXX_FOR_BUILD ; };
11 flags_to_pass = { flag= EXPECT ; };
12 flags_to_pass = { flag= FLEX ; };
13Index: gcc-4.5/gcc/Makefile.in
14===================================================================
15--- gcc-4.5.orig/gcc/Makefile.in
16+++ gcc-4.5/gcc/Makefile.in
17@@ -766,7 +766,7 @@ BUILD_LINKERFLAGS = $(BUILD_CFLAGS)
18
19 # Native linker and preprocessor flags. For x-fragment overrides.
20 BUILD_LDFLAGS=@BUILD_LDFLAGS@
21-BUILD_CPPFLAGS=$(ALL_CPPFLAGS)
22+BUILD_CPPFLAGS=$(INCLUDES) @BUILD_CPPFLAGS@ $(X_CPPFLAGS)
23
24 # Actual name to use when installing a native compiler.
25 GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
26Index: gcc-4.5/gcc/configure.ac
27===================================================================
28--- gcc-4.5.orig/gcc/configure.ac
29+++ gcc-4.5/gcc/configure.ac
30@@ -1798,16 +1798,18 @@ AC_SUBST(inhibit_libc)
31 # Also, we cannot run fixincludes.
32
33 # These are the normal (build=host) settings:
34-CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
35-BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
36-BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
37-STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
38+CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
39+BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
40+BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
41+BUILD_CPPFLAGS='$(ALL_CPPFLAGS)' AC_SUBST(BUILD_CPPFLAGS)
42+STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
43
44 # And these apply if build != host, or we are generating coverage data
45 if test x$build != x$host || test "x$coverage_flags" != x
46 then
47 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
48 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
49+ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
50 fi
51
52 # Expand extra_headers to include complete path.
53Index: gcc-4.5/Makefile.in
54===================================================================
55--- gcc-4.5.orig/Makefile.in
56+++ gcc-4.5/Makefile.in
57@@ -333,6 +333,7 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
58 AS_FOR_BUILD = @AS_FOR_BUILD@
59 CC_FOR_BUILD = @CC_FOR_BUILD@
60 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
61+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
62 CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
63 CXX_FOR_BUILD = @CXX_FOR_BUILD@
64 DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
65@@ -662,6 +663,7 @@ BASE_FLAGS_TO_PASS = \
66 "BISON=$(BISON)" \
67 "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
68 "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
69+ "CPPFLAGS_FOR_BUILD=$(CPPFLAGS_FOR_BUILD)" \
70 "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
71 "EXPECT=$(EXPECT)" \
72 "FLEX=$(FLEX)" \
73Index: gcc-4.5/gcc/configure
74===================================================================
75--- gcc-4.5.orig/gcc/configure
76+++ gcc-4.5/gcc/configure
77@@ -707,6 +707,7 @@ SED
78 LIBTOOL
79 collect2
80 STMP_FIXINC
81+BUILD_CPPFLAGS
82 BUILD_LDFLAGS
83 BUILD_CFLAGS
84 CC_FOR_BUILD
85@@ -10982,6 +10983,7 @@ fi
86 CC_FOR_BUILD='$(CC)'
87 BUILD_CFLAGS='$(ALL_CFLAGS)'
88 BUILD_LDFLAGS='$(LDFLAGS)'
89+BUILD_CPPFLAGS='$(ALL_CPPFLAGS)'
90 STMP_FIXINC=stmp-fixinc
91
92 # And these apply if build != host, or we are generating coverage data
93@@ -10989,6 +10991,7 @@ if test x$build != x$host || test "x$cov
94 then
95 BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
96 BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
97+ BUILD_CPPFLAGS='$(CPPFLAGS_FOR_BUILD)'
98 fi
99
100 # Expand extra_headers to include complete path.
101@@ -17108,7 +17111,7 @@ else
102 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
103 lt_status=$lt_dlunknown
104 cat > conftest.$ac_ext <<_LT_EOF
105-#line 17111 "configure"
106+#line 17114 "configure"
107 #include "confdefs.h"
108
109 #if HAVE_DLFCN_H
110@@ -17214,7 +17217,7 @@ else
111 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
112 lt_status=$lt_dlunknown
113 cat > conftest.$ac_ext <<_LT_EOF
114-#line 17217 "configure"
115+#line 17220 "configure"
116 #include "confdefs.h"
117
118 #if HAVE_DLFCN_H
119Index: gcc-4.5/Makefile.tpl
120===================================================================
121--- gcc-4.5.orig/Makefile.tpl
122+++ gcc-4.5/Makefile.tpl
123@@ -336,6 +336,7 @@ AR_FOR_BUILD = @AR_FOR_BUILD@
124 AS_FOR_BUILD = @AS_FOR_BUILD@
125 CC_FOR_BUILD = @CC_FOR_BUILD@
126 CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
127+CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
128 CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
129 CXX_FOR_BUILD = @CXX_FOR_BUILD@
130 DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
131Index: gcc-4.5/configure
132===================================================================
133--- gcc-4.5.orig/configure
134+++ gcc-4.5/configure
135@@ -651,6 +651,7 @@ GCJ_FOR_BUILD
136 DLLTOOL_FOR_BUILD
137 CXX_FOR_BUILD
138 CXXFLAGS_FOR_BUILD
139+CPPFLAGS_FOR_BUILD
140 CFLAGS_FOR_BUILD
141 CC_FOR_BUILD
142 AS_FOR_BUILD
143@@ -8036,6 +8037,7 @@ esac
144 # our build compiler if desired.
145 if test x"${build}" = x"${host}" ; then
146 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
147+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
148 CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
149 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
150 fi
151@@ -8101,6 +8103,7 @@ done
152
153
154
155+
156
157
158
159Index: gcc-4.5/configure.ac
160===================================================================
161--- gcc-4.5.orig/configure.ac
162+++ gcc-4.5/configure.ac
163@@ -3089,6 +3089,7 @@ esac
164 # our build compiler if desired.
165 if test x"${build}" = x"${host}" ; then
166 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
167+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
168 CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
169 LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
170 fi
171@@ -3155,6 +3156,7 @@ AC_SUBST(AR_FOR_BUILD)
172 AC_SUBST(AS_FOR_BUILD)
173 AC_SUBST(CC_FOR_BUILD)
174 AC_SUBST(CFLAGS_FOR_BUILD)
175+AC_SUBST(CPPFLAGS_FOR_BUILD)
176 AC_SUBST(CXXFLAGS_FOR_BUILD)
177 AC_SUBST(CXX_FOR_BUILD)
178 AC_SUBST(DLLTOOL_FOR_BUILD)
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-ice-hack.dpatch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-ice-hack.dpatch
new file mode 100644
index 000000000..84c5ef2eb
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-ice-hack.dpatch
@@ -0,0 +1,331 @@
1#! /bin/sh -e
2
3# DP: Retry the build on an ice, save the calling options and preprocessed
4# DP: source when the ice is reproducible.
5
6dir=
7if [ $# -eq 3 -a "$2" = '-d' ]; then
8 pdir="-d $3"
9 dir="$3/"
10elif [ $# -ne 1 ]; then
11 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
12 exit 1
13fi
14case "$1" in
15 -patch)
16 patch $pdir -f --no-backup-if-mismatch -p0 < $0
17 ;;
18 -unpatch)
19 patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
20 ;;
21 *)
22 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
23 exit 1
24esac
25exit 0
26
272004-01-23 Jakub Jelinek <jakub@redhat.com>
28
29 * system.h (ICE_EXIT_CODE): Define.
30 * gcc.c (execute): Don't free first string early, but at the end
31 of the function. Call retry_ice if compiler exited with
32 ICE_EXIT_CODE.
33 (retry_ice): New function.
34 * diagnostic.c (diagnostic_count_diagnostic,
35 diagnostic_action_after_output, error_recursion): Exit with
36 ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
37
38--- gcc/diagnostic.c.orig 2007-09-30 10:48:13.000000000 +0000
39+++ gcc/diagnostic.c 2007-09-30 10:49:57.000000000 +0000
40@@ -244,7 +244,7 @@
41 fnotice (stderr, "Please submit a full bug report,\n"
42 "with preprocessed source if appropriate.\n"
43 "See %s for instructions.\n", bug_report_url);
44- exit (ICE_EXIT_CODE);
45+ exit (FATAL_EXIT_CODE);
46
47 case DK_FATAL:
48 if (context->abort_on_error)
49--- gcc/gcc.c.orig 2007-09-30 10:48:13.000000000 +0000
50+++ gcc/gcc.c 2007-09-30 10:48:39.000000000 +0000
51@@ -357,6 +357,9 @@
52 #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
53 static const char *convert_filename (const char *, int, int);
54 #endif
55+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
56+static void retry_ice (const char *prog, const char **argv);
57+#endif
58
59 static const char *getenv_spec_function (int, const char **);
60 static const char *if_exists_spec_function (int, const char **);
61@@ -2999,7 +3002,7 @@
62 }
63 }
64
65- if (string != commands[i].prog)
66+ if (i && string != commands[i].prog)
67 free (CONST_CAST (char *, string));
68 }
69
70@@ -3056,6 +3059,16 @@
71 else if (WIFEXITED (status)
72 && WEXITSTATUS (status) >= MIN_FATAL_STATUS)
73 {
74+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
75+ /* For ICEs in cc1, cc1obj, cc1plus see if it is
76+ reproducible or not. */
77+ char *p;
78+ if (WEXITSTATUS (status) == ICE_EXIT_CODE
79+ && i == 0
80+ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
81+ && ! strncmp (p + 1, "cc1", 3))
82+ retry_ice (commands[0].prog, commands[0].argv);
83+#endif
84 if (WEXITSTATUS (status) > greatest_status)
85 greatest_status = WEXITSTATUS (status);
86 ret_code = -1;
87@@ -3076,6 +3089,9 @@
88 }
89 }
90
91+ if (commands[0].argv[0] != commands[0].prog)
92+ free ((PTR) commands[0].argv[0]);
93+
94 return ret_code;
95 }
96 }
97@@ -6016,6 +6032,224 @@
98 switches[switchnum].validated = 1;
99 }
100
101+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
102+#define RETRY_ICE_ATTEMPTS 2
103+
104+static void
105+retry_ice (const char *prog, const char **argv)
106+{
107+ int nargs, out_arg = -1, quiet = 0, attempt;
108+ int pid, retries, sleep_interval;
109+ const char **new_argv;
110+ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
111+
112+ if (input_filename == NULL || ! strcmp (input_filename, "-"))
113+ return;
114+
115+ for (nargs = 0; argv[nargs] != NULL; ++nargs)
116+ /* Only retry compiler ICEs, not preprocessor ones. */
117+ if (! strcmp (argv[nargs], "-E"))
118+ return;
119+ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
120+ {
121+ if (out_arg == -1)
122+ out_arg = nargs;
123+ else
124+ return;
125+ }
126+ /* If the compiler is going to output any time information,
127+ it might vary between invocations. */
128+ else if (! strcmp (argv[nargs], "-quiet"))
129+ quiet = 1;
130+ else if (! strcmp (argv[nargs], "-ftime-report"))
131+ return;
132+
133+ if (out_arg == -1 || !quiet)
134+ return;
135+
136+ memset (temp_filenames, '\0', sizeof (temp_filenames));
137+ new_argv = alloca ((nargs + 3) * sizeof (const char *));
138+ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
139+ new_argv[nargs++] = "-frandom-seed=0";
140+ new_argv[nargs] = NULL;
141+ if (new_argv[out_arg][2] == '\0')
142+ new_argv[out_arg + 1] = "-";
143+ else
144+ new_argv[out_arg] = "-o-";
145+
146+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
147+ {
148+ int fd = -1;
149+ int status;
150+
151+ temp_filenames[attempt * 2] = make_temp_file (".out");
152+ temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
153+
154+ if (attempt == RETRY_ICE_ATTEMPTS)
155+ {
156+ int i;
157+ int fd1, fd2;
158+ struct stat st1, st2;
159+ size_t n, len;
160+ char *buf;
161+
162+ buf = xmalloc (8192);
163+
164+ for (i = 0; i < 2; ++i)
165+ {
166+ fd1 = open (temp_filenames[i], O_RDONLY);
167+ fd2 = open (temp_filenames[2 + i], O_RDONLY);
168+
169+ if (fd1 < 0 || fd2 < 0)
170+ {
171+ i = -1;
172+ close (fd1);
173+ close (fd2);
174+ break;
175+ }
176+
177+ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
178+ {
179+ i = -1;
180+ close (fd1);
181+ close (fd2);
182+ break;
183+ }
184+
185+ if (st1.st_size != st2.st_size)
186+ {
187+ close (fd1);
188+ close (fd2);
189+ break;
190+ }
191+
192+ len = 0;
193+ for (n = st1.st_size; n; n -= len)
194+ {
195+ len = n;
196+ if (len > 4096)
197+ len = 4096;
198+
199+ if (read (fd1, buf, len) != (int) len
200+ || read (fd2, buf + 4096, len) != (int) len)
201+ {
202+ i = -1;
203+ break;
204+ }
205+
206+ if (memcmp (buf, buf + 4096, len) != 0)
207+ break;
208+ }
209+
210+ close (fd1);
211+ close (fd2);
212+
213+ if (n)
214+ break;
215+ }
216+
217+ free (buf);
218+ if (i == -1)
219+ break;
220+
221+ if (i != 2)
222+ {
223+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
224+ break;
225+ }
226+
227+ fd = open (temp_filenames[attempt * 2], O_RDWR);
228+ if (fd < 0)
229+ break;
230+ write (fd, "//", 2);
231+ for (i = 0; i < nargs; i++)
232+ {
233+ write (fd, " ", 1);
234+ write (fd, new_argv[i], strlen (new_argv[i]));
235+ }
236+ write (fd, "\n", 1);
237+ new_argv[nargs] = "-E";
238+ new_argv[nargs + 1] = NULL;
239+ }
240+
241+ /* Fork a subprocess; wait and retry if it fails. */
242+ sleep_interval = 1;
243+ pid = -1;
244+ for (retries = 0; retries < 4; retries++)
245+ {
246+ pid = fork ();
247+ if (pid >= 0)
248+ break;
249+ sleep (sleep_interval);
250+ sleep_interval *= 2;
251+ }
252+
253+ if (pid < 0)
254+ break;
255+ else if (pid == 0)
256+ {
257+ if (attempt != RETRY_ICE_ATTEMPTS)
258+ fd = open (temp_filenames[attempt * 2], O_RDWR);
259+ if (fd < 0)
260+ exit (-1);
261+ if (fd != 1)
262+ {
263+ close (1);
264+ dup (fd);
265+ close (fd);
266+ }
267+
268+ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
269+ if (fd < 0)
270+ exit (-1);
271+ if (fd != 2)
272+ {
273+ close (2);
274+ dup (fd);
275+ close (fd);
276+ }
277+
278+ if (prog == new_argv[0])
279+ execvp (prog, (char *const *) new_argv);
280+ else
281+ execv (new_argv[0], (char *const *) new_argv);
282+ exit (-1);
283+ }
284+
285+ if (waitpid (pid, &status, 0) < 0)
286+ break;
287+
288+ if (attempt < RETRY_ICE_ATTEMPTS
289+ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
290+ {
291+ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
292+ break;
293+ }
294+ else if (attempt == RETRY_ICE_ATTEMPTS)
295+ {
296+ close (fd);
297+ if (WIFEXITED (status)
298+ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
299+ {
300+ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n",
301+ temp_filenames[attempt * 2]);
302+ /* Make sure it is not deleted. */
303+ free (temp_filenames[attempt * 2]);
304+ temp_filenames[attempt * 2] = NULL;
305+ break;
306+ }
307+ }
308+ }
309+
310+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
311+ if (temp_filenames[attempt])
312+ {
313+ unlink (temp_filenames[attempt]);
314+ free (temp_filenames[attempt]);
315+ }
316+}
317+#endif
318+
319 /* Search for a file named NAME trying various prefixes including the
320 user's -B prefix and some standard ones.
321 Return the absolute file name found. If nothing is found, return NAME. */
322--- gcc/Makefile.in.orig 2007-09-30 10:48:13.000000000 +0000
323+++ gcc/Makefile.in 2007-09-30 10:48:39.000000000 +0000
324@@ -192,6 +192,7 @@
325 build/gengtype-lex.o-warn = -Wno-error
326 # SYSCALLS.c misses prototypes
327 SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error
328+build/gcc.o-warn = -Wno-error
329
330 # All warnings have to be shut off in stage1 if the compiler used then
331 # isn't gcc; configure determines that. WARN_CFLAGS will be either
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-dir-extend.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-dir-extend.patch
new file mode 100644
index 000000000..d1712071a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-dir-extend.patch
@@ -0,0 +1,24 @@
1Add /sw/include and /opt/include based on the original
2zecke-no-host-includes.patch patch. The original patch checked for
3/usr/include, /sw/include and /opt/include and then triggered a failure and
4aborted.
5
6Instead, we add the two missing items to the current scan. If the user
7wants this to be a failure, they can add "-Werror=poison-system-directories".
8
9Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
10
11diff -ur gcc-4.5.0.orig/gcc/incpath.c gcc-4.5.0/gcc/incpath.c
12--- gcc-4.5.0.orig/gcc/incpath.c 2010-09-29 14:58:31.358975524 -0500
13+++ gcc-4.5.0/gcc/incpath.c 2010-09-29 15:08:02.065975516 -0500
14@@ -363,7 +363,9 @@
15 {
16 if ((!strncmp (p->name, "/usr/include", 12))
17 || (!strncmp (p->name, "/usr/local/include", 18))
18- || (!strncmp (p->name, "/usr/X11R6/include", 18)))
19+ || (!strncmp (p->name, "/usr/X11R6/include", 18))
20+ || (!strncmp (p->name, "/sw/include", 11))
21+ || (!strncmp (p->name, "/opt/include", 12)))
22 warning (OPT_Wpoison_system_directories,
23 "include location \"%s\" is unsafe for "
24 "cross-compilation",
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-parameters.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-parameters.patch
new file mode 100644
index 000000000..3cc7cbad4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-parameters.patch
@@ -0,0 +1,83 @@
1gcc: add poison parameters detection
2
3Add the logic that, if not configured with "--enable-target-optspace",
4gcc will meet error when build target app with "-Os" option.
5This could avoid potential binary crash.
6
7Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
8
9diff --git a/gcc/config.in b/gcc/config.in
10index a9e208f..3004321 100644
11--- a/gcc/config.in
12+++ b/gcc/config.in
13@@ -132,6 +132,12 @@
14 #endif
15
16
17+/* Define to enable target optspace support. */
18+#ifndef USED_FOR_TARGET
19+#undef ENABLE_TARGET_OPTSPACE
20+#endif
21+
22+
23 /* Define if you want all operations on RTL (the basic data structure of the
24 optimizer and back end) to be checked for dynamic type safety at runtime.
25 This is quite expensive. */
26diff --git a/gcc/configure b/gcc/configure
27index 2e022ed..004ec0b 100755
28--- a/gcc/configure
29+++ b/gcc/configure
30@@ -909,6 +909,7 @@ enable_maintainer_mode
31 enable_version_specific_runtime_libs
32 with_slibdir
33 enable_plugin
34+enable_target_optspace
35 '
36 ac_precious_vars='build_alias
37 host_alias
38@@ -25289,6 +25290,13 @@ $as_echo "#define ENABLE_PLUGIN 1" >>confdefs.h
39
40 fi
41
42+if test x"$enable_target_optspace" != x; then :
43+
44+$as_echo "#define ENABLE_TARGET_OPTSPACE 1" >>confdefs.h
45+
46+fi
47+
48+
49 # Configure the subdirectories
50 # AC_CONFIG_SUBDIRS($subdirs)
51
52diff --git a/gcc/configure.ac b/gcc/configure.ac
53index ac4ca70..18ec0aa 100644
54--- a/gcc/configure.ac
55+++ b/gcc/configure.ac
56@@ -4434,6 +4434,11 @@ if test x"$enable_plugin" = x"yes"; then
57 AC_DEFINE(ENABLE_PLUGIN, 1, [Define to enable plugin support.])
58 fi
59
60+AC_SUBST(enable_target_optspace)
61+if test x"$enable_target_optspace" != x; then
62+ AC_DEFINE(ENABLE_TARGET_OPTSPACE, 1, [Define to enable target optspace support.])
63+fi
64+
65 # Configure the subdirectories
66 # AC_CONFIG_SUBDIRS($subdirs)
67
68diff --git a/gcc/opts.c b/gcc/opts.c
69index 139cd26..2fdd96a 100644
70--- a/gcc/opts.c
71+++ b/gcc/opts.c
72@@ -945,6 +945,11 @@ decode_options (unsigned int argc, const char **argv)
73 else
74 set_param_value ("min-crossjump-insns", initial_min_crossjump_insns);
75
76+#ifndef ENABLE_TARGET_OPTSPACE
77+ if (optimize_size == 1)
78+ error ("Do not use -Os option if --enable-target-optspace is not set.");
79+#endif
80+
81 if (first_time_p)
82 {
83 /* Initialize whether `char' is signed. */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-system-directories.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-system-directories.patch
new file mode 100644
index 000000000..04043ff0b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-poison-system-directories.patch
@@ -0,0 +1,201 @@
1 gcc/
2 2008-07-02 Joseph Myers <joseph@codesourcery.com>
3 * c-incpath.c: Include toplev.h.
4 (merge_include_chains): Use warning instead of cpp_error for
5 system directory poisoning diagnostic.
6 * Makefile.in (c-incpath.o): Depend on toplev.h.
7 * gcc.c (LINK_COMMAND_SPEC): Pass
8 --error-poison-system-directories if
9 -Werror=poison-system-directories.
10
11 2007-06-13 Joseph Myers <joseph@codesourcery.com>
12 * common.opt (--Wno-poison-system-directories): New.
13 * doc/invoke.texi (-Wno-poison-system-directories): Document.
14 * c-incpath.c: Include flags.h.
15 (merge_include_chains): Check flag_poison_system_directories.
16 * gcc.c (LINK_COMMAND_SPEC): Pass --no-poison-system-directories
17 to linker if -Wno-poison-system-directories.
18 * Makefile.in (c-incpath.o): Depend on $(FLAGS_H).
19
20 2007-03-20 Daniel Jacobowitz <dan@codesourcery.com>
21 Joseph Myers <joseph@codesourcery.com>
22 * configure.ac (--enable-poison-system-directories): New option.
23 * configure, config.in: Regenerate.
24 * c-incpath.c (merge_include_chains): If
25 ENABLE_POISON_SYSTEM_DIRECTORIES defined, warn for use of
26 /usr/include, /usr/local/include or /usr/X11R6/include.
27
28Index: gcc-4.5.0/gcc/common.opt
29===================================================================
30--- gcc-4.5.0.orig/gcc/common.opt 2010-03-17 20:01:09.000000000 -0700
31+++ gcc-4.5.0/gcc/common.opt 2010-06-25 11:35:39.965383734 -0700
32@@ -152,6 +152,10 @@
33 Common Var(warn_padded) Warning
34 Warn when padding is required to align structure members
35
36+Wpoison-system-directories
37+Common Var(flag_poison_system_directories) Init(1) Warning
38+Warn for -I and -L options using system directories if cross compiling
39+
40 Wshadow
41 Common Var(warn_shadow) Warning
42 Warn when one local variable shadows another
43Index: gcc-4.5.0/gcc/config.in
44===================================================================
45--- gcc-4.5.0.orig/gcc/config.in 2010-04-14 02:30:07.000000000 -0700
46+++ gcc-4.5.0/gcc/config.in 2010-06-25 11:35:39.969383588 -0700
47@@ -132,6 +132,12 @@
48 #endif
49
50
51+/* Define to warn for use of native system header directories */
52+#ifndef USED_FOR_TARGET
53+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
54+#endif
55+
56+
57 /* Define if you want all operations on RTL (the basic data structure of the
58 optimizer and back end) to be checked for dynamic type safety at runtime.
59 This is quite expensive. */
60Index: gcc-4.5.0/gcc/configure.ac
61===================================================================
62--- gcc-4.5.0.orig/gcc/configure.ac 2010-06-25 11:34:01.433382161 -0700
63+++ gcc-4.5.0/gcc/configure.ac 2010-06-25 11:35:39.969383588 -0700
64@@ -4276,6 +4276,16 @@
65 fi)
66 AC_SUBST(slibdir)
67
68+AC_ARG_ENABLE([poison-system-directories],
69+ AS_HELP_STRING([--enable-poison-system-directories],
70+ [warn for use of native system header directories]),,
71+ [enable_poison_system_directories=no])
72+if test "x${enable_poison_system_directories}" = "xyes"; then
73+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
74+ [1],
75+ [Define to warn for use of native system header directories])
76+fi
77+
78 # Substitute configuration variables
79 AC_SUBST(subdirs)
80 AC_SUBST(srcdir)
81Index: gcc-4.5.0/gcc/doc/invoke.texi
82===================================================================
83--- gcc-4.5.0.orig/gcc/doc/invoke.texi 2010-04-06 07:02:22.000000000 -0700
84+++ gcc-4.5.0/gcc/doc/invoke.texi 2010-06-25 11:35:39.992666345 -0700
85@@ -252,6 +252,7 @@
86 -Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol
87 -Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
88 -Wpointer-arith -Wno-pointer-to-int-cast @gol
89+-Wno-poison-system-directories @gol
90 -Wredundant-decls @gol
91 -Wreturn-type -Wsequence-point -Wshadow @gol
92 -Wsign-compare -Wsign-conversion -Wstack-protector @gol
93@@ -3603,6 +3604,14 @@
94 option will @emph{not} warn about unknown pragmas in system
95 headers---for that, @option{-Wunknown-pragmas} must also be used.
96
97+@item -Wno-poison-system-directories
98+@opindex Wno-poison-system-directories
99+Do not warn for @option{-I} or @option{-L} options using system
100+directories such as @file{/usr/include} when cross compiling. This
101+option is intended for use in chroot environments when such
102+directories contain the correct headers and libraries for the target
103+system rather than the host.
104+
105 @item -Wfloat-equal
106 @opindex Wfloat-equal
107 @opindex Wno-float-equal
108Index: gcc-4.5.0/gcc/gcc.c
109===================================================================
110--- gcc-4.5.0.orig/gcc/gcc.c 2010-02-11 04:23:08.000000000 -0800
111+++ gcc-4.5.0/gcc/gcc.c 2010-06-25 11:35:40.009381858 -0700
112@@ -792,6 +792,8 @@
113 %{flto} %{fwhopr} %l " LINK_PIE_SPEC \
114 "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
115 %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
116+ %{Wno-poison-system-directories:--no-poison-system-directories}\
117+ %{Werror=poison-system-directories:--error-poison-system-directories}\
118 %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
119 %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)\
120 %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\
121Index: gcc-4.5.0/gcc/incpath.c
122===================================================================
123--- gcc-4.5.0.orig/gcc/incpath.c 2009-11-25 02:55:54.000000000 -0800
124+++ gcc-4.5.0/gcc/incpath.c 2010-06-25 11:35:40.017209818 -0700
125@@ -353,6 +353,24 @@
126 }
127 fprintf (stderr, _("End of search list.\n"));
128 }
129+
130+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
131+ if (flag_poison_system_directories)
132+ {
133+ struct cpp_dir *p;
134+
135+ for (p = heads[QUOTE]; p; p = p->next)
136+ {
137+ if ((!strncmp (p->name, "/usr/include", 12))
138+ || (!strncmp (p->name, "/usr/local/include", 18))
139+ || (!strncmp (p->name, "/usr/X11R6/include", 18)))
140+ warning (OPT_Wpoison_system_directories,
141+ "include location \"%s\" is unsafe for "
142+ "cross-compilation",
143+ p->name);
144+ }
145+ }
146+#endif
147 }
148
149 /* Use given -I paths for #include "..." but not #include <...>, and
150diff -ur gcc-4.5.0.orig/gcc/Makefile.in gcc-4.5.0/gcc/Makefile.in
151--- gcc-4.5.0.orig/gcc/Makefile.in 2010-09-29 17:13:49.164088845 -0500
152+++ gcc-4.5.0/gcc/Makefile.in 2010-09-29 18:48:19.300178501 -0500
153@@ -1965,7 +1965,7 @@
154
155 incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
156 intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \
157- $(MACHMODE_H)
158+ $(MACHMODE_H) $(FLAGS_H) toplev.h
159
160 c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
161 $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \
162diff -ur gcc-4.5.0.orig/gcc/configure gcc-4.5.0/gcc/configure
163--- gcc-4.5.0.orig/gcc/configure 2010-09-29 14:58:31.702054881 -0500
164+++ gcc-4.5.0/gcc/configure 2010-09-29 18:46:31.486068500 -0500
165@@ -913,6 +913,7 @@
166 enable_maintainer_mode
167 enable_version_specific_runtime_libs
168 with_slibdir
169+enable_poison_system_directories
170 enable_plugin
171 enable_target_optspace
172 '
173@@ -1621,6 +1622,8 @@
174 --enable-version-specific-runtime-libs
175 specify that runtime libraries should be
176 installed in a compiler-specific directory
177+ --enable-poison-system-directories
178+ warn for use of native system header directories
179 --enable-plugin enable plugin support
180
181 Optional Packages:
182@@ -25339,6 +25377,19 @@
183
184
185
186+# Check whether --enable-poison-system-directories was given.
187+if test "${enable_poison_system_directories+set}" = set; then :
188+ enableval=$enable_poison_system_directories;
189+else
190+ enable_poison_system_directories=no
191+fi
192+
193+if test "x${enable_poison_system_directories}" = "xyes"; then
194+
195+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
196+
197+fi
198+
199 # Substitute configuration variables
200
201
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-pr43698-arm-rev-instr.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-pr43698-arm-rev-instr.patch
new file mode 100644
index 000000000..61c883e1f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-pr43698-arm-rev-instr.patch
@@ -0,0 +1,117 @@
1backport http://gcc.gnu.org/viewcvs?view=revision&revision=162404
2from trunk
3
4Which fixes http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43698
5
62010-07-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
7
8 PR target/43698
9 * config/arm/arm.md: Split arm_rev into *arm_rev
10 and *thumb1_rev. Set *arm_rev to be predicable.
11
122010-07-22 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
13
14 PR target/43698
15 * gcc.target/arm/pr43698.c: New test.
16
17
18/scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
19Usage: date [OPTION]... [+FORMAT]
20Display the current time in the given FORMAT.
21
22 -d, --date=STRING display time described by STRING, not `now'
23 -f, --file=DATEFILE like --date once for each line of DATEFILE
24 -R, --rfc-822 output RFC-822 compliant date string
25 -u, --utc, --universal print or set Coordinated Universal Time
26 --help display this help and exit
27date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
28date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
29date is /bin/date
30date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
31date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
32date is /bin/date
33date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
34date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
35date is /bin/date
36date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
37date is /scratch/oe/sysroots/i686-linux/usr/share/quilt/compat/date
38date is /bin/date
39date
40Khem
41Index: gcc-4.5/gcc/config/arm/arm.md
42===================================================================
43--- gcc-4.5.orig/gcc/config/arm/arm.md 2010-07-20 20:31:25.000000000 -0700
44+++ gcc-4.5/gcc/config/arm/arm.md 2010-07-22 14:55:54.303169081 -0700
45@@ -11197,15 +11197,21 @@
46 (set_attr "length" "4")]
47 )
48
49-(define_insn "arm_rev"
50+(define_insn "*arm_rev"
51 [(set (match_operand:SI 0 "s_register_operand" "=r")
52 (bswap:SI (match_operand:SI 1 "s_register_operand" "r")))]
53- "TARGET_EITHER && arm_arch6"
54- "rev\t%0, %1"
55- [(set (attr "length")
56- (if_then_else (eq_attr "is_thumb" "yes")
57- (const_int 2)
58- (const_int 4)))]
59+ "TARGET_32BIT && arm_arch6"
60+ "rev%?\t%0, %1"
61+ [(set_attr "predicable" "yes")
62+ (set_attr "length" "4")]
63+)
64+
65+(define_insn "*thumb1_rev"
66+ [(set (match_operand:SI 0 "s_register_operand" "=l")
67+ (bswap:SI (match_operand:SI 1 "s_register_operand" "l")))]
68+ "TARGET_THUMB1 && arm_arch6"
69+ "rev\t%0, %1"
70+ [(set_attr "length" "2")]
71 )
72
73 (define_expand "arm_legacy_rev"
74Index: gcc-4.5/gcc/testsuite/gcc.target/arm/pr43698.c
75===================================================================
76--- /dev/null 1970-01-01 00:00:00.000000000 +0000
77+++ gcc-4.5/gcc/testsuite/gcc.target/arm/pr43698.c 2010-07-22 14:56:35.406670213 -0700
78@@ -0,0 +1,39 @@
79+/* { dg-do run } */
80+/* { dg-options "-Os -march=armv7-a" } */
81+#include <stdint.h>
82+#include <stdlib.h>
83+
84+
85+char do_reverse_endian = 0;
86+
87+# define bswap_32(x) \
88+ ((((x) & 0xff000000) >> 24) | \
89+ (((x) & 0x00ff0000) >> 8) | \
90+ (((x) & 0x0000ff00) << 8) | \
91+ (((x) & 0x000000ff) << 24))
92+
93+#define EGET(X) \
94+ (__extension__ ({ \
95+ uint64_t __res; \
96+ if (!do_reverse_endian) { __res = (X); \
97+ } else if (sizeof(X) == 4) { __res = bswap_32((X)); \
98+ } \
99+ __res; \
100+ }))
101+
102+void __attribute__((noinline)) X(char **phdr, char **data, int *phoff)
103+{
104+ *phdr = *data + EGET(*phoff);
105+}
106+
107+int main()
108+{
109+ char *phdr;
110+ char *data = (char *)0x40164000;
111+ int phoff = 0x34;
112+ X(&phdr, &data, &phoff);
113+ if (phdr != (char *)0x40164034)
114+ abort ();
115+ exit (0);
116+}
117+
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-scalar-widening-pr45847.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-scalar-widening-pr45847.patch
new file mode 100644
index 000000000..cbe12303e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-scalar-widening-pr45847.patch
@@ -0,0 +1,63 @@
1Hi,
2
3The attached patch fixes Bugzilla 45847
4(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45847). When compiling
5without -mvectorize-with-neon-quad and vectorizing scalar widening
6operations that widen words to double words, there are no corresponding
7vector types for DI scalar types. For this scenario, a call to
8get_vect_type_for_scalar_type() returns NULL and an absent NULL-check
9caused this segfault. The attached patch adds this NULL-check. Also,
10this is consistent with all the other places where a NULL-check follows
11a call to get_vect_type_for_scalar_type() in tree-vect-patterns.c.
12
13Regression tested with arm-linux-gnueabi. OK?
14
15--
16Tejas Belagod
17ARM.
18
19gcc/
20
212010-10-05 Tejas Belagod <tejas.belagod@arm.com>
22
23 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Add NULL
24 check for vectype_out returned by get_vectype_for_scalar_type().
25
26testsuite/
27
282010-10-05 Tejas Belagod <tejas.belagod@arm.com>
29
30 * gcc.dg/vect/pr45847.c: New test.
31
32Index: gcc-4.5/gcc/testsuite/gcc.dg/vect/pr45847.c
33===================================================================
34--- /dev/null
35+++ gcc-4.5/gcc/testsuite/gcc.dg/vect/pr45847.c
36@@ -0,0 +1,15 @@
37+/* { dg-do compile } */
38+
39+
40+long long foo (long long *__restrict a, int *__restrict b, int *__restrict c )
41+{
42+ int i;
43+ long long sum=0;
44+ for (i=0;i<256;i++)
45+ sum += (long long)b[i] * c[i];
46+
47+ return sum;
48+}
49+
50+/* { dg-final { cleanup-tree-dump "vect" } } */
51+
52Index: gcc-4.5/gcc/tree-vect-patterns.c
53===================================================================
54--- gcc-4.5.orig/gcc/tree-vect-patterns.c
55+++ gcc-4.5/gcc/tree-vect-patterns.c
56@@ -411,6 +411,7 @@ vect_recog_widen_mult_pattern (gimple la
57 /* Check target support */
58 vectype = get_vectype_for_scalar_type (half_type0);
59 if (!vectype
60+ || !get_vectype_for_scalar_type (type)
61 || !supportable_widening_operation (WIDEN_MULT_EXPR, last_stmt, vectype,
62 &dummy, &dummy, &dummy_code,
63 &dummy_code, &dummy_int, &dummy_vec))
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-uclibc-locale-ctype_touplow_t.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-uclibc-locale-ctype_touplow_t.patch
new file mode 100644
index 000000000..4f94fc9d6
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc-uclibc-locale-ctype_touplow_t.patch
@@ -0,0 +1,67 @@
1Index: gcc-4.5/libstdc++-v3/config/locale/generic/c_locale.h
2===================================================================
3--- gcc-4.5.orig/libstdc++-v3/config/locale/generic/c_locale.h 2010-06-30 22:30:53.993316002 -0700
4+++ gcc-4.5/libstdc++-v3/config/locale/generic/c_locale.h 2010-06-30 22:31:26.043316001 -0700
5@@ -41,12 +41,17 @@
6
7 #include <clocale>
8 #include <cstddef>
9+#include <features.h>
10+#include <ctype.h>
11
12 #define _GLIBCXX_NUM_CATEGORIES 0
13
14 _GLIBCXX_BEGIN_NAMESPACE(std)
15-
16- typedef int* __c_locale;
17+#ifdef __UCLIBC__
18+ typedef __ctype_touplow_t* __c_locale;
19+#else
20+ typedef int* __c_locale;
21+#endif
22
23 // Convert numeric value of type double and long double to string and
24 // return length of string. If vsnprintf is available use it, otherwise
25Index: gcc-4.5/libstdc++-v3/config/os/gnu-linux/ctype_base.h
26===================================================================
27--- gcc-4.5.orig/libstdc++-v3/config/os/gnu-linux/ctype_base.h 2010-06-30 22:30:54.013316002 -0700
28+++ gcc-4.5/libstdc++-v3/config/os/gnu-linux/ctype_base.h 2010-06-30 22:31:26.053316001 -0700
29@@ -33,14 +33,21 @@
30 */
31
32 // Information as gleaned from /usr/include/ctype.h
33-
34+
35+#include <features.h>
36+#include <ctype.h>
37+
38 _GLIBCXX_BEGIN_NAMESPACE(std)
39
40 /// @brief Base class for ctype.
41 struct ctype_base
42 {
43 // Non-standard typedefs.
44- typedef const int* __to_type;
45+#ifdef __UCLIBC__
46+ typedef const __ctype_touplow_t* __to_type;
47+#else
48+ typedef const int* __to_type;
49+#endif
50
51 // NB: Offsets into ctype<char>::_M_table force a particular size
52 // on the mask type. Because of this, we don't use an enum.
53Index: gcc-4.5/libstdc++-v3/config/locale/generic/c_locale.cc
54===================================================================
55--- gcc-4.5.orig/libstdc++-v3/config/locale/generic/c_locale.cc 2010-06-28 12:12:42.000000000 -0700
56+++ gcc-4.5/libstdc++-v3/config/locale/generic/c_locale.cc 2010-06-30 22:31:26.063316001 -0700
57@@ -256,5 +256,10 @@ _GLIBCXX_END_NAMESPACE
58 #ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
59 #define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
60 extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
61+#ifdef __UCLIBC__
62+// This is because __c_locale is of type __ctype_touplow_t* which is short on uclibc. for glibc its int*
63+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPs, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPs);
64+#else
65 _GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
66+#endif
67 #endif // _GLIBCXX_LONG_DOUBLE_COMPAT
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc_revert_base_version_to_4.5.0.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc_revert_base_version_to_4.5.0.patch
new file mode 100644
index 000000000..5f134ef33
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/gcc_revert_base_version_to_4.5.0.patch
@@ -0,0 +1,9 @@
1the svn patch changed the BASE-VER to 4.5.1, bring it back to 4.5.0
2- Nitin A Kamble nitin.a.kamble@intel.com
3- 2010/07/20
4
5--- gcc-4.5.0/gcc/BASE-VER 2010-07-20 00:57:37.000000000 -0700
6+++ gcc-4.5.0.new/gcc/BASE-VER 2010-07-20 01:06:17.000000000 -0700
7@@ -1 +1 @@
8-4.5.1
9+4.5.0
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch
new file mode 100644
index 000000000..ada36a591
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-emit-__cxa_end_cleanup-in-text.patch
@@ -0,0 +1,40 @@
12010-06-07 Khem Raj <raj.khem@gmail.com>
2
3 * libsupc++/eh_arm.cc (__cxa_end_cleanup): Use .pushsection/.popsection
4 to emit inline assembly into .text section.
5
6Index: gcc-4.5/libstdc++-v3/libsupc++/eh_arm.cc
7===================================================================
8--- gcc-4.5.orig/libstdc++-v3/libsupc++/eh_arm.cc 2010-06-04 23:20:18.000000000 -0700
9+++ gcc-4.5/libstdc++-v3/libsupc++/eh_arm.cc 2010-06-08 11:27:34.247541722 -0700
10@@ -157,22 +157,26 @@ __gnu_end_cleanup(void)
11 // Assembly wrapper to call __gnu_end_cleanup without clobbering r1-r3.
12 // Also push r4 to preserve stack alignment.
13 #ifdef __thumb__
14-asm (".global __cxa_end_cleanup\n"
15+asm (" .pushsection .text.__cxa_end_cleanup\n"
16+" .global __cxa_end_cleanup\n"
17 " .type __cxa_end_cleanup, \"function\"\n"
18 " .thumb_func\n"
19 "__cxa_end_cleanup:\n"
20 " push\t{r1, r2, r3, r4}\n"
21 " bl\t__gnu_end_cleanup\n"
22 " pop\t{r1, r2, r3, r4}\n"
23-" bl\t_Unwind_Resume @ Never returns\n");
24+" bl\t_Unwind_Resume @ Never returns\n"
25+" .popsection\n");
26 #else
27-asm (".global __cxa_end_cleanup\n"
28+asm (" .pushsection .text.__cxa_end_cleanup\n"
29+" .global __cxa_end_cleanup\n"
30 " .type __cxa_end_cleanup, \"function\"\n"
31 "__cxa_end_cleanup:\n"
32 " stmfd\tsp!, {r1, r2, r3, r4}\n"
33 " bl\t__gnu_end_cleanup\n"
34 " ldmfd\tsp!, {r1, r2, r3, r4}\n"
35-" bl\t_Unwind_Resume @ Never returns\n");
36+" bl\t_Unwind_Resume @ Never returns\n"
37+" .popsection\n");
38 #endif
39
40 #endif
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-pic.dpatch b/meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-pic.dpatch
new file mode 100644
index 000000000..70c9e8154
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/libstdc++-pic.dpatch
@@ -0,0 +1,71 @@
1#! /bin/sh -e
2
3# DP: Build and install libstdc++_pic.a library.
4
5dir=
6if [ $# -eq 3 -a "$2" = '-d' ]; then
7 pdir="-d $3"
8 dir="$3/"
9elif [ $# -ne 1 ]; then
10 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
11 exit 1
12fi
13case "$1" in
14 -patch)
15 patch $pdir -f --no-backup-if-mismatch -p0 < $0
16 ;;
17 -unpatch)
18 patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
19 ;;
20 *)
21 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
22 exit 1
23esac
24exit 0
25
26diff -ur libstdc++-v3/src/Makefile.am libstdc++-v3/src/Makefile.am
27--- libstdc++-v3/src/Makefile.am~ 2004-04-16 21:04:05.000000000 +0200
28+++ libstdc++-v3/src/Makefile.am 2004-07-03 20:22:43.000000000 +0200
29@@ -210,6 +210,10 @@
30 $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
31
32
33+install-exec-local:
34+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a
35+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
36+
37 # Added bits to build debug library.
38 if GLIBCXX_BUILD_DEBUG
39 all-local: build_debug
40diff -ur libstdc++-v3/src/Makefile.in libstdc++-v3/src/Makefile.in
41--- libstdc++-v3/src/Makefile.in 2004-07-03 06:41:13.000000000 +0200
42+++ libstdc++-v3/src/Makefile.in 2004-07-03 20:25:05.000000000 +0200
43@@ -611,7 +611,7 @@
44
45 install-data-am: install-data-local
46
47-install-exec-am: install-toolexeclibLTLIBRARIES
48+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
49
50 install-info: install-info-am
51
52@@ -644,6 +644,7 @@
53 distclean-libtool distclean-tags distdir dvi dvi-am html \
54 html-am info info-am install install-am install-data \
55 install-data-am install-data-local install-exec \
56+ install-exec-local \
57 install-exec-am install-info install-info-am install-man \
58 install-strip install-toolexeclibLTLIBRARIES installcheck \
59 installcheck-am installdirs maintainer-clean \
60@@ -729,6 +730,11 @@
61 install_debug:
62 (cd ${debugdir} && $(MAKE) \
63 toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
64+
65+install-exec-local:
66+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o || touch libstdc++_pic.a
67+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
68+
69 # Tell versions [3.59,3.63) of GNU make to not export all variables.
70 # Otherwise a system limit (for SysV at least) may be exceeded.
71 .NOEXPORT:
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99297.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99297.patch
new file mode 100644
index 000000000..bff745dae
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99297.patch
@@ -0,0 +1,207 @@
12010-06-28 Julian Brown <julian@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 Daniel Jacobowitz <dan@codesourcery.com>
6 Joseph Myers <joseph@codesourcery.com>
7
8 gcc/
9 * doc/invoke.texi (-Wno-poison-system-directories): Document.
10 * gcc.c (LINK_COMMAND_SPEC): Pass --no-poison-system-directories
11 if -Wno-poison-system-directories and --error-poison-system-directories
12 if -Werror=poison-system-directories to linker.
13 * incpath.c: Include flags.h. Include toplev.h.
14 (merge_include_chains): If ENABLE_POISON_SYSTEM_DIRECTORIES defined
15 and flag_poison_system_directories is true, warn for use of
16 /usr/include, /usr/local/include or /usr/X11R6/include.
17 * Makefile.in (incpath.o): Depend on $(FLAGS_H) and toplev.h.
18 * common.opt (--Wno-poison-system-directories): New.
19 * configure.ac (--enable-poison-system-directories): New option.
20 * configure: Regenerate.
21 * config.in: Regenerate.
22
23Index: gcc-4.5/gcc/Makefile.in
24===================================================================
25--- gcc-4.5.orig/gcc/Makefile.in 2010-09-23 16:44:12.000000000 -0700
26+++ gcc-4.5/gcc/Makefile.in 2010-09-23 16:46:33.552416860 -0700
27@@ -1969,7 +1969,7 @@ gcc.srcextra: gengtype-lex.c
28
29 incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
30 intl.h prefix.h coretypes.h $(TM_H) cppdefault.h $(TARGET_H) \
31- $(MACHMODE_H)
32+ $(MACHMODE_H) $(FLAGS_H) toplev.h
33
34 c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
35 $(RTL_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) output.h \
36Index: gcc-4.5/gcc/common.opt
37===================================================================
38--- gcc-4.5.orig/gcc/common.opt 2010-07-11 16:14:47.000000000 -0700
39+++ gcc-4.5/gcc/common.opt 2010-09-23 16:46:33.556418045 -0700
40@@ -152,6 +152,10 @@ Wpadded
41 Common Var(warn_padded) Warning
42 Warn when padding is required to align structure members
43
44+Wpoison-system-directories
45+Common Var(flag_poison_system_directories) Init(1)
46+Warn for -I and -L options using system directories if cross compiling
47+
48 Wshadow
49 Common Var(warn_shadow) Warning
50 Warn when one local variable shadows another
51Index: gcc-4.5/gcc/config.in
52===================================================================
53--- gcc-4.5.orig/gcc/config.in 2010-07-11 16:14:46.000000000 -0700
54+++ gcc-4.5/gcc/config.in 2010-09-23 16:46:33.556418045 -0700
55@@ -132,6 +132,12 @@
56 #endif
57
58
59+/* Define to warn for use of native system header directories */
60+#ifndef USED_FOR_TARGET
61+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
62+#endif
63+
64+
65 /* Define if you want all operations on RTL (the basic data structure of the
66 optimizer and back end) to be checked for dynamic type safety at runtime.
67 This is quite expensive. */
68Index: gcc-4.5/gcc/configure
69===================================================================
70--- gcc-4.5.orig/gcc/configure 2010-09-23 16:44:11.000000000 -0700
71+++ gcc-4.5/gcc/configure 2010-09-23 16:46:33.572415719 -0700
72@@ -913,6 +913,7 @@ with_system_zlib
73 enable_maintainer_mode
74 enable_version_specific_runtime_libs
75 with_slibdir
76+enable_poison_system_directories
77 enable_plugin
78 '
79 ac_precious_vars='build_alias
80@@ -1620,6 +1621,8 @@ Optional Features:
81 --enable-version-specific-runtime-libs
82 specify that runtime libraries should be
83 installed in a compiler-specific directory
84+ --enable-poison-system-directories
85+ warn for use of native system header directories
86 --enable-plugin enable plugin support
87
88 Optional Packages:
89@@ -25345,6 +25348,19 @@ fi
90
91
92
93+# Check whether --enable-poison-system-directories was given.
94+if test "${enable_poison_system_directories+set}" = set; then :
95+ enableval=$enable_poison_system_directories;
96+else
97+ enable_poison_system_directories=no
98+fi
99+
100+if test "x${enable_poison_system_directories}" = "xyes"; then
101+
102+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
103+
104+fi
105+
106 # Substitute configuration variables
107
108
109Index: gcc-4.5/gcc/configure.ac
110===================================================================
111--- gcc-4.5.orig/gcc/configure.ac 2010-09-23 16:44:11.000000000 -0700
112+++ gcc-4.5/gcc/configure.ac 2010-09-23 16:46:33.576417624 -0700
113@@ -4439,6 +4439,16 @@ else
114 fi)
115 AC_SUBST(slibdir)
116
117+AC_ARG_ENABLE([poison-system-directories],
118+ AS_HELP_STRING([--enable-poison-system-directories],
119+ [warn for use of native system header directories]),,
120+ [enable_poison_system_directories=no])
121+if test "x${enable_poison_system_directories}" = "xyes"; then
122+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
123+ [1],
124+ [Define to warn for use of native system header directories])
125+fi
126+
127 # Substitute configuration variables
128 AC_SUBST(subdirs)
129 AC_SUBST(srcdir)
130Index: gcc-4.5/gcc/doc/invoke.texi
131===================================================================
132--- gcc-4.5.orig/gcc/doc/invoke.texi 2010-09-23 15:33:28.000000000 -0700
133+++ gcc-4.5/gcc/doc/invoke.texi 2010-09-23 16:46:33.584416934 -0700
134@@ -252,6 +252,7 @@ Objective-C and Objective-C++ Dialects}.
135 -Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol
136 -Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
137 -Wpointer-arith -Wno-pointer-to-int-cast @gol
138+-Wno-poison-system-directories @gol
139 -Wredundant-decls @gol
140 -Wreturn-type -Wsequence-point -Wshadow @gol
141 -Wsign-compare -Wsign-conversion -Wstack-protector @gol
142@@ -3603,6 +3604,14 @@ code. However, note that using @option{
143 option will @emph{not} warn about unknown pragmas in system
144 headers---for that, @option{-Wunknown-pragmas} must also be used.
145
146+@item -Wno-poison-system-directories
147+@opindex Wno-poison-system-directories
148+Do not warn for @option{-I} or @option{-L} options using system
149+directories such as @file{/usr/include} when cross compiling. This
150+option is intended for use in chroot environments when such
151+directories contain the correct headers and libraries for the target
152+system rather than the host.
153+
154 @item -Wfloat-equal
155 @opindex Wfloat-equal
156 @opindex Wno-float-equal
157Index: gcc-4.5/gcc/gcc.c
158===================================================================
159--- gcc-4.5.orig/gcc/gcc.c 2010-07-11 16:14:46.000000000 -0700
160+++ gcc-4.5/gcc/gcc.c 2010-09-23 16:46:33.588417920 -0700
161@@ -792,6 +792,8 @@ proper position among the other output f
162 %{flto} %{fwhopr} %l " LINK_PIE_SPEC \
163 "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
164 %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
165+ %{Wno-poison-system-directories:--no-poison-system-directories}\
166+ %{Werror=poison-system-directories:--error-poison-system-directories}\
167 %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\
168 %{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)} %(mflib)\
169 %{fprofile-arcs|fprofile-generate*|coverage:-lgcov}\
170Index: gcc-4.5/gcc/incpath.c
171===================================================================
172--- gcc-4.5.orig/gcc/incpath.c 2010-07-11 16:14:44.000000000 -0700
173+++ gcc-4.5/gcc/incpath.c 2010-09-23 16:46:33.588417920 -0700
174@@ -30,6 +30,8 @@
175 #include "intl.h"
176 #include "incpath.h"
177 #include "cppdefault.h"
178+#include "flags.h"
179+#include "toplev.h"
180
181 /* Microsoft Windows does not natively support inodes.
182 VMS has non-numeric inodes. */
183@@ -353,6 +355,24 @@ merge_include_chains (const char *sysroo
184 }
185 fprintf (stderr, _("End of search list.\n"));
186 }
187+
188+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
189+ if (flag_poison_system_directories)
190+ {
191+ struct cpp_dir *p;
192+
193+ for (p = heads[QUOTE]; p; p = p->next)
194+ {
195+ if ((!strncmp (p->name, "/usr/include", 12))
196+ || (!strncmp (p->name, "/usr/local/include", 18))
197+ || (!strncmp (p->name, "/usr/X11R6/include", 18)))
198+ warning (OPT_Wpoison_system_directories,
199+ "include location \"%s\" is unsafe for "
200+ "cross-compilation",
201+ p->name);
202+ }
203+ }
204+#endif
205 }
206
207 /* Use given -I paths for #include "..." but not #include <...>, and
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99298.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99298.patch
new file mode 100644
index 000000000..541134a6b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99298.patch
@@ -0,0 +1,26654 @@
12010-07-07 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from mainline (originally from Sourcery G++ 4.4):
4
5 2010-05-24 Daniel Jacobowitz <dan@codesourcery.com>
6 Sandra Loosemore <sandra@codesourcery.com>
7
8 gcc/
9 * config/arm/neon-testgen.ml: Use dg-add-options arm_neon.
10 * doc/sourcebuild.texi (Effective-Target Keywords): Update arm_neon_ok
11 description. Add arm_neon_fp16_ok.
12 (Add Options): Add arm_neon and arm_neon_fp16.
13
14 gcc/testsuite/
15 * gcc.target/arm/neon/: Regenerated test cases.
16
17 * gcc.target/arm/neon/polytypes.c,
18 gcc.target/arm/neon-vmla-1.c, gcc.target/arm/neon-vmls-1.c,
19 gcc.target/arm/neon-cond-1.c, gcc.target/arm/neon/vfp-shift-a2t2.c,
20 gcc.target/arm/neon-thumb2-move.c, gcc.dg/torture/arm-fp16-ops-8.c,
21 gcc.dg/torture/arm-fp16-ops-7.c, g++.dg/ext/arm-fp16/arm-fp16-ops-7.C,
22 g++.dg/ext/arm-fp16/arm-fp16-ops-8.C, g++.dg/abi/mangle-neon.C: Use
23 dg-add-options arm_neon.
24
25 * gcc.target/arm/fp16-compile-vcvt.c, gcc.dg/torture/arm-fp16-ops-5.c,
26 gcc.dg/torture/arm-fp16-ops-6.c, g++.dg/ext/arm-fp16/arm-fp16-ops-5.C,
27 g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: Use dg-add-options arm_neon_fp16
28 and arm_neon_fp16_ok.
29
30 * gcc.dg/vect/vect.exp, g++.dg/vect/vect.exp,
31 gfortran.dg/vect/vect.exp: Use add_options_for_arm_neon.
32
33 * lib/target-supports.exp (add_options_for_arm_neon): New.
34 (check_effective_target_arm_neon_ok_nocache): New, from
35 check_effective_target_arm_neon_ok. Check multiple possibilities.
36 (check_effective_target_arm_neon_ok): Use
37 check_effective_target_arm_neon_ok_nocache.
38 (add_options_for_arm_neon_fp16)
39 (check_effective_target_arm_neon_fp16_ok)
40 check_effective_target_arm_neon_fp16_ok_nocache): New.
41 (check_effective_target_arm_neon_hw): Use add_options_for_arm_neon.
42
43
44=== modified file 'gcc/config/arm/neon-testgen.ml'
45Index: gcc-4_5-branch/gcc/config/arm/neon-testgen.ml
46===================================================================
47--- gcc-4_5-branch.orig/gcc/config/arm/neon-testgen.ml
48+++ gcc-4_5-branch/gcc/config/arm/neon-testgen.ml
49@@ -51,8 +51,8 @@ let emit_prologue chan test_name =
50 Printf.fprintf chan "/* This file was autogenerated by neon-testgen. */\n\n";
51 Printf.fprintf chan "/* { dg-do assemble } */\n";
52 Printf.fprintf chan "/* { dg-require-effective-target arm_neon_ok } */\n";
53- Printf.fprintf chan
54- "/* { dg-options \"-save-temps -O0 -mfpu=neon -mfloat-abi=softfp\" } */\n";
55+ Printf.fprintf chan "/* { dg-options \"-save-temps -O0\" } */\n";
56+ Printf.fprintf chan "/* { dg-add-options arm_neon } */\n";
57 Printf.fprintf chan "\n#include \"arm_neon.h\"\n\n";
58 Printf.fprintf chan "void test_%s (void)\n{\n" test_name
59
60Index: gcc-4_5-branch/gcc/doc/sourcebuild.texi
61===================================================================
62--- gcc-4_5-branch.orig/gcc/doc/sourcebuild.texi
63+++ gcc-4_5-branch/gcc/doc/sourcebuild.texi
64@@ -362,7 +362,7 @@ A copy of @file{texinfo.tex} known to wo
65 @end table
66
67 DVI-formatted manuals are generated by @samp{make dvi}, which uses
68-@command{texi2dvi} (via the Makefile macro @code{$(TEXI2DVI)}).
69+@command{texi2dvi} (via the Makefile macro @code{$(TEXI2DVI)}).
70 PDF-formatted manuals are generated by @samp{make pdf}, which uses
71 @command{texi2pdf} (via the Makefile macro @code{$(TEXI2PDF)}). HTML
72 formatted manuals are generated by @samp{make html}. Info
73@@ -1500,8 +1500,14 @@ ARM target supports generating NEON inst
74 Test system supports executing NEON instructions.
75
76 @item arm_neon_ok
77-ARM Target supports @code{-mfpu=neon -mfloat-abi=softfp}.
78-Some multilibs may be incompatible with these options.
79+@anchor{arm_neon_ok}
80+ARM Target supports @code{-mfpu=neon -mfloat-abi=softfp} or compatible
81+options. Some multilibs may be incompatible with these options.
82+
83+@item arm_neon_fp16_ok
84+@anchor{arm_neon_fp16_ok}
85+ARM Target supports @code{-mfpu=neon-fp16 -mfloat-abi=softfp} or compatible
86+options. Some multilibs may be incompatible with these options.
87
88 @item arm_thumb1_ok
89 ARM target generates Thumb-1 code for @code{-mthumb}.
90@@ -1895,6 +1901,16 @@ Only MIPS targets support this feature,
91
92 @item tls
93 Add the target-specific flags needed to use thread-local storage.
94+
95+@item arm_neon
96+NEON support. Only ARM targets support this feature, and only then
97+in certain modes; see the @ref{arm_neon_ok,,arm_neon_ok effective target
98+keyword}.
99+
100+@item arm_neon_fp16
101+NEON and half-precision floating point support. Only ARM targets
102+support this feature, and only then in certain modes; see
103+the @ref{arm_neon_ok,,arm_neon_fp16_ok effective target keyword}.
104 @end table
105
106 @node Require Support
107Index: gcc-4_5-branch/gcc/testsuite/g++.dg/abi/mangle-neon.C
108===================================================================
109--- gcc-4_5-branch.orig/gcc/testsuite/g++.dg/abi/mangle-neon.C
110+++ gcc-4_5-branch/gcc/testsuite/g++.dg/abi/mangle-neon.C
111@@ -2,7 +2,7 @@
112
113 // { dg-do compile }
114 // { dg-require-effective-target arm_neon_ok }
115-// { dg-options "-mfpu=neon -mfloat-abi=softfp" }
116+// { dg-add-options arm_neon }
117
118 #include <arm_neon.h>
119
120Index: gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
121===================================================================
122--- gcc-4_5-branch.orig/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
123+++ gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C
124@@ -1,7 +1,8 @@
125 /* Test various operators on __fp16 and mixed __fp16/float operands. */
126 /* { dg-do compile { target arm*-*-* } } */
127-/* { dg-require-effective-target arm_neon_ok } */
128-/* { dg-options "-mfp16-format=ieee -mfpu=neon-fp16 -mfloat-abi=softfp" } */
129+/* { dg-require-effective-target arm_neon_fp16_ok } */
130+/* { dg-options "-mfp16-format=ieee" } */
131+/* { dg-add-options arm_neon_fp16 } */
132
133 #include "arm-fp16-ops.h"
134
135Index: gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
136===================================================================
137--- gcc-4_5-branch.orig/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
138+++ gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C
139@@ -1,7 +1,8 @@
140 /* Test various operators on __fp16 and mixed __fp16/float operands. */
141 /* { dg-do compile { target arm*-*-* } } */
142-/* { dg-require-effective-target arm_neon_ok } */
143-/* { dg-options "-mfp16-format=ieee -ffast-math -mfpu=neon-fp16 -mfloat-abi=softfp" } */
144+/* { dg-require-effective-target arm_neon_fp16_ok } */
145+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
146+/* { dg-add-options arm_neon_fp16 } */
147
148 #include "arm-fp16-ops.h"
149
150Index: gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
151===================================================================
152--- gcc-4_5-branch.orig/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
153+++ gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-7.C
154@@ -1,7 +1,8 @@
155 /* Test various operators on __fp16 and mixed __fp16/float operands. */
156 /* { dg-do compile { target arm*-*-* } } */
157 /* { dg-require-effective-target arm_neon_ok } */
158-/* { dg-options "-mfp16-format=ieee -mfpu=neon -mfloat-abi=softfp" } */
159+/* { dg-options "-mfp16-format=ieee" } */
160+/* { dg-add-options arm_neon } */
161
162 #include "arm-fp16-ops.h"
163
164Index: gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C
165===================================================================
166--- gcc-4_5-branch.orig/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C
167+++ gcc-4_5-branch/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-8.C
168@@ -1,7 +1,8 @@
169 /* Test various operators on __fp16 and mixed __fp16/float operands. */
170 /* { dg-do compile { target arm*-*-* } } */
171 /* { dg-require-effective-target arm_neon_ok } */
172-/* { dg-options "-mfp16-format=ieee -ffast-math -mfpu=neon -mfloat-abi=softfp" } */
173+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
174+/* { dg-add-options arm_neon } */
175
176 #include "arm-fp16-ops.h"
177
178Index: gcc-4_5-branch/gcc/testsuite/g++.dg/vect/vect.exp
179===================================================================
180--- gcc-4_5-branch.orig/gcc/testsuite/g++.dg/vect/vect.exp
181+++ gcc-4_5-branch/gcc/testsuite/g++.dg/vect/vect.exp
182@@ -112,7 +112,7 @@ if [istarget "powerpc-*paired*"] {
183 } elseif [istarget "ia64-*-*"] {
184 set dg-do-what-default run
185 } elseif [is-effective-target arm_neon_ok] {
186- lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
187+ eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
188 if [is-effective-target arm_neon_hw] {
189 set dg-do-what-default run
190 } else {
191Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
192===================================================================
193--- gcc-4_5-branch.orig/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
194+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c
195@@ -1,7 +1,8 @@
196 /* Test various operators on __fp16 and mixed __fp16/float operands. */
197 /* { dg-do compile { target arm*-*-* } } */
198-/* { dg-require-effective-target arm_neon_ok } */
199-/* { dg-options "-mfp16-format=ieee -mfpu=neon-fp16 -mfloat-abi=softfp" } */
200+/* { dg-require-effective-target arm_neon_fp16_ok } */
201+/* { dg-options "-mfp16-format=ieee" } */
202+/* { dg-add-options arm_neon_fp16 } */
203
204 #include "arm-fp16-ops.h"
205
206Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
207===================================================================
208--- gcc-4_5-branch.orig/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
209+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c
210@@ -1,7 +1,8 @@
211 /* Test various operators on __fp16 and mixed __fp16/float operands. */
212 /* { dg-do compile { target arm*-*-* } } */
213-/* { dg-require-effective-target arm_neon_ok } */
214-/* { dg-options "-mfp16-format=ieee -ffast-math -mfpu=neon-fp16 -mfloat-abi=softfp" } */
215+/* { dg-require-effective-target arm_neon_fp16_ok } */
216+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
217+/* { dg-add-options arm_neon_fp16 } */
218
219 #include "arm-fp16-ops.h"
220
221Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
222===================================================================
223--- gcc-4_5-branch.orig/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
224+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-7.c
225@@ -1,7 +1,8 @@
226 /* Test various operators on __fp16 and mixed __fp16/float operands. */
227 /* { dg-do compile { target arm*-*-* } } */
228 /* { dg-require-effective-target arm_neon_ok } */
229-/* { dg-options "-mfp16-format=ieee -mfpu=neon -mfloat-abi=softfp" } */
230+/* { dg-options "-mfp16-format=ieee" } */
231+/* { dg-add-options arm_neon } */
232
233 #include "arm-fp16-ops.h"
234
235Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
236===================================================================
237--- gcc-4_5-branch.orig/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
238+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-8.c
239@@ -1,7 +1,8 @@
240 /* Test various operators on __fp16 and mixed __fp16/float operands. */
241 /* { dg-do compile { target arm*-*-* } } */
242 /* { dg-require-effective-target arm_neon_ok } */
243-/* { dg-options "-mfp16-format=ieee -ffast-math -mfpu=neon -mfloat-abi=softfp" } */
244+/* { dg-options "-mfp16-format=ieee -ffast-math" } */
245+/* { dg-add-options arm_neon } */
246
247 #include "arm-fp16-ops.h"
248
249Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/vect/vect.exp
250===================================================================
251--- gcc-4_5-branch.orig/gcc/testsuite/gcc.dg/vect/vect.exp
252+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/vect/vect.exp
253@@ -104,7 +104,7 @@ if [istarget "powerpc-*paired*"] {
254 } elseif [istarget "ia64-*-*"] {
255 set dg-do-what-default run
256 } elseif [is-effective-target arm_neon_ok] {
257- lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
258+ eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
259 if [is-effective-target arm_neon_hw] {
260 set dg-do-what-default run
261 } else {
262Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
263===================================================================
264--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
265+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
266@@ -1,6 +1,7 @@
267 /* { dg-do compile } */
268-/* { dg-require-effective-target arm_neon_ok } */
269-/* { dg-options "-mfp16-format=ieee -mfpu=neon-fp16 -mfloat-abi=softfp" } */
270+/* { dg-require-effective-target arm_neon_fp16_ok } */
271+/* { dg-options "-mfp16-format=ieee" } */
272+/* { dg-add-options arm_neon_fp16 } */
273
274 /* Test generation of VFP __fp16 instructions. */
275
276Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-cond-1.c
277===================================================================
278--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon-cond-1.c
279+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-cond-1.c
280@@ -1,6 +1,7 @@
281 /* { dg-do run } */
282 /* { dg-require-effective-target arm_neon_hw } */
283-/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp" } */
284+/* { dg-options "-O2" } */
285+/* { dg-add-options arm_neon } */
286 /* Check that the arm_final_prescan_insn ccfsm code does not try to
287 * conditionally execute NEON instructions. */
288 #include <arm_neon.h>
289Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
290===================================================================
291--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
292+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
293@@ -1,6 +1,7 @@
294 /* { dg-do compile } */
295 /* { dg-require-effective-target arm_neon_ok } */
296-/* { dg-options "-O2 -mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon" } */
297+/* { dg-options "-O2 -mthumb -march=armv7-a" } */
298+/* { dg-add-options arm_neon } */
299
300 #include <arm_neon.h>
301 #include <stddef.h>
302Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-vmla-1.c
303===================================================================
304--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon-vmla-1.c
305+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-vmla-1.c
306@@ -1,5 +1,6 @@
307 /* { dg-require-effective-target arm_neon_hw } */
308-/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize" } */
309+/* { dg-options "-O2 -ftree-vectorize" } */
310+/* { dg-add-options arm_neon } */
311 /* { dg-final { scan-assembler "vmla\\.f32" } } */
312
313 /* Verify that VMLA is used. */
314Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-vmls-1.c
315===================================================================
316--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon-vmls-1.c
317+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon-vmls-1.c
318@@ -1,5 +1,6 @@
319 /* { dg-require-effective-target arm_neon_hw } */
320-/* { dg-options "-O2 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize" } */
321+/* { dg-options "-O2 -ftree-vectorize" } */
322+/* { dg-add-options arm_neon } */
323 /* { dg-final { scan-assembler "vmls\\.f32" } } */
324
325 /* Verify that VMLS is used. */
326Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/polytypes.c
327===================================================================
328--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/polytypes.c
329+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/polytypes.c
330@@ -3,7 +3,7 @@
331
332 /* { dg-do compile } */
333 /* { dg-require-effective-target arm_neon_ok } */
334-/* { dg-options "-mfpu=neon -mfloat-abi=softfp" } */
335+/* { dg-add-options arm_neon } */
336
337 #include <arm_neon.h>
338
339Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
340===================================================================
341--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
342+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
343@@ -3,7 +3,8 @@
344
345 /* { dg-do assemble } */
346 /* { dg-require-effective-target arm_neon_ok } */
347-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
348+/* { dg-options "-save-temps -O0" } */
349+/* { dg-add-options arm_neon } */
350
351 #include "arm_neon.h"
352
353Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
354===================================================================
355--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
356+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
357@@ -3,7 +3,8 @@
358
359 /* { dg-do assemble } */
360 /* { dg-require-effective-target arm_neon_ok } */
361-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
362+/* { dg-options "-save-temps -O0" } */
363+/* { dg-add-options arm_neon } */
364
365 #include "arm_neon.h"
366
367Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
368===================================================================
369--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
370+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
371@@ -3,7 +3,8 @@
372
373 /* { dg-do assemble } */
374 /* { dg-require-effective-target arm_neon_ok } */
375-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
376+/* { dg-options "-save-temps -O0" } */
377+/* { dg-add-options arm_neon } */
378
379 #include "arm_neon.h"
380
381Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
382===================================================================
383--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
384+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
385@@ -3,7 +3,8 @@
386
387 /* { dg-do assemble } */
388 /* { dg-require-effective-target arm_neon_ok } */
389-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
390+/* { dg-options "-save-temps -O0" } */
391+/* { dg-add-options arm_neon } */
392
393 #include "arm_neon.h"
394
395Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
396===================================================================
397--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
398+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
399@@ -3,7 +3,8 @@
400
401 /* { dg-do assemble } */
402 /* { dg-require-effective-target arm_neon_ok } */
403-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
404+/* { dg-options "-save-temps -O0" } */
405+/* { dg-add-options arm_neon } */
406
407 #include "arm_neon.h"
408
409Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
410===================================================================
411--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
412+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
413@@ -3,7 +3,8 @@
414
415 /* { dg-do assemble } */
416 /* { dg-require-effective-target arm_neon_ok } */
417-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
418+/* { dg-options "-save-temps -O0" } */
419+/* { dg-add-options arm_neon } */
420
421 #include "arm_neon.h"
422
423Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
424===================================================================
425--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
426+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
427@@ -3,7 +3,8 @@
428
429 /* { dg-do assemble } */
430 /* { dg-require-effective-target arm_neon_ok } */
431-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
432+/* { dg-options "-save-temps -O0" } */
433+/* { dg-add-options arm_neon } */
434
435 #include "arm_neon.h"
436
437Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
438===================================================================
439--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
440+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
441@@ -3,7 +3,8 @@
442
443 /* { dg-do assemble } */
444 /* { dg-require-effective-target arm_neon_ok } */
445-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
446+/* { dg-options "-save-temps -O0" } */
447+/* { dg-add-options arm_neon } */
448
449 #include "arm_neon.h"
450
451Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
452===================================================================
453--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
454+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
455@@ -3,7 +3,8 @@
456
457 /* { dg-do assemble } */
458 /* { dg-require-effective-target arm_neon_ok } */
459-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
460+/* { dg-options "-save-temps -O0" } */
461+/* { dg-add-options arm_neon } */
462
463 #include "arm_neon.h"
464
465Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
466===================================================================
467--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
468+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
469@@ -3,7 +3,8 @@
470
471 /* { dg-do assemble } */
472 /* { dg-require-effective-target arm_neon_ok } */
473-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
474+/* { dg-options "-save-temps -O0" } */
475+/* { dg-add-options arm_neon } */
476
477 #include "arm_neon.h"
478
479Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
480===================================================================
481--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
482+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
483@@ -3,7 +3,8 @@
484
485 /* { dg-do assemble } */
486 /* { dg-require-effective-target arm_neon_ok } */
487-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
488+/* { dg-options "-save-temps -O0" } */
489+/* { dg-add-options arm_neon } */
490
491 #include "arm_neon.h"
492
493Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
494===================================================================
495--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
496+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
497@@ -3,7 +3,8 @@
498
499 /* { dg-do assemble } */
500 /* { dg-require-effective-target arm_neon_ok } */
501-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
502+/* { dg-options "-save-temps -O0" } */
503+/* { dg-add-options arm_neon } */
504
505 #include "arm_neon.h"
506
507Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
508===================================================================
509--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
510+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
511@@ -3,7 +3,8 @@
512
513 /* { dg-do assemble } */
514 /* { dg-require-effective-target arm_neon_ok } */
515-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
516+/* { dg-options "-save-temps -O0" } */
517+/* { dg-add-options arm_neon } */
518
519 #include "arm_neon.h"
520
521Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
522===================================================================
523--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
524+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
525@@ -3,7 +3,8 @@
526
527 /* { dg-do assemble } */
528 /* { dg-require-effective-target arm_neon_ok } */
529-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
530+/* { dg-options "-save-temps -O0" } */
531+/* { dg-add-options arm_neon } */
532
533 #include "arm_neon.h"
534
535Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
536===================================================================
537--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
538+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
539@@ -3,7 +3,8 @@
540
541 /* { dg-do assemble } */
542 /* { dg-require-effective-target arm_neon_ok } */
543-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
544+/* { dg-options "-save-temps -O0" } */
545+/* { dg-add-options arm_neon } */
546
547 #include "arm_neon.h"
548
549Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
550===================================================================
551--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
552+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
553@@ -3,7 +3,8 @@
554
555 /* { dg-do assemble } */
556 /* { dg-require-effective-target arm_neon_ok } */
557-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
558+/* { dg-options "-save-temps -O0" } */
559+/* { dg-add-options arm_neon } */
560
561 #include "arm_neon.h"
562
563Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
564===================================================================
565--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
566+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
567@@ -3,7 +3,8 @@
568
569 /* { dg-do assemble } */
570 /* { dg-require-effective-target arm_neon_ok } */
571-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
572+/* { dg-options "-save-temps -O0" } */
573+/* { dg-add-options arm_neon } */
574
575 #include "arm_neon.h"
576
577Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
578===================================================================
579--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
580+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
581@@ -3,7 +3,8 @@
582
583 /* { dg-do assemble } */
584 /* { dg-require-effective-target arm_neon_ok } */
585-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
586+/* { dg-options "-save-temps -O0" } */
587+/* { dg-add-options arm_neon } */
588
589 #include "arm_neon.h"
590
591Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
592===================================================================
593--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
594+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
595@@ -3,7 +3,8 @@
596
597 /* { dg-do assemble } */
598 /* { dg-require-effective-target arm_neon_ok } */
599-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
600+/* { dg-options "-save-temps -O0" } */
601+/* { dg-add-options arm_neon } */
602
603 #include "arm_neon.h"
604
605Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
606===================================================================
607--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
608+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
609@@ -3,7 +3,8 @@
610
611 /* { dg-do assemble } */
612 /* { dg-require-effective-target arm_neon_ok } */
613-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
614+/* { dg-options "-save-temps -O0" } */
615+/* { dg-add-options arm_neon } */
616
617 #include "arm_neon.h"
618
619Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
620===================================================================
621--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
622+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
623@@ -3,7 +3,8 @@
624
625 /* { dg-do assemble } */
626 /* { dg-require-effective-target arm_neon_ok } */
627-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
628+/* { dg-options "-save-temps -O0" } */
629+/* { dg-add-options arm_neon } */
630
631 #include "arm_neon.h"
632
633Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
634===================================================================
635--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
636+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
637@@ -3,7 +3,8 @@
638
639 /* { dg-do assemble } */
640 /* { dg-require-effective-target arm_neon_ok } */
641-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
642+/* { dg-options "-save-temps -O0" } */
643+/* { dg-add-options arm_neon } */
644
645 #include "arm_neon.h"
646
647Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
648===================================================================
649--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
650+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
651@@ -3,7 +3,8 @@
652
653 /* { dg-do assemble } */
654 /* { dg-require-effective-target arm_neon_ok } */
655-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
656+/* { dg-options "-save-temps -O0" } */
657+/* { dg-add-options arm_neon } */
658
659 #include "arm_neon.h"
660
661Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
662===================================================================
663--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
664+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
665@@ -3,7 +3,8 @@
666
667 /* { dg-do assemble } */
668 /* { dg-require-effective-target arm_neon_ok } */
669-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
670+/* { dg-options "-save-temps -O0" } */
671+/* { dg-add-options arm_neon } */
672
673 #include "arm_neon.h"
674
675Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
676===================================================================
677--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
678+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
679@@ -3,7 +3,8 @@
680
681 /* { dg-do assemble } */
682 /* { dg-require-effective-target arm_neon_ok } */
683-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
684+/* { dg-options "-save-temps -O0" } */
685+/* { dg-add-options arm_neon } */
686
687 #include "arm_neon.h"
688
689Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
690===================================================================
691--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
692+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
693@@ -3,7 +3,8 @@
694
695 /* { dg-do assemble } */
696 /* { dg-require-effective-target arm_neon_ok } */
697-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
698+/* { dg-options "-save-temps -O0" } */
699+/* { dg-add-options arm_neon } */
700
701 #include "arm_neon.h"
702
703Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
704===================================================================
705--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
706+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
707@@ -3,7 +3,8 @@
708
709 /* { dg-do assemble } */
710 /* { dg-require-effective-target arm_neon_ok } */
711-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
712+/* { dg-options "-save-temps -O0" } */
713+/* { dg-add-options arm_neon } */
714
715 #include "arm_neon.h"
716
717Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
718===================================================================
719--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
720+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
721@@ -3,7 +3,8 @@
722
723 /* { dg-do assemble } */
724 /* { dg-require-effective-target arm_neon_ok } */
725-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
726+/* { dg-options "-save-temps -O0" } */
727+/* { dg-add-options arm_neon } */
728
729 #include "arm_neon.h"
730
731Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
732===================================================================
733--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
734+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
735@@ -3,7 +3,8 @@
736
737 /* { dg-do assemble } */
738 /* { dg-require-effective-target arm_neon_ok } */
739-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
740+/* { dg-options "-save-temps -O0" } */
741+/* { dg-add-options arm_neon } */
742
743 #include "arm_neon.h"
744
745Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
746===================================================================
747--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
748+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
749@@ -3,7 +3,8 @@
750
751 /* { dg-do assemble } */
752 /* { dg-require-effective-target arm_neon_ok } */
753-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
754+/* { dg-options "-save-temps -O0" } */
755+/* { dg-add-options arm_neon } */
756
757 #include "arm_neon.h"
758
759Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
760===================================================================
761--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
762+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
763@@ -3,7 +3,8 @@
764
765 /* { dg-do assemble } */
766 /* { dg-require-effective-target arm_neon_ok } */
767-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
768+/* { dg-options "-save-temps -O0" } */
769+/* { dg-add-options arm_neon } */
770
771 #include "arm_neon.h"
772
773Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
774===================================================================
775--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
776+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
777@@ -3,7 +3,8 @@
778
779 /* { dg-do assemble } */
780 /* { dg-require-effective-target arm_neon_ok } */
781-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
782+/* { dg-options "-save-temps -O0" } */
783+/* { dg-add-options arm_neon } */
784
785 #include "arm_neon.h"
786
787Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
788===================================================================
789--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
790+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
791@@ -3,7 +3,8 @@
792
793 /* { dg-do assemble } */
794 /* { dg-require-effective-target arm_neon_ok } */
795-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
796+/* { dg-options "-save-temps -O0" } */
797+/* { dg-add-options arm_neon } */
798
799 #include "arm_neon.h"
800
801Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
802===================================================================
803--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
804+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
805@@ -3,7 +3,8 @@
806
807 /* { dg-do assemble } */
808 /* { dg-require-effective-target arm_neon_ok } */
809-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
810+/* { dg-options "-save-temps -O0" } */
811+/* { dg-add-options arm_neon } */
812
813 #include "arm_neon.h"
814
815Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
816===================================================================
817--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
818+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
819@@ -3,7 +3,8 @@
820
821 /* { dg-do assemble } */
822 /* { dg-require-effective-target arm_neon_ok } */
823-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
824+/* { dg-options "-save-temps -O0" } */
825+/* { dg-add-options arm_neon } */
826
827 #include "arm_neon.h"
828
829Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
830===================================================================
831--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
832+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
833@@ -3,7 +3,8 @@
834
835 /* { dg-do assemble } */
836 /* { dg-require-effective-target arm_neon_ok } */
837-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
838+/* { dg-options "-save-temps -O0" } */
839+/* { dg-add-options arm_neon } */
840
841 #include "arm_neon.h"
842
843Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
844===================================================================
845--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
846+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
847@@ -3,7 +3,8 @@
848
849 /* { dg-do assemble } */
850 /* { dg-require-effective-target arm_neon_ok } */
851-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
852+/* { dg-options "-save-temps -O0" } */
853+/* { dg-add-options arm_neon } */
854
855 #include "arm_neon.h"
856
857Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
858===================================================================
859--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
860+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
861@@ -3,7 +3,8 @@
862
863 /* { dg-do assemble } */
864 /* { dg-require-effective-target arm_neon_ok } */
865-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
866+/* { dg-options "-save-temps -O0" } */
867+/* { dg-add-options arm_neon } */
868
869 #include "arm_neon.h"
870
871Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
872===================================================================
873--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
874+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
875@@ -3,7 +3,8 @@
876
877 /* { dg-do assemble } */
878 /* { dg-require-effective-target arm_neon_ok } */
879-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
880+/* { dg-options "-save-temps -O0" } */
881+/* { dg-add-options arm_neon } */
882
883 #include "arm_neon.h"
884
885Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
886===================================================================
887--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
888+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
889@@ -3,7 +3,8 @@
890
891 /* { dg-do assemble } */
892 /* { dg-require-effective-target arm_neon_ok } */
893-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
894+/* { dg-options "-save-temps -O0" } */
895+/* { dg-add-options arm_neon } */
896
897 #include "arm_neon.h"
898
899Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
900===================================================================
901--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
902+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
903@@ -3,7 +3,8 @@
904
905 /* { dg-do assemble } */
906 /* { dg-require-effective-target arm_neon_ok } */
907-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
908+/* { dg-options "-save-temps -O0" } */
909+/* { dg-add-options arm_neon } */
910
911 #include "arm_neon.h"
912
913Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
914===================================================================
915--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
916+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
917@@ -3,7 +3,8 @@
918
919 /* { dg-do assemble } */
920 /* { dg-require-effective-target arm_neon_ok } */
921-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
922+/* { dg-options "-save-temps -O0" } */
923+/* { dg-add-options arm_neon } */
924
925 #include "arm_neon.h"
926
927Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
928===================================================================
929--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
930+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
931@@ -3,7 +3,8 @@
932
933 /* { dg-do assemble } */
934 /* { dg-require-effective-target arm_neon_ok } */
935-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
936+/* { dg-options "-save-temps -O0" } */
937+/* { dg-add-options arm_neon } */
938
939 #include "arm_neon.h"
940
941Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
942===================================================================
943--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
944+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
945@@ -3,7 +3,8 @@
946
947 /* { dg-do assemble } */
948 /* { dg-require-effective-target arm_neon_ok } */
949-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
950+/* { dg-options "-save-temps -O0" } */
951+/* { dg-add-options arm_neon } */
952
953 #include "arm_neon.h"
954
955Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
956===================================================================
957--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
958+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
959@@ -3,7 +3,8 @@
960
961 /* { dg-do assemble } */
962 /* { dg-require-effective-target arm_neon_ok } */
963-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
964+/* { dg-options "-save-temps -O0" } */
965+/* { dg-add-options arm_neon } */
966
967 #include "arm_neon.h"
968
969Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
970===================================================================
971--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
972+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
973@@ -3,7 +3,8 @@
974
975 /* { dg-do assemble } */
976 /* { dg-require-effective-target arm_neon_ok } */
977-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
978+/* { dg-options "-save-temps -O0" } */
979+/* { dg-add-options arm_neon } */
980
981 #include "arm_neon.h"
982
983Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
984===================================================================
985--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
986+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
987@@ -3,7 +3,8 @@
988
989 /* { dg-do assemble } */
990 /* { dg-require-effective-target arm_neon_ok } */
991-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
992+/* { dg-options "-save-temps -O0" } */
993+/* { dg-add-options arm_neon } */
994
995 #include "arm_neon.h"
996
997Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
998===================================================================
999--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
1000+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
1001@@ -3,7 +3,8 @@
1002
1003 /* { dg-do assemble } */
1004 /* { dg-require-effective-target arm_neon_ok } */
1005-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1006+/* { dg-options "-save-temps -O0" } */
1007+/* { dg-add-options arm_neon } */
1008
1009 #include "arm_neon.h"
1010
1011Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
1012===================================================================
1013--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
1014+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
1015@@ -3,7 +3,8 @@
1016
1017 /* { dg-do assemble } */
1018 /* { dg-require-effective-target arm_neon_ok } */
1019-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1020+/* { dg-options "-save-temps -O0" } */
1021+/* { dg-add-options arm_neon } */
1022
1023 #include "arm_neon.h"
1024
1025Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
1026===================================================================
1027--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
1028+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
1029@@ -3,7 +3,8 @@
1030
1031 /* { dg-do assemble } */
1032 /* { dg-require-effective-target arm_neon_ok } */
1033-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1034+/* { dg-options "-save-temps -O0" } */
1035+/* { dg-add-options arm_neon } */
1036
1037 #include "arm_neon.h"
1038
1039Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
1040===================================================================
1041--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
1042+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
1043@@ -3,7 +3,8 @@
1044
1045 /* { dg-do assemble } */
1046 /* { dg-require-effective-target arm_neon_ok } */
1047-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1048+/* { dg-options "-save-temps -O0" } */
1049+/* { dg-add-options arm_neon } */
1050
1051 #include "arm_neon.h"
1052
1053Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
1054===================================================================
1055--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
1056+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
1057@@ -3,7 +3,8 @@
1058
1059 /* { dg-do assemble } */
1060 /* { dg-require-effective-target arm_neon_ok } */
1061-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1062+/* { dg-options "-save-temps -O0" } */
1063+/* { dg-add-options arm_neon } */
1064
1065 #include "arm_neon.h"
1066
1067Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
1068===================================================================
1069--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
1070+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
1071@@ -3,7 +3,8 @@
1072
1073 /* { dg-do assemble } */
1074 /* { dg-require-effective-target arm_neon_ok } */
1075-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1076+/* { dg-options "-save-temps -O0" } */
1077+/* { dg-add-options arm_neon } */
1078
1079 #include "arm_neon.h"
1080
1081Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
1082===================================================================
1083--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
1084+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
1085@@ -3,7 +3,8 @@
1086
1087 /* { dg-do assemble } */
1088 /* { dg-require-effective-target arm_neon_ok } */
1089-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1090+/* { dg-options "-save-temps -O0" } */
1091+/* { dg-add-options arm_neon } */
1092
1093 #include "arm_neon.h"
1094
1095Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
1096===================================================================
1097--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
1098+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
1099@@ -3,7 +3,8 @@
1100
1101 /* { dg-do assemble } */
1102 /* { dg-require-effective-target arm_neon_ok } */
1103-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1104+/* { dg-options "-save-temps -O0" } */
1105+/* { dg-add-options arm_neon } */
1106
1107 #include "arm_neon.h"
1108
1109Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
1110===================================================================
1111--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
1112+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
1113@@ -3,7 +3,8 @@
1114
1115 /* { dg-do assemble } */
1116 /* { dg-require-effective-target arm_neon_ok } */
1117-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1118+/* { dg-options "-save-temps -O0" } */
1119+/* { dg-add-options arm_neon } */
1120
1121 #include "arm_neon.h"
1122
1123Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
1124===================================================================
1125--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
1126+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
1127@@ -3,7 +3,8 @@
1128
1129 /* { dg-do assemble } */
1130 /* { dg-require-effective-target arm_neon_ok } */
1131-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1132+/* { dg-options "-save-temps -O0" } */
1133+/* { dg-add-options arm_neon } */
1134
1135 #include "arm_neon.h"
1136
1137Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
1138===================================================================
1139--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
1140+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
1141@@ -3,7 +3,8 @@
1142
1143 /* { dg-do assemble } */
1144 /* { dg-require-effective-target arm_neon_ok } */
1145-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1146+/* { dg-options "-save-temps -O0" } */
1147+/* { dg-add-options arm_neon } */
1148
1149 #include "arm_neon.h"
1150
1151Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
1152===================================================================
1153--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
1154+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
1155@@ -3,7 +3,8 @@
1156
1157 /* { dg-do assemble } */
1158 /* { dg-require-effective-target arm_neon_ok } */
1159-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1160+/* { dg-options "-save-temps -O0" } */
1161+/* { dg-add-options arm_neon } */
1162
1163 #include "arm_neon.h"
1164
1165Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
1166===================================================================
1167--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
1168+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
1169@@ -3,7 +3,8 @@
1170
1171 /* { dg-do assemble } */
1172 /* { dg-require-effective-target arm_neon_ok } */
1173-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1174+/* { dg-options "-save-temps -O0" } */
1175+/* { dg-add-options arm_neon } */
1176
1177 #include "arm_neon.h"
1178
1179Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
1180===================================================================
1181--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
1182+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
1183@@ -3,7 +3,8 @@
1184
1185 /* { dg-do assemble } */
1186 /* { dg-require-effective-target arm_neon_ok } */
1187-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1188+/* { dg-options "-save-temps -O0" } */
1189+/* { dg-add-options arm_neon } */
1190
1191 #include "arm_neon.h"
1192
1193Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
1194===================================================================
1195--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
1196+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
1197@@ -3,7 +3,8 @@
1198
1199 /* { dg-do assemble } */
1200 /* { dg-require-effective-target arm_neon_ok } */
1201-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1202+/* { dg-options "-save-temps -O0" } */
1203+/* { dg-add-options arm_neon } */
1204
1205 #include "arm_neon.h"
1206
1207Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
1208===================================================================
1209--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
1210+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
1211@@ -3,7 +3,8 @@
1212
1213 /* { dg-do assemble } */
1214 /* { dg-require-effective-target arm_neon_ok } */
1215-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1216+/* { dg-options "-save-temps -O0" } */
1217+/* { dg-add-options arm_neon } */
1218
1219 #include "arm_neon.h"
1220
1221Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
1222===================================================================
1223--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
1224+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
1225@@ -3,7 +3,8 @@
1226
1227 /* { dg-do assemble } */
1228 /* { dg-require-effective-target arm_neon_ok } */
1229-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1230+/* { dg-options "-save-temps -O0" } */
1231+/* { dg-add-options arm_neon } */
1232
1233 #include "arm_neon.h"
1234
1235Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
1236===================================================================
1237--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
1238+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
1239@@ -3,7 +3,8 @@
1240
1241 /* { dg-do assemble } */
1242 /* { dg-require-effective-target arm_neon_ok } */
1243-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1244+/* { dg-options "-save-temps -O0" } */
1245+/* { dg-add-options arm_neon } */
1246
1247 #include "arm_neon.h"
1248
1249Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
1250===================================================================
1251--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
1252+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
1253@@ -3,7 +3,8 @@
1254
1255 /* { dg-do assemble } */
1256 /* { dg-require-effective-target arm_neon_ok } */
1257-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1258+/* { dg-options "-save-temps -O0" } */
1259+/* { dg-add-options arm_neon } */
1260
1261 #include "arm_neon.h"
1262
1263Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
1264===================================================================
1265--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
1266+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
1267@@ -3,7 +3,8 @@
1268
1269 /* { dg-do assemble } */
1270 /* { dg-require-effective-target arm_neon_ok } */
1271-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1272+/* { dg-options "-save-temps -O0" } */
1273+/* { dg-add-options arm_neon } */
1274
1275 #include "arm_neon.h"
1276
1277Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
1278===================================================================
1279--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
1280+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
1281@@ -3,7 +3,8 @@
1282
1283 /* { dg-do assemble } */
1284 /* { dg-require-effective-target arm_neon_ok } */
1285-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1286+/* { dg-options "-save-temps -O0" } */
1287+/* { dg-add-options arm_neon } */
1288
1289 #include "arm_neon.h"
1290
1291Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
1292===================================================================
1293--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
1294+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
1295@@ -3,7 +3,8 @@
1296
1297 /* { dg-do assemble } */
1298 /* { dg-require-effective-target arm_neon_ok } */
1299-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1300+/* { dg-options "-save-temps -O0" } */
1301+/* { dg-add-options arm_neon } */
1302
1303 #include "arm_neon.h"
1304
1305Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
1306===================================================================
1307--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
1308+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
1309@@ -3,7 +3,8 @@
1310
1311 /* { dg-do assemble } */
1312 /* { dg-require-effective-target arm_neon_ok } */
1313-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1314+/* { dg-options "-save-temps -O0" } */
1315+/* { dg-add-options arm_neon } */
1316
1317 #include "arm_neon.h"
1318
1319Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
1320===================================================================
1321--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
1322+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
1323@@ -3,7 +3,8 @@
1324
1325 /* { dg-do assemble } */
1326 /* { dg-require-effective-target arm_neon_ok } */
1327-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1328+/* { dg-options "-save-temps -O0" } */
1329+/* { dg-add-options arm_neon } */
1330
1331 #include "arm_neon.h"
1332
1333Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
1334===================================================================
1335--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
1336+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
1337@@ -3,7 +3,8 @@
1338
1339 /* { dg-do assemble } */
1340 /* { dg-require-effective-target arm_neon_ok } */
1341-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1342+/* { dg-options "-save-temps -O0" } */
1343+/* { dg-add-options arm_neon } */
1344
1345 #include "arm_neon.h"
1346
1347Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
1348===================================================================
1349--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
1350+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
1351@@ -3,7 +3,8 @@
1352
1353 /* { dg-do assemble } */
1354 /* { dg-require-effective-target arm_neon_ok } */
1355-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1356+/* { dg-options "-save-temps -O0" } */
1357+/* { dg-add-options arm_neon } */
1358
1359 #include "arm_neon.h"
1360
1361Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
1362===================================================================
1363--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
1364+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
1365@@ -3,7 +3,8 @@
1366
1367 /* { dg-do assemble } */
1368 /* { dg-require-effective-target arm_neon_ok } */
1369-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1370+/* { dg-options "-save-temps -O0" } */
1371+/* { dg-add-options arm_neon } */
1372
1373 #include "arm_neon.h"
1374
1375Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
1376===================================================================
1377--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
1378+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
1379@@ -3,7 +3,8 @@
1380
1381 /* { dg-do assemble } */
1382 /* { dg-require-effective-target arm_neon_ok } */
1383-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1384+/* { dg-options "-save-temps -O0" } */
1385+/* { dg-add-options arm_neon } */
1386
1387 #include "arm_neon.h"
1388
1389Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
1390===================================================================
1391--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
1392+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
1393@@ -3,7 +3,8 @@
1394
1395 /* { dg-do assemble } */
1396 /* { dg-require-effective-target arm_neon_ok } */
1397-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1398+/* { dg-options "-save-temps -O0" } */
1399+/* { dg-add-options arm_neon } */
1400
1401 #include "arm_neon.h"
1402
1403Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
1404===================================================================
1405--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
1406+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
1407@@ -3,7 +3,8 @@
1408
1409 /* { dg-do assemble } */
1410 /* { dg-require-effective-target arm_neon_ok } */
1411-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1412+/* { dg-options "-save-temps -O0" } */
1413+/* { dg-add-options arm_neon } */
1414
1415 #include "arm_neon.h"
1416
1417Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
1418===================================================================
1419--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
1420+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
1421@@ -3,7 +3,8 @@
1422
1423 /* { dg-do assemble } */
1424 /* { dg-require-effective-target arm_neon_ok } */
1425-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1426+/* { dg-options "-save-temps -O0" } */
1427+/* { dg-add-options arm_neon } */
1428
1429 #include "arm_neon.h"
1430
1431Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
1432===================================================================
1433--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
1434+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
1435@@ -3,7 +3,8 @@
1436
1437 /* { dg-do assemble } */
1438 /* { dg-require-effective-target arm_neon_ok } */
1439-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1440+/* { dg-options "-save-temps -O0" } */
1441+/* { dg-add-options arm_neon } */
1442
1443 #include "arm_neon.h"
1444
1445Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
1446===================================================================
1447--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
1448+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
1449@@ -3,7 +3,8 @@
1450
1451 /* { dg-do assemble } */
1452 /* { dg-require-effective-target arm_neon_ok } */
1453-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1454+/* { dg-options "-save-temps -O0" } */
1455+/* { dg-add-options arm_neon } */
1456
1457 #include "arm_neon.h"
1458
1459Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
1460===================================================================
1461--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
1462+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
1463@@ -3,7 +3,8 @@
1464
1465 /* { dg-do assemble } */
1466 /* { dg-require-effective-target arm_neon_ok } */
1467-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1468+/* { dg-options "-save-temps -O0" } */
1469+/* { dg-add-options arm_neon } */
1470
1471 #include "arm_neon.h"
1472
1473Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
1474===================================================================
1475--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
1476+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
1477@@ -3,7 +3,8 @@
1478
1479 /* { dg-do assemble } */
1480 /* { dg-require-effective-target arm_neon_ok } */
1481-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1482+/* { dg-options "-save-temps -O0" } */
1483+/* { dg-add-options arm_neon } */
1484
1485 #include "arm_neon.h"
1486
1487Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
1488===================================================================
1489--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
1490+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
1491@@ -3,7 +3,8 @@
1492
1493 /* { dg-do assemble } */
1494 /* { dg-require-effective-target arm_neon_ok } */
1495-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1496+/* { dg-options "-save-temps -O0" } */
1497+/* { dg-add-options arm_neon } */
1498
1499 #include "arm_neon.h"
1500
1501Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
1502===================================================================
1503--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
1504+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
1505@@ -3,7 +3,8 @@
1506
1507 /* { dg-do assemble } */
1508 /* { dg-require-effective-target arm_neon_ok } */
1509-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1510+/* { dg-options "-save-temps -O0" } */
1511+/* { dg-add-options arm_neon } */
1512
1513 #include "arm_neon.h"
1514
1515Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabals16.c
1516===================================================================
1517--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabals16.c
1518+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabals16.c
1519@@ -3,7 +3,8 @@
1520
1521 /* { dg-do assemble } */
1522 /* { dg-require-effective-target arm_neon_ok } */
1523-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1524+/* { dg-options "-save-temps -O0" } */
1525+/* { dg-add-options arm_neon } */
1526
1527 #include "arm_neon.h"
1528
1529Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabals32.c
1530===================================================================
1531--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabals32.c
1532+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabals32.c
1533@@ -3,7 +3,8 @@
1534
1535 /* { dg-do assemble } */
1536 /* { dg-require-effective-target arm_neon_ok } */
1537-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1538+/* { dg-options "-save-temps -O0" } */
1539+/* { dg-add-options arm_neon } */
1540
1541 #include "arm_neon.h"
1542
1543Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabals8.c
1544===================================================================
1545--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabals8.c
1546+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabals8.c
1547@@ -3,7 +3,8 @@
1548
1549 /* { dg-do assemble } */
1550 /* { dg-require-effective-target arm_neon_ok } */
1551-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1552+/* { dg-options "-save-temps -O0" } */
1553+/* { dg-add-options arm_neon } */
1554
1555 #include "arm_neon.h"
1556
1557Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
1558===================================================================
1559--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
1560+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
1561@@ -3,7 +3,8 @@
1562
1563 /* { dg-do assemble } */
1564 /* { dg-require-effective-target arm_neon_ok } */
1565-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1566+/* { dg-options "-save-temps -O0" } */
1567+/* { dg-add-options arm_neon } */
1568
1569 #include "arm_neon.h"
1570
1571Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
1572===================================================================
1573--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
1574+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
1575@@ -3,7 +3,8 @@
1576
1577 /* { dg-do assemble } */
1578 /* { dg-require-effective-target arm_neon_ok } */
1579-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1580+/* { dg-options "-save-temps -O0" } */
1581+/* { dg-add-options arm_neon } */
1582
1583 #include "arm_neon.h"
1584
1585Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
1586===================================================================
1587--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
1588+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
1589@@ -3,7 +3,8 @@
1590
1591 /* { dg-do assemble } */
1592 /* { dg-require-effective-target arm_neon_ok } */
1593-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1594+/* { dg-options "-save-temps -O0" } */
1595+/* { dg-add-options arm_neon } */
1596
1597 #include "arm_neon.h"
1598
1599Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabas16.c
1600===================================================================
1601--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabas16.c
1602+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabas16.c
1603@@ -3,7 +3,8 @@
1604
1605 /* { dg-do assemble } */
1606 /* { dg-require-effective-target arm_neon_ok } */
1607-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1608+/* { dg-options "-save-temps -O0" } */
1609+/* { dg-add-options arm_neon } */
1610
1611 #include "arm_neon.h"
1612
1613Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabas32.c
1614===================================================================
1615--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabas32.c
1616+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabas32.c
1617@@ -3,7 +3,8 @@
1618
1619 /* { dg-do assemble } */
1620 /* { dg-require-effective-target arm_neon_ok } */
1621-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1622+/* { dg-options "-save-temps -O0" } */
1623+/* { dg-add-options arm_neon } */
1624
1625 #include "arm_neon.h"
1626
1627Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabas8.c
1628===================================================================
1629--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabas8.c
1630+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabas8.c
1631@@ -3,7 +3,8 @@
1632
1633 /* { dg-do assemble } */
1634 /* { dg-require-effective-target arm_neon_ok } */
1635-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1636+/* { dg-options "-save-temps -O0" } */
1637+/* { dg-add-options arm_neon } */
1638
1639 #include "arm_neon.h"
1640
1641Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabau16.c
1642===================================================================
1643--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabau16.c
1644+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabau16.c
1645@@ -3,7 +3,8 @@
1646
1647 /* { dg-do assemble } */
1648 /* { dg-require-effective-target arm_neon_ok } */
1649-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1650+/* { dg-options "-save-temps -O0" } */
1651+/* { dg-add-options arm_neon } */
1652
1653 #include "arm_neon.h"
1654
1655Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabau32.c
1656===================================================================
1657--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabau32.c
1658+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabau32.c
1659@@ -3,7 +3,8 @@
1660
1661 /* { dg-do assemble } */
1662 /* { dg-require-effective-target arm_neon_ok } */
1663-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1664+/* { dg-options "-save-temps -O0" } */
1665+/* { dg-add-options arm_neon } */
1666
1667 #include "arm_neon.h"
1668
1669Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabau8.c
1670===================================================================
1671--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabau8.c
1672+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabau8.c
1673@@ -3,7 +3,8 @@
1674
1675 /* { dg-do assemble } */
1676 /* { dg-require-effective-target arm_neon_ok } */
1677-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1678+/* { dg-options "-save-temps -O0" } */
1679+/* { dg-add-options arm_neon } */
1680
1681 #include "arm_neon.h"
1682
1683Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
1684===================================================================
1685--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
1686+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
1687@@ -3,7 +3,8 @@
1688
1689 /* { dg-do assemble } */
1690 /* { dg-require-effective-target arm_neon_ok } */
1691-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1692+/* { dg-options "-save-temps -O0" } */
1693+/* { dg-add-options arm_neon } */
1694
1695 #include "arm_neon.h"
1696
1697Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
1698===================================================================
1699--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
1700+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
1701@@ -3,7 +3,8 @@
1702
1703 /* { dg-do assemble } */
1704 /* { dg-require-effective-target arm_neon_ok } */
1705-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1706+/* { dg-options "-save-temps -O0" } */
1707+/* { dg-add-options arm_neon } */
1708
1709 #include "arm_neon.h"
1710
1711Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
1712===================================================================
1713--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
1714+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
1715@@ -3,7 +3,8 @@
1716
1717 /* { dg-do assemble } */
1718 /* { dg-require-effective-target arm_neon_ok } */
1719-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1720+/* { dg-options "-save-temps -O0" } */
1721+/* { dg-add-options arm_neon } */
1722
1723 #include "arm_neon.h"
1724
1725Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
1726===================================================================
1727--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
1728+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
1729@@ -3,7 +3,8 @@
1730
1731 /* { dg-do assemble } */
1732 /* { dg-require-effective-target arm_neon_ok } */
1733-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1734+/* { dg-options "-save-temps -O0" } */
1735+/* { dg-add-options arm_neon } */
1736
1737 #include "arm_neon.h"
1738
1739Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
1740===================================================================
1741--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
1742+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
1743@@ -3,7 +3,8 @@
1744
1745 /* { dg-do assemble } */
1746 /* { dg-require-effective-target arm_neon_ok } */
1747-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1748+/* { dg-options "-save-temps -O0" } */
1749+/* { dg-add-options arm_neon } */
1750
1751 #include "arm_neon.h"
1752
1753Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
1754===================================================================
1755--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
1756+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
1757@@ -3,7 +3,8 @@
1758
1759 /* { dg-do assemble } */
1760 /* { dg-require-effective-target arm_neon_ok } */
1761-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1762+/* { dg-options "-save-temps -O0" } */
1763+/* { dg-add-options arm_neon } */
1764
1765 #include "arm_neon.h"
1766
1767Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
1768===================================================================
1769--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
1770+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
1771@@ -3,7 +3,8 @@
1772
1773 /* { dg-do assemble } */
1774 /* { dg-require-effective-target arm_neon_ok } */
1775-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1776+/* { dg-options "-save-temps -O0" } */
1777+/* { dg-add-options arm_neon } */
1778
1779 #include "arm_neon.h"
1780
1781Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
1782===================================================================
1783--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
1784+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
1785@@ -3,7 +3,8 @@
1786
1787 /* { dg-do assemble } */
1788 /* { dg-require-effective-target arm_neon_ok } */
1789-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1790+/* { dg-options "-save-temps -O0" } */
1791+/* { dg-add-options arm_neon } */
1792
1793 #include "arm_neon.h"
1794
1795Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
1796===================================================================
1797--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
1798+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
1799@@ -3,7 +3,8 @@
1800
1801 /* { dg-do assemble } */
1802 /* { dg-require-effective-target arm_neon_ok } */
1803-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1804+/* { dg-options "-save-temps -O0" } */
1805+/* { dg-add-options arm_neon } */
1806
1807 #include "arm_neon.h"
1808
1809Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
1810===================================================================
1811--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
1812+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
1813@@ -3,7 +3,8 @@
1814
1815 /* { dg-do assemble } */
1816 /* { dg-require-effective-target arm_neon_ok } */
1817-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1818+/* { dg-options "-save-temps -O0" } */
1819+/* { dg-add-options arm_neon } */
1820
1821 #include "arm_neon.h"
1822
1823Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
1824===================================================================
1825--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
1826+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
1827@@ -3,7 +3,8 @@
1828
1829 /* { dg-do assemble } */
1830 /* { dg-require-effective-target arm_neon_ok } */
1831-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1832+/* { dg-options "-save-temps -O0" } */
1833+/* { dg-add-options arm_neon } */
1834
1835 #include "arm_neon.h"
1836
1837Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
1838===================================================================
1839--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
1840+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
1841@@ -3,7 +3,8 @@
1842
1843 /* { dg-do assemble } */
1844 /* { dg-require-effective-target arm_neon_ok } */
1845-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1846+/* { dg-options "-save-temps -O0" } */
1847+/* { dg-add-options arm_neon } */
1848
1849 #include "arm_neon.h"
1850
1851Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
1852===================================================================
1853--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
1854+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
1855@@ -3,7 +3,8 @@
1856
1857 /* { dg-do assemble } */
1858 /* { dg-require-effective-target arm_neon_ok } */
1859-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1860+/* { dg-options "-save-temps -O0" } */
1861+/* { dg-add-options arm_neon } */
1862
1863 #include "arm_neon.h"
1864
1865Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
1866===================================================================
1867--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
1868+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
1869@@ -3,7 +3,8 @@
1870
1871 /* { dg-do assemble } */
1872 /* { dg-require-effective-target arm_neon_ok } */
1873-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1874+/* { dg-options "-save-temps -O0" } */
1875+/* { dg-add-options arm_neon } */
1876
1877 #include "arm_neon.h"
1878
1879Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabds16.c
1880===================================================================
1881--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabds16.c
1882+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabds16.c
1883@@ -3,7 +3,8 @@
1884
1885 /* { dg-do assemble } */
1886 /* { dg-require-effective-target arm_neon_ok } */
1887-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1888+/* { dg-options "-save-temps -O0" } */
1889+/* { dg-add-options arm_neon } */
1890
1891 #include "arm_neon.h"
1892
1893Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabds32.c
1894===================================================================
1895--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabds32.c
1896+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabds32.c
1897@@ -3,7 +3,8 @@
1898
1899 /* { dg-do assemble } */
1900 /* { dg-require-effective-target arm_neon_ok } */
1901-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1902+/* { dg-options "-save-temps -O0" } */
1903+/* { dg-add-options arm_neon } */
1904
1905 #include "arm_neon.h"
1906
1907Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabds8.c
1908===================================================================
1909--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabds8.c
1910+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabds8.c
1911@@ -3,7 +3,8 @@
1912
1913 /* { dg-do assemble } */
1914 /* { dg-require-effective-target arm_neon_ok } */
1915-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1916+/* { dg-options "-save-temps -O0" } */
1917+/* { dg-add-options arm_neon } */
1918
1919 #include "arm_neon.h"
1920
1921Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
1922===================================================================
1923--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
1924+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
1925@@ -3,7 +3,8 @@
1926
1927 /* { dg-do assemble } */
1928 /* { dg-require-effective-target arm_neon_ok } */
1929-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1930+/* { dg-options "-save-temps -O0" } */
1931+/* { dg-add-options arm_neon } */
1932
1933 #include "arm_neon.h"
1934
1935Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
1936===================================================================
1937--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
1938+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
1939@@ -3,7 +3,8 @@
1940
1941 /* { dg-do assemble } */
1942 /* { dg-require-effective-target arm_neon_ok } */
1943-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1944+/* { dg-options "-save-temps -O0" } */
1945+/* { dg-add-options arm_neon } */
1946
1947 #include "arm_neon.h"
1948
1949Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
1950===================================================================
1951--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
1952+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
1953@@ -3,7 +3,8 @@
1954
1955 /* { dg-do assemble } */
1956 /* { dg-require-effective-target arm_neon_ok } */
1957-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1958+/* { dg-options "-save-temps -O0" } */
1959+/* { dg-add-options arm_neon } */
1960
1961 #include "arm_neon.h"
1962
1963Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
1964===================================================================
1965--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
1966+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
1967@@ -3,7 +3,8 @@
1968
1969 /* { dg-do assemble } */
1970 /* { dg-require-effective-target arm_neon_ok } */
1971-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1972+/* { dg-options "-save-temps -O0" } */
1973+/* { dg-add-options arm_neon } */
1974
1975 #include "arm_neon.h"
1976
1977Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
1978===================================================================
1979--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
1980+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
1981@@ -3,7 +3,8 @@
1982
1983 /* { dg-do assemble } */
1984 /* { dg-require-effective-target arm_neon_ok } */
1985-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
1986+/* { dg-options "-save-temps -O0" } */
1987+/* { dg-add-options arm_neon } */
1988
1989 #include "arm_neon.h"
1990
1991Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
1992===================================================================
1993--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
1994+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
1995@@ -3,7 +3,8 @@
1996
1997 /* { dg-do assemble } */
1998 /* { dg-require-effective-target arm_neon_ok } */
1999-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2000+/* { dg-options "-save-temps -O0" } */
2001+/* { dg-add-options arm_neon } */
2002
2003 #include "arm_neon.h"
2004
2005Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
2006===================================================================
2007--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
2008+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
2009@@ -3,7 +3,8 @@
2010
2011 /* { dg-do assemble } */
2012 /* { dg-require-effective-target arm_neon_ok } */
2013-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2014+/* { dg-options "-save-temps -O0" } */
2015+/* { dg-add-options arm_neon } */
2016
2017 #include "arm_neon.h"
2018
2019Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
2020===================================================================
2021--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
2022+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
2023@@ -3,7 +3,8 @@
2024
2025 /* { dg-do assemble } */
2026 /* { dg-require-effective-target arm_neon_ok } */
2027-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2028+/* { dg-options "-save-temps -O0" } */
2029+/* { dg-add-options arm_neon } */
2030
2031 #include "arm_neon.h"
2032
2033Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabss16.c
2034===================================================================
2035--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabss16.c
2036+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabss16.c
2037@@ -3,7 +3,8 @@
2038
2039 /* { dg-do assemble } */
2040 /* { dg-require-effective-target arm_neon_ok } */
2041-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2042+/* { dg-options "-save-temps -O0" } */
2043+/* { dg-add-options arm_neon } */
2044
2045 #include "arm_neon.h"
2046
2047Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabss32.c
2048===================================================================
2049--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabss32.c
2050+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabss32.c
2051@@ -3,7 +3,8 @@
2052
2053 /* { dg-do assemble } */
2054 /* { dg-require-effective-target arm_neon_ok } */
2055-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2056+/* { dg-options "-save-temps -O0" } */
2057+/* { dg-add-options arm_neon } */
2058
2059 #include "arm_neon.h"
2060
2061Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabss8.c
2062===================================================================
2063--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vabss8.c
2064+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vabss8.c
2065@@ -3,7 +3,8 @@
2066
2067 /* { dg-do assemble } */
2068 /* { dg-require-effective-target arm_neon_ok } */
2069-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2070+/* { dg-options "-save-temps -O0" } */
2071+/* { dg-add-options arm_neon } */
2072
2073 #include "arm_neon.h"
2074
2075Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
2076===================================================================
2077--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
2078+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
2079@@ -3,7 +3,8 @@
2080
2081 /* { dg-do assemble } */
2082 /* { dg-require-effective-target arm_neon_ok } */
2083-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2084+/* { dg-options "-save-temps -O0" } */
2085+/* { dg-add-options arm_neon } */
2086
2087 #include "arm_neon.h"
2088
2089Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
2090===================================================================
2091--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
2092+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
2093@@ -3,7 +3,8 @@
2094
2095 /* { dg-do assemble } */
2096 /* { dg-require-effective-target arm_neon_ok } */
2097-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2098+/* { dg-options "-save-temps -O0" } */
2099+/* { dg-add-options arm_neon } */
2100
2101 #include "arm_neon.h"
2102
2103Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
2104===================================================================
2105--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
2106+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
2107@@ -3,7 +3,8 @@
2108
2109 /* { dg-do assemble } */
2110 /* { dg-require-effective-target arm_neon_ok } */
2111-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2112+/* { dg-options "-save-temps -O0" } */
2113+/* { dg-add-options arm_neon } */
2114
2115 #include "arm_neon.h"
2116
2117Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
2118===================================================================
2119--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
2120+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
2121@@ -3,7 +3,8 @@
2122
2123 /* { dg-do assemble } */
2124 /* { dg-require-effective-target arm_neon_ok } */
2125-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2126+/* { dg-options "-save-temps -O0" } */
2127+/* { dg-add-options arm_neon } */
2128
2129 #include "arm_neon.h"
2130
2131Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
2132===================================================================
2133--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
2134+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
2135@@ -3,7 +3,8 @@
2136
2137 /* { dg-do assemble } */
2138 /* { dg-require-effective-target arm_neon_ok } */
2139-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2140+/* { dg-options "-save-temps -O0" } */
2141+/* { dg-add-options arm_neon } */
2142
2143 #include "arm_neon.h"
2144
2145Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
2146===================================================================
2147--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
2148+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
2149@@ -3,7 +3,8 @@
2150
2151 /* { dg-do assemble } */
2152 /* { dg-require-effective-target arm_neon_ok } */
2153-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2154+/* { dg-options "-save-temps -O0" } */
2155+/* { dg-add-options arm_neon } */
2156
2157 #include "arm_neon.h"
2158
2159Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
2160===================================================================
2161--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
2162+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
2163@@ -3,7 +3,8 @@
2164
2165 /* { dg-do assemble } */
2166 /* { dg-require-effective-target arm_neon_ok } */
2167-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2168+/* { dg-options "-save-temps -O0" } */
2169+/* { dg-add-options arm_neon } */
2170
2171 #include "arm_neon.h"
2172
2173Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
2174===================================================================
2175--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
2176+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
2177@@ -3,7 +3,8 @@
2178
2179 /* { dg-do assemble } */
2180 /* { dg-require-effective-target arm_neon_ok } */
2181-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2182+/* { dg-options "-save-temps -O0" } */
2183+/* { dg-add-options arm_neon } */
2184
2185 #include "arm_neon.h"
2186
2187Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
2188===================================================================
2189--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
2190+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
2191@@ -3,7 +3,8 @@
2192
2193 /* { dg-do assemble } */
2194 /* { dg-require-effective-target arm_neon_ok } */
2195-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2196+/* { dg-options "-save-temps -O0" } */
2197+/* { dg-add-options arm_neon } */
2198
2199 #include "arm_neon.h"
2200
2201Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
2202===================================================================
2203--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
2204+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
2205@@ -3,7 +3,8 @@
2206
2207 /* { dg-do assemble } */
2208 /* { dg-require-effective-target arm_neon_ok } */
2209-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2210+/* { dg-options "-save-temps -O0" } */
2211+/* { dg-add-options arm_neon } */
2212
2213 #include "arm_neon.h"
2214
2215Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
2216===================================================================
2217--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
2218+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
2219@@ -3,7 +3,8 @@
2220
2221 /* { dg-do assemble } */
2222 /* { dg-require-effective-target arm_neon_ok } */
2223-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2224+/* { dg-options "-save-temps -O0" } */
2225+/* { dg-add-options arm_neon } */
2226
2227 #include "arm_neon.h"
2228
2229Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
2230===================================================================
2231--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
2232+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
2233@@ -3,7 +3,8 @@
2234
2235 /* { dg-do assemble } */
2236 /* { dg-require-effective-target arm_neon_ok } */
2237-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2238+/* { dg-options "-save-temps -O0" } */
2239+/* { dg-add-options arm_neon } */
2240
2241 #include "arm_neon.h"
2242
2243Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
2244===================================================================
2245--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
2246+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
2247@@ -3,7 +3,8 @@
2248
2249 /* { dg-do assemble } */
2250 /* { dg-require-effective-target arm_neon_ok } */
2251-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2252+/* { dg-options "-save-temps -O0" } */
2253+/* { dg-add-options arm_neon } */
2254
2255 #include "arm_neon.h"
2256
2257Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
2258===================================================================
2259--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
2260+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
2261@@ -3,7 +3,8 @@
2262
2263 /* { dg-do assemble } */
2264 /* { dg-require-effective-target arm_neon_ok } */
2265-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2266+/* { dg-options "-save-temps -O0" } */
2267+/* { dg-add-options arm_neon } */
2268
2269 #include "arm_neon.h"
2270
2271Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
2272===================================================================
2273--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
2274+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
2275@@ -3,7 +3,8 @@
2276
2277 /* { dg-do assemble } */
2278 /* { dg-require-effective-target arm_neon_ok } */
2279-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2280+/* { dg-options "-save-temps -O0" } */
2281+/* { dg-add-options arm_neon } */
2282
2283 #include "arm_neon.h"
2284
2285Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
2286===================================================================
2287--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
2288+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
2289@@ -3,7 +3,8 @@
2290
2291 /* { dg-do assemble } */
2292 /* { dg-require-effective-target arm_neon_ok } */
2293-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2294+/* { dg-options "-save-temps -O0" } */
2295+/* { dg-add-options arm_neon } */
2296
2297 #include "arm_neon.h"
2298
2299Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
2300===================================================================
2301--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
2302+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
2303@@ -3,7 +3,8 @@
2304
2305 /* { dg-do assemble } */
2306 /* { dg-require-effective-target arm_neon_ok } */
2307-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2308+/* { dg-options "-save-temps -O0" } */
2309+/* { dg-add-options arm_neon } */
2310
2311 #include "arm_neon.h"
2312
2313Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
2314===================================================================
2315--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
2316+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
2317@@ -3,7 +3,8 @@
2318
2319 /* { dg-do assemble } */
2320 /* { dg-require-effective-target arm_neon_ok } */
2321-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2322+/* { dg-options "-save-temps -O0" } */
2323+/* { dg-add-options arm_neon } */
2324
2325 #include "arm_neon.h"
2326
2327Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
2328===================================================================
2329--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
2330+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
2331@@ -3,7 +3,8 @@
2332
2333 /* { dg-do assemble } */
2334 /* { dg-require-effective-target arm_neon_ok } */
2335-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2336+/* { dg-options "-save-temps -O0" } */
2337+/* { dg-add-options arm_neon } */
2338
2339 #include "arm_neon.h"
2340
2341Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
2342===================================================================
2343--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
2344+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
2345@@ -3,7 +3,8 @@
2346
2347 /* { dg-do assemble } */
2348 /* { dg-require-effective-target arm_neon_ok } */
2349-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2350+/* { dg-options "-save-temps -O0" } */
2351+/* { dg-add-options arm_neon } */
2352
2353 #include "arm_neon.h"
2354
2355Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
2356===================================================================
2357--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
2358+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
2359@@ -3,7 +3,8 @@
2360
2361 /* { dg-do assemble } */
2362 /* { dg-require-effective-target arm_neon_ok } */
2363-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2364+/* { dg-options "-save-temps -O0" } */
2365+/* { dg-add-options arm_neon } */
2366
2367 #include "arm_neon.h"
2368
2369Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
2370===================================================================
2371--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
2372+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
2373@@ -3,7 +3,8 @@
2374
2375 /* { dg-do assemble } */
2376 /* { dg-require-effective-target arm_neon_ok } */
2377-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2378+/* { dg-options "-save-temps -O0" } */
2379+/* { dg-add-options arm_neon } */
2380
2381 #include "arm_neon.h"
2382
2383Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds16.c
2384===================================================================
2385--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vadds16.c
2386+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds16.c
2387@@ -3,7 +3,8 @@
2388
2389 /* { dg-do assemble } */
2390 /* { dg-require-effective-target arm_neon_ok } */
2391-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2392+/* { dg-options "-save-temps -O0" } */
2393+/* { dg-add-options arm_neon } */
2394
2395 #include "arm_neon.h"
2396
2397Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds32.c
2398===================================================================
2399--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vadds32.c
2400+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds32.c
2401@@ -3,7 +3,8 @@
2402
2403 /* { dg-do assemble } */
2404 /* { dg-require-effective-target arm_neon_ok } */
2405-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2406+/* { dg-options "-save-temps -O0" } */
2407+/* { dg-add-options arm_neon } */
2408
2409 #include "arm_neon.h"
2410
2411Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds64.c
2412===================================================================
2413--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vadds64.c
2414+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds64.c
2415@@ -3,7 +3,8 @@
2416
2417 /* { dg-do assemble } */
2418 /* { dg-require-effective-target arm_neon_ok } */
2419-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2420+/* { dg-options "-save-temps -O0" } */
2421+/* { dg-add-options arm_neon } */
2422
2423 #include "arm_neon.h"
2424
2425Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds8.c
2426===================================================================
2427--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vadds8.c
2428+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vadds8.c
2429@@ -3,7 +3,8 @@
2430
2431 /* { dg-do assemble } */
2432 /* { dg-require-effective-target arm_neon_ok } */
2433-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2434+/* { dg-options "-save-temps -O0" } */
2435+/* { dg-add-options arm_neon } */
2436
2437 #include "arm_neon.h"
2438
2439Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
2440===================================================================
2441--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
2442+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
2443@@ -3,7 +3,8 @@
2444
2445 /* { dg-do assemble } */
2446 /* { dg-require-effective-target arm_neon_ok } */
2447-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2448+/* { dg-options "-save-temps -O0" } */
2449+/* { dg-add-options arm_neon } */
2450
2451 #include "arm_neon.h"
2452
2453Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
2454===================================================================
2455--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
2456+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
2457@@ -3,7 +3,8 @@
2458
2459 /* { dg-do assemble } */
2460 /* { dg-require-effective-target arm_neon_ok } */
2461-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2462+/* { dg-options "-save-temps -O0" } */
2463+/* { dg-add-options arm_neon } */
2464
2465 #include "arm_neon.h"
2466
2467Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
2468===================================================================
2469--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
2470+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
2471@@ -3,7 +3,8 @@
2472
2473 /* { dg-do assemble } */
2474 /* { dg-require-effective-target arm_neon_ok } */
2475-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2476+/* { dg-options "-save-temps -O0" } */
2477+/* { dg-add-options arm_neon } */
2478
2479 #include "arm_neon.h"
2480
2481Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
2482===================================================================
2483--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
2484+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
2485@@ -3,7 +3,8 @@
2486
2487 /* { dg-do assemble } */
2488 /* { dg-require-effective-target arm_neon_ok } */
2489-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2490+/* { dg-options "-save-temps -O0" } */
2491+/* { dg-add-options arm_neon } */
2492
2493 #include "arm_neon.h"
2494
2495Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
2496===================================================================
2497--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
2498+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
2499@@ -3,7 +3,8 @@
2500
2501 /* { dg-do assemble } */
2502 /* { dg-require-effective-target arm_neon_ok } */
2503-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2504+/* { dg-options "-save-temps -O0" } */
2505+/* { dg-add-options arm_neon } */
2506
2507 #include "arm_neon.h"
2508
2509Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
2510===================================================================
2511--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
2512+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
2513@@ -3,7 +3,8 @@
2514
2515 /* { dg-do assemble } */
2516 /* { dg-require-effective-target arm_neon_ok } */
2517-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2518+/* { dg-options "-save-temps -O0" } */
2519+/* { dg-add-options arm_neon } */
2520
2521 #include "arm_neon.h"
2522
2523Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
2524===================================================================
2525--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
2526+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
2527@@ -3,7 +3,8 @@
2528
2529 /* { dg-do assemble } */
2530 /* { dg-require-effective-target arm_neon_ok } */
2531-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2532+/* { dg-options "-save-temps -O0" } */
2533+/* { dg-add-options arm_neon } */
2534
2535 #include "arm_neon.h"
2536
2537Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
2538===================================================================
2539--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
2540+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
2541@@ -3,7 +3,8 @@
2542
2543 /* { dg-do assemble } */
2544 /* { dg-require-effective-target arm_neon_ok } */
2545-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2546+/* { dg-options "-save-temps -O0" } */
2547+/* { dg-add-options arm_neon } */
2548
2549 #include "arm_neon.h"
2550
2551Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
2552===================================================================
2553--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
2554+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
2555@@ -3,7 +3,8 @@
2556
2557 /* { dg-do assemble } */
2558 /* { dg-require-effective-target arm_neon_ok } */
2559-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2560+/* { dg-options "-save-temps -O0" } */
2561+/* { dg-add-options arm_neon } */
2562
2563 #include "arm_neon.h"
2564
2565Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
2566===================================================================
2567--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
2568+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
2569@@ -3,7 +3,8 @@
2570
2571 /* { dg-do assemble } */
2572 /* { dg-require-effective-target arm_neon_ok } */
2573-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2574+/* { dg-options "-save-temps -O0" } */
2575+/* { dg-add-options arm_neon } */
2576
2577 #include "arm_neon.h"
2578
2579Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
2580===================================================================
2581--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
2582+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
2583@@ -3,7 +3,8 @@
2584
2585 /* { dg-do assemble } */
2586 /* { dg-require-effective-target arm_neon_ok } */
2587-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2588+/* { dg-options "-save-temps -O0" } */
2589+/* { dg-add-options arm_neon } */
2590
2591 #include "arm_neon.h"
2592
2593Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
2594===================================================================
2595--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
2596+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
2597@@ -3,7 +3,8 @@
2598
2599 /* { dg-do assemble } */
2600 /* { dg-require-effective-target arm_neon_ok } */
2601-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2602+/* { dg-options "-save-temps -O0" } */
2603+/* { dg-add-options arm_neon } */
2604
2605 #include "arm_neon.h"
2606
2607Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
2608===================================================================
2609--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
2610+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
2611@@ -3,7 +3,8 @@
2612
2613 /* { dg-do assemble } */
2614 /* { dg-require-effective-target arm_neon_ok } */
2615-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2616+/* { dg-options "-save-temps -O0" } */
2617+/* { dg-add-options arm_neon } */
2618
2619 #include "arm_neon.h"
2620
2621Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
2622===================================================================
2623--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
2624+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
2625@@ -3,7 +3,8 @@
2626
2627 /* { dg-do assemble } */
2628 /* { dg-require-effective-target arm_neon_ok } */
2629-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2630+/* { dg-options "-save-temps -O0" } */
2631+/* { dg-add-options arm_neon } */
2632
2633 #include "arm_neon.h"
2634
2635Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
2636===================================================================
2637--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
2638+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
2639@@ -3,7 +3,8 @@
2640
2641 /* { dg-do assemble } */
2642 /* { dg-require-effective-target arm_neon_ok } */
2643-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2644+/* { dg-options "-save-temps -O0" } */
2645+/* { dg-add-options arm_neon } */
2646
2647 #include "arm_neon.h"
2648
2649Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
2650===================================================================
2651--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
2652+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
2653@@ -3,7 +3,8 @@
2654
2655 /* { dg-do assemble } */
2656 /* { dg-require-effective-target arm_neon_ok } */
2657-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2658+/* { dg-options "-save-temps -O0" } */
2659+/* { dg-add-options arm_neon } */
2660
2661 #include "arm_neon.h"
2662
2663Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
2664===================================================================
2665--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
2666+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
2667@@ -3,7 +3,8 @@
2668
2669 /* { dg-do assemble } */
2670 /* { dg-require-effective-target arm_neon_ok } */
2671-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2672+/* { dg-options "-save-temps -O0" } */
2673+/* { dg-add-options arm_neon } */
2674
2675 #include "arm_neon.h"
2676
2677Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
2678===================================================================
2679--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
2680+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
2681@@ -3,7 +3,8 @@
2682
2683 /* { dg-do assemble } */
2684 /* { dg-require-effective-target arm_neon_ok } */
2685-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2686+/* { dg-options "-save-temps -O0" } */
2687+/* { dg-add-options arm_neon } */
2688
2689 #include "arm_neon.h"
2690
2691Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands16.c
2692===================================================================
2693--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vands16.c
2694+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands16.c
2695@@ -3,7 +3,8 @@
2696
2697 /* { dg-do assemble } */
2698 /* { dg-require-effective-target arm_neon_ok } */
2699-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2700+/* { dg-options "-save-temps -O0" } */
2701+/* { dg-add-options arm_neon } */
2702
2703 #include "arm_neon.h"
2704
2705Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands32.c
2706===================================================================
2707--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vands32.c
2708+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands32.c
2709@@ -3,7 +3,8 @@
2710
2711 /* { dg-do assemble } */
2712 /* { dg-require-effective-target arm_neon_ok } */
2713-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2714+/* { dg-options "-save-temps -O0" } */
2715+/* { dg-add-options arm_neon } */
2716
2717 #include "arm_neon.h"
2718
2719Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands64.c
2720===================================================================
2721--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vands64.c
2722+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands64.c
2723@@ -3,7 +3,8 @@
2724
2725 /* { dg-do assemble } */
2726 /* { dg-require-effective-target arm_neon_ok } */
2727-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2728+/* { dg-options "-save-temps -O0" } */
2729+/* { dg-add-options arm_neon } */
2730
2731 #include "arm_neon.h"
2732
2733Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands8.c
2734===================================================================
2735--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vands8.c
2736+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vands8.c
2737@@ -3,7 +3,8 @@
2738
2739 /* { dg-do assemble } */
2740 /* { dg-require-effective-target arm_neon_ok } */
2741-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2742+/* { dg-options "-save-temps -O0" } */
2743+/* { dg-add-options arm_neon } */
2744
2745 #include "arm_neon.h"
2746
2747Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu16.c
2748===================================================================
2749--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandu16.c
2750+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu16.c
2751@@ -3,7 +3,8 @@
2752
2753 /* { dg-do assemble } */
2754 /* { dg-require-effective-target arm_neon_ok } */
2755-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2756+/* { dg-options "-save-temps -O0" } */
2757+/* { dg-add-options arm_neon } */
2758
2759 #include "arm_neon.h"
2760
2761Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu32.c
2762===================================================================
2763--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandu32.c
2764+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu32.c
2765@@ -3,7 +3,8 @@
2766
2767 /* { dg-do assemble } */
2768 /* { dg-require-effective-target arm_neon_ok } */
2769-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2770+/* { dg-options "-save-temps -O0" } */
2771+/* { dg-add-options arm_neon } */
2772
2773 #include "arm_neon.h"
2774
2775Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu64.c
2776===================================================================
2777--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandu64.c
2778+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu64.c
2779@@ -3,7 +3,8 @@
2780
2781 /* { dg-do assemble } */
2782 /* { dg-require-effective-target arm_neon_ok } */
2783-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2784+/* { dg-options "-save-temps -O0" } */
2785+/* { dg-add-options arm_neon } */
2786
2787 #include "arm_neon.h"
2788
2789Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu8.c
2790===================================================================
2791--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vandu8.c
2792+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vandu8.c
2793@@ -3,7 +3,8 @@
2794
2795 /* { dg-do assemble } */
2796 /* { dg-require-effective-target arm_neon_ok } */
2797-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2798+/* { dg-options "-save-temps -O0" } */
2799+/* { dg-add-options arm_neon } */
2800
2801 #include "arm_neon.h"
2802
2803Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
2804===================================================================
2805--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
2806+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
2807@@ -3,7 +3,8 @@
2808
2809 /* { dg-do assemble } */
2810 /* { dg-require-effective-target arm_neon_ok } */
2811-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2812+/* { dg-options "-save-temps -O0" } */
2813+/* { dg-add-options arm_neon } */
2814
2815 #include "arm_neon.h"
2816
2817Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
2818===================================================================
2819--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
2820+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
2821@@ -3,7 +3,8 @@
2822
2823 /* { dg-do assemble } */
2824 /* { dg-require-effective-target arm_neon_ok } */
2825-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2826+/* { dg-options "-save-temps -O0" } */
2827+/* { dg-add-options arm_neon } */
2828
2829 #include "arm_neon.h"
2830
2831Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
2832===================================================================
2833--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
2834+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
2835@@ -3,7 +3,8 @@
2836
2837 /* { dg-do assemble } */
2838 /* { dg-require-effective-target arm_neon_ok } */
2839-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2840+/* { dg-options "-save-temps -O0" } */
2841+/* { dg-add-options arm_neon } */
2842
2843 #include "arm_neon.h"
2844
2845Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
2846===================================================================
2847--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
2848+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
2849@@ -3,7 +3,8 @@
2850
2851 /* { dg-do assemble } */
2852 /* { dg-require-effective-target arm_neon_ok } */
2853-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2854+/* { dg-options "-save-temps -O0" } */
2855+/* { dg-add-options arm_neon } */
2856
2857 #include "arm_neon.h"
2858
2859Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
2860===================================================================
2861--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
2862+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
2863@@ -3,7 +3,8 @@
2864
2865 /* { dg-do assemble } */
2866 /* { dg-require-effective-target arm_neon_ok } */
2867-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2868+/* { dg-options "-save-temps -O0" } */
2869+/* { dg-add-options arm_neon } */
2870
2871 #include "arm_neon.h"
2872
2873Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
2874===================================================================
2875--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
2876+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
2877@@ -3,7 +3,8 @@
2878
2879 /* { dg-do assemble } */
2880 /* { dg-require-effective-target arm_neon_ok } */
2881-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2882+/* { dg-options "-save-temps -O0" } */
2883+/* { dg-add-options arm_neon } */
2884
2885 #include "arm_neon.h"
2886
2887Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
2888===================================================================
2889--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
2890+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
2891@@ -3,7 +3,8 @@
2892
2893 /* { dg-do assemble } */
2894 /* { dg-require-effective-target arm_neon_ok } */
2895-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2896+/* { dg-options "-save-temps -O0" } */
2897+/* { dg-add-options arm_neon } */
2898
2899 #include "arm_neon.h"
2900
2901Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
2902===================================================================
2903--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
2904+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
2905@@ -3,7 +3,8 @@
2906
2907 /* { dg-do assemble } */
2908 /* { dg-require-effective-target arm_neon_ok } */
2909-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2910+/* { dg-options "-save-temps -O0" } */
2911+/* { dg-add-options arm_neon } */
2912
2913 #include "arm_neon.h"
2914
2915Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics16.c
2916===================================================================
2917--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbics16.c
2918+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics16.c
2919@@ -3,7 +3,8 @@
2920
2921 /* { dg-do assemble } */
2922 /* { dg-require-effective-target arm_neon_ok } */
2923-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2924+/* { dg-options "-save-temps -O0" } */
2925+/* { dg-add-options arm_neon } */
2926
2927 #include "arm_neon.h"
2928
2929Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics32.c
2930===================================================================
2931--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbics32.c
2932+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics32.c
2933@@ -3,7 +3,8 @@
2934
2935 /* { dg-do assemble } */
2936 /* { dg-require-effective-target arm_neon_ok } */
2937-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2938+/* { dg-options "-save-temps -O0" } */
2939+/* { dg-add-options arm_neon } */
2940
2941 #include "arm_neon.h"
2942
2943Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics64.c
2944===================================================================
2945--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbics64.c
2946+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics64.c
2947@@ -3,7 +3,8 @@
2948
2949 /* { dg-do assemble } */
2950 /* { dg-require-effective-target arm_neon_ok } */
2951-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2952+/* { dg-options "-save-temps -O0" } */
2953+/* { dg-add-options arm_neon } */
2954
2955 #include "arm_neon.h"
2956
2957Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics8.c
2958===================================================================
2959--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbics8.c
2960+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbics8.c
2961@@ -3,7 +3,8 @@
2962
2963 /* { dg-do assemble } */
2964 /* { dg-require-effective-target arm_neon_ok } */
2965-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2966+/* { dg-options "-save-temps -O0" } */
2967+/* { dg-add-options arm_neon } */
2968
2969 #include "arm_neon.h"
2970
2971Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
2972===================================================================
2973--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
2974+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
2975@@ -3,7 +3,8 @@
2976
2977 /* { dg-do assemble } */
2978 /* { dg-require-effective-target arm_neon_ok } */
2979-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2980+/* { dg-options "-save-temps -O0" } */
2981+/* { dg-add-options arm_neon } */
2982
2983 #include "arm_neon.h"
2984
2985Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
2986===================================================================
2987--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
2988+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
2989@@ -3,7 +3,8 @@
2990
2991 /* { dg-do assemble } */
2992 /* { dg-require-effective-target arm_neon_ok } */
2993-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
2994+/* { dg-options "-save-temps -O0" } */
2995+/* { dg-add-options arm_neon } */
2996
2997 #include "arm_neon.h"
2998
2999Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
3000===================================================================
3001--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
3002+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
3003@@ -3,7 +3,8 @@
3004
3005 /* { dg-do assemble } */
3006 /* { dg-require-effective-target arm_neon_ok } */
3007-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3008+/* { dg-options "-save-temps -O0" } */
3009+/* { dg-add-options arm_neon } */
3010
3011 #include "arm_neon.h"
3012
3013Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
3014===================================================================
3015--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
3016+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
3017@@ -3,7 +3,8 @@
3018
3019 /* { dg-do assemble } */
3020 /* { dg-require-effective-target arm_neon_ok } */
3021-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3022+/* { dg-options "-save-temps -O0" } */
3023+/* { dg-add-options arm_neon } */
3024
3025 #include "arm_neon.h"
3026
3027Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
3028===================================================================
3029--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
3030+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
3031@@ -3,7 +3,8 @@
3032
3033 /* { dg-do assemble } */
3034 /* { dg-require-effective-target arm_neon_ok } */
3035-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3036+/* { dg-options "-save-temps -O0" } */
3037+/* { dg-add-options arm_neon } */
3038
3039 #include "arm_neon.h"
3040
3041Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
3042===================================================================
3043--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
3044+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
3045@@ -3,7 +3,8 @@
3046
3047 /* { dg-do assemble } */
3048 /* { dg-require-effective-target arm_neon_ok } */
3049-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3050+/* { dg-options "-save-temps -O0" } */
3051+/* { dg-add-options arm_neon } */
3052
3053 #include "arm_neon.h"
3054
3055Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
3056===================================================================
3057--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
3058+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
3059@@ -3,7 +3,8 @@
3060
3061 /* { dg-do assemble } */
3062 /* { dg-require-effective-target arm_neon_ok } */
3063-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3064+/* { dg-options "-save-temps -O0" } */
3065+/* { dg-add-options arm_neon } */
3066
3067 #include "arm_neon.h"
3068
3069Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
3070===================================================================
3071--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
3072+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
3073@@ -3,7 +3,8 @@
3074
3075 /* { dg-do assemble } */
3076 /* { dg-require-effective-target arm_neon_ok } */
3077-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3078+/* { dg-options "-save-temps -O0" } */
3079+/* { dg-add-options arm_neon } */
3080
3081 #include "arm_neon.h"
3082
3083Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
3084===================================================================
3085--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
3086+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
3087@@ -3,7 +3,8 @@
3088
3089 /* { dg-do assemble } */
3090 /* { dg-require-effective-target arm_neon_ok } */
3091-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3092+/* { dg-options "-save-temps -O0" } */
3093+/* { dg-add-options arm_neon } */
3094
3095 #include "arm_neon.h"
3096
3097Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
3098===================================================================
3099--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
3100+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
3101@@ -3,7 +3,8 @@
3102
3103 /* { dg-do assemble } */
3104 /* { dg-require-effective-target arm_neon_ok } */
3105-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3106+/* { dg-options "-save-temps -O0" } */
3107+/* { dg-add-options arm_neon } */
3108
3109 #include "arm_neon.h"
3110
3111Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
3112===================================================================
3113--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
3114+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
3115@@ -3,7 +3,8 @@
3116
3117 /* { dg-do assemble } */
3118 /* { dg-require-effective-target arm_neon_ok } */
3119-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3120+/* { dg-options "-save-temps -O0" } */
3121+/* { dg-add-options arm_neon } */
3122
3123 #include "arm_neon.h"
3124
3125Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
3126===================================================================
3127--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
3128+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
3129@@ -3,7 +3,8 @@
3130
3131 /* { dg-do assemble } */
3132 /* { dg-require-effective-target arm_neon_ok } */
3133-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3134+/* { dg-options "-save-temps -O0" } */
3135+/* { dg-add-options arm_neon } */
3136
3137 #include "arm_neon.h"
3138
3139Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
3140===================================================================
3141--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
3142+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
3143@@ -3,7 +3,8 @@
3144
3145 /* { dg-do assemble } */
3146 /* { dg-require-effective-target arm_neon_ok } */
3147-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3148+/* { dg-options "-save-temps -O0" } */
3149+/* { dg-add-options arm_neon } */
3150
3151 #include "arm_neon.h"
3152
3153Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
3154===================================================================
3155--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
3156+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
3157@@ -3,7 +3,8 @@
3158
3159 /* { dg-do assemble } */
3160 /* { dg-require-effective-target arm_neon_ok } */
3161-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3162+/* { dg-options "-save-temps -O0" } */
3163+/* { dg-add-options arm_neon } */
3164
3165 #include "arm_neon.h"
3166
3167Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
3168===================================================================
3169--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
3170+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
3171@@ -3,7 +3,8 @@
3172
3173 /* { dg-do assemble } */
3174 /* { dg-require-effective-target arm_neon_ok } */
3175-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3176+/* { dg-options "-save-temps -O0" } */
3177+/* { dg-add-options arm_neon } */
3178
3179 #include "arm_neon.h"
3180
3181Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
3182===================================================================
3183--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
3184+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
3185@@ -3,7 +3,8 @@
3186
3187 /* { dg-do assemble } */
3188 /* { dg-require-effective-target arm_neon_ok } */
3189-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3190+/* { dg-options "-save-temps -O0" } */
3191+/* { dg-add-options arm_neon } */
3192
3193 #include "arm_neon.h"
3194
3195Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
3196===================================================================
3197--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
3198+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
3199@@ -3,7 +3,8 @@
3200
3201 /* { dg-do assemble } */
3202 /* { dg-require-effective-target arm_neon_ok } */
3203-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3204+/* { dg-options "-save-temps -O0" } */
3205+/* { dg-add-options arm_neon } */
3206
3207 #include "arm_neon.h"
3208
3209Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
3210===================================================================
3211--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
3212+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
3213@@ -3,7 +3,8 @@
3214
3215 /* { dg-do assemble } */
3216 /* { dg-require-effective-target arm_neon_ok } */
3217-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3218+/* { dg-options "-save-temps -O0" } */
3219+/* { dg-add-options arm_neon } */
3220
3221 #include "arm_neon.h"
3222
3223Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
3224===================================================================
3225--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
3226+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
3227@@ -3,7 +3,8 @@
3228
3229 /* { dg-do assemble } */
3230 /* { dg-require-effective-target arm_neon_ok } */
3231-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3232+/* { dg-options "-save-temps -O0" } */
3233+/* { dg-add-options arm_neon } */
3234
3235 #include "arm_neon.h"
3236
3237Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
3238===================================================================
3239--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
3240+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
3241@@ -3,7 +3,8 @@
3242
3243 /* { dg-do assemble } */
3244 /* { dg-require-effective-target arm_neon_ok } */
3245-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3246+/* { dg-options "-save-temps -O0" } */
3247+/* { dg-add-options arm_neon } */
3248
3249 #include "arm_neon.h"
3250
3251Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
3252===================================================================
3253--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
3254+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
3255@@ -3,7 +3,8 @@
3256
3257 /* { dg-do assemble } */
3258 /* { dg-require-effective-target arm_neon_ok } */
3259-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3260+/* { dg-options "-save-temps -O0" } */
3261+/* { dg-add-options arm_neon } */
3262
3263 #include "arm_neon.h"
3264
3265Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
3266===================================================================
3267--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
3268+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
3269@@ -3,7 +3,8 @@
3270
3271 /* { dg-do assemble } */
3272 /* { dg-require-effective-target arm_neon_ok } */
3273-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3274+/* { dg-options "-save-temps -O0" } */
3275+/* { dg-add-options arm_neon } */
3276
3277 #include "arm_neon.h"
3278
3279Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
3280===================================================================
3281--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
3282+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
3283@@ -3,7 +3,8 @@
3284
3285 /* { dg-do assemble } */
3286 /* { dg-require-effective-target arm_neon_ok } */
3287-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3288+/* { dg-options "-save-temps -O0" } */
3289+/* { dg-add-options arm_neon } */
3290
3291 #include "arm_neon.h"
3292
3293Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
3294===================================================================
3295--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
3296+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
3297@@ -3,7 +3,8 @@
3298
3299 /* { dg-do assemble } */
3300 /* { dg-require-effective-target arm_neon_ok } */
3301-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3302+/* { dg-options "-save-temps -O0" } */
3303+/* { dg-add-options arm_neon } */
3304
3305 #include "arm_neon.h"
3306
3307Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
3308===================================================================
3309--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
3310+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
3311@@ -3,7 +3,8 @@
3312
3313 /* { dg-do assemble } */
3314 /* { dg-require-effective-target arm_neon_ok } */
3315-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3316+/* { dg-options "-save-temps -O0" } */
3317+/* { dg-add-options arm_neon } */
3318
3319 #include "arm_neon.h"
3320
3321Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
3322===================================================================
3323--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
3324+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
3325@@ -3,7 +3,8 @@
3326
3327 /* { dg-do assemble } */
3328 /* { dg-require-effective-target arm_neon_ok } */
3329-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3330+/* { dg-options "-save-temps -O0" } */
3331+/* { dg-add-options arm_neon } */
3332
3333 #include "arm_neon.h"
3334
3335Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
3336===================================================================
3337--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
3338+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
3339@@ -3,7 +3,8 @@
3340
3341 /* { dg-do assemble } */
3342 /* { dg-require-effective-target arm_neon_ok } */
3343-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3344+/* { dg-options "-save-temps -O0" } */
3345+/* { dg-add-options arm_neon } */
3346
3347 #include "arm_neon.h"
3348
3349Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
3350===================================================================
3351--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
3352+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
3353@@ -3,7 +3,8 @@
3354
3355 /* { dg-do assemble } */
3356 /* { dg-require-effective-target arm_neon_ok } */
3357-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3358+/* { dg-options "-save-temps -O0" } */
3359+/* { dg-add-options arm_neon } */
3360
3361 #include "arm_neon.h"
3362
3363Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
3364===================================================================
3365--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
3366+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
3367@@ -3,7 +3,8 @@
3368
3369 /* { dg-do assemble } */
3370 /* { dg-require-effective-target arm_neon_ok } */
3371-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3372+/* { dg-options "-save-temps -O0" } */
3373+/* { dg-add-options arm_neon } */
3374
3375 #include "arm_neon.h"
3376
3377Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
3378===================================================================
3379--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
3380+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
3381@@ -3,7 +3,8 @@
3382
3383 /* { dg-do assemble } */
3384 /* { dg-require-effective-target arm_neon_ok } */
3385-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3386+/* { dg-options "-save-temps -O0" } */
3387+/* { dg-add-options arm_neon } */
3388
3389 #include "arm_neon.h"
3390
3391Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
3392===================================================================
3393--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
3394+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
3395@@ -3,7 +3,8 @@
3396
3397 /* { dg-do assemble } */
3398 /* { dg-require-effective-target arm_neon_ok } */
3399-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3400+/* { dg-options "-save-temps -O0" } */
3401+/* { dg-add-options arm_neon } */
3402
3403 #include "arm_neon.h"
3404
3405Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
3406===================================================================
3407--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
3408+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
3409@@ -3,7 +3,8 @@
3410
3411 /* { dg-do assemble } */
3412 /* { dg-require-effective-target arm_neon_ok } */
3413-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3414+/* { dg-options "-save-temps -O0" } */
3415+/* { dg-add-options arm_neon } */
3416
3417 #include "arm_neon.h"
3418
3419Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
3420===================================================================
3421--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
3422+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
3423@@ -3,7 +3,8 @@
3424
3425 /* { dg-do assemble } */
3426 /* { dg-require-effective-target arm_neon_ok } */
3427-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3428+/* { dg-options "-save-temps -O0" } */
3429+/* { dg-add-options arm_neon } */
3430
3431 #include "arm_neon.h"
3432
3433Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
3434===================================================================
3435--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
3436+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
3437@@ -3,7 +3,8 @@
3438
3439 /* { dg-do assemble } */
3440 /* { dg-require-effective-target arm_neon_ok } */
3441-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3442+/* { dg-options "-save-temps -O0" } */
3443+/* { dg-add-options arm_neon } */
3444
3445 #include "arm_neon.h"
3446
3447Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
3448===================================================================
3449--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
3450+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
3451@@ -3,7 +3,8 @@
3452
3453 /* { dg-do assemble } */
3454 /* { dg-require-effective-target arm_neon_ok } */
3455-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3456+/* { dg-options "-save-temps -O0" } */
3457+/* { dg-add-options arm_neon } */
3458
3459 #include "arm_neon.h"
3460
3461Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
3462===================================================================
3463--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
3464+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
3465@@ -3,7 +3,8 @@
3466
3467 /* { dg-do assemble } */
3468 /* { dg-require-effective-target arm_neon_ok } */
3469-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3470+/* { dg-options "-save-temps -O0" } */
3471+/* { dg-add-options arm_neon } */
3472
3473 #include "arm_neon.h"
3474
3475Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
3476===================================================================
3477--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
3478+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
3479@@ -3,7 +3,8 @@
3480
3481 /* { dg-do assemble } */
3482 /* { dg-require-effective-target arm_neon_ok } */
3483-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3484+/* { dg-options "-save-temps -O0" } */
3485+/* { dg-add-options arm_neon } */
3486
3487 #include "arm_neon.h"
3488
3489Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
3490===================================================================
3491--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
3492+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
3493@@ -3,7 +3,8 @@
3494
3495 /* { dg-do assemble } */
3496 /* { dg-require-effective-target arm_neon_ok } */
3497-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3498+/* { dg-options "-save-temps -O0" } */
3499+/* { dg-add-options arm_neon } */
3500
3501 #include "arm_neon.h"
3502
3503Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
3504===================================================================
3505--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
3506+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
3507@@ -3,7 +3,8 @@
3508
3509 /* { dg-do assemble } */
3510 /* { dg-require-effective-target arm_neon_ok } */
3511-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3512+/* { dg-options "-save-temps -O0" } */
3513+/* { dg-add-options arm_neon } */
3514
3515 #include "arm_neon.h"
3516
3517Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
3518===================================================================
3519--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
3520+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
3521@@ -3,7 +3,8 @@
3522
3523 /* { dg-do assemble } */
3524 /* { dg-require-effective-target arm_neon_ok } */
3525-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3526+/* { dg-options "-save-temps -O0" } */
3527+/* { dg-add-options arm_neon } */
3528
3529 #include "arm_neon.h"
3530
3531Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
3532===================================================================
3533--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
3534+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
3535@@ -3,7 +3,8 @@
3536
3537 /* { dg-do assemble } */
3538 /* { dg-require-effective-target arm_neon_ok } */
3539-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3540+/* { dg-options "-save-temps -O0" } */
3541+/* { dg-add-options arm_neon } */
3542
3543 #include "arm_neon.h"
3544
3545Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
3546===================================================================
3547--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
3548+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
3549@@ -3,7 +3,8 @@
3550
3551 /* { dg-do assemble } */
3552 /* { dg-require-effective-target arm_neon_ok } */
3553-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3554+/* { dg-options "-save-temps -O0" } */
3555+/* { dg-add-options arm_neon } */
3556
3557 #include "arm_neon.h"
3558
3559Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
3560===================================================================
3561--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
3562+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
3563@@ -3,7 +3,8 @@
3564
3565 /* { dg-do assemble } */
3566 /* { dg-require-effective-target arm_neon_ok } */
3567-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3568+/* { dg-options "-save-temps -O0" } */
3569+/* { dg-add-options arm_neon } */
3570
3571 #include "arm_neon.h"
3572
3573Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
3574===================================================================
3575--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
3576+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
3577@@ -3,7 +3,8 @@
3578
3579 /* { dg-do assemble } */
3580 /* { dg-require-effective-target arm_neon_ok } */
3581-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3582+/* { dg-options "-save-temps -O0" } */
3583+/* { dg-add-options arm_neon } */
3584
3585 #include "arm_neon.h"
3586
3587Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
3588===================================================================
3589--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
3590+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
3591@@ -3,7 +3,8 @@
3592
3593 /* { dg-do assemble } */
3594 /* { dg-require-effective-target arm_neon_ok } */
3595-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3596+/* { dg-options "-save-temps -O0" } */
3597+/* { dg-add-options arm_neon } */
3598
3599 #include "arm_neon.h"
3600
3601Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
3602===================================================================
3603--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
3604+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
3605@@ -3,7 +3,8 @@
3606
3607 /* { dg-do assemble } */
3608 /* { dg-require-effective-target arm_neon_ok } */
3609-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3610+/* { dg-options "-save-temps -O0" } */
3611+/* { dg-add-options arm_neon } */
3612
3613 #include "arm_neon.h"
3614
3615Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
3616===================================================================
3617--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
3618+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
3619@@ -3,7 +3,8 @@
3620
3621 /* { dg-do assemble } */
3622 /* { dg-require-effective-target arm_neon_ok } */
3623-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3624+/* { dg-options "-save-temps -O0" } */
3625+/* { dg-add-options arm_neon } */
3626
3627 #include "arm_neon.h"
3628
3629Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
3630===================================================================
3631--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
3632+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
3633@@ -3,7 +3,8 @@
3634
3635 /* { dg-do assemble } */
3636 /* { dg-require-effective-target arm_neon_ok } */
3637-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3638+/* { dg-options "-save-temps -O0" } */
3639+/* { dg-add-options arm_neon } */
3640
3641 #include "arm_neon.h"
3642
3643Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
3644===================================================================
3645--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
3646+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
3647@@ -3,7 +3,8 @@
3648
3649 /* { dg-do assemble } */
3650 /* { dg-require-effective-target arm_neon_ok } */
3651-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3652+/* { dg-options "-save-temps -O0" } */
3653+/* { dg-add-options arm_neon } */
3654
3655 #include "arm_neon.h"
3656
3657Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
3658===================================================================
3659--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
3660+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
3661@@ -3,7 +3,8 @@
3662
3663 /* { dg-do assemble } */
3664 /* { dg-require-effective-target arm_neon_ok } */
3665-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3666+/* { dg-options "-save-temps -O0" } */
3667+/* { dg-add-options arm_neon } */
3668
3669 #include "arm_neon.h"
3670
3671Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
3672===================================================================
3673--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
3674+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
3675@@ -3,7 +3,8 @@
3676
3677 /* { dg-do assemble } */
3678 /* { dg-require-effective-target arm_neon_ok } */
3679-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3680+/* { dg-options "-save-temps -O0" } */
3681+/* { dg-add-options arm_neon } */
3682
3683 #include "arm_neon.h"
3684
3685Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
3686===================================================================
3687--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
3688+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
3689@@ -3,7 +3,8 @@
3690
3691 /* { dg-do assemble } */
3692 /* { dg-require-effective-target arm_neon_ok } */
3693-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3694+/* { dg-options "-save-temps -O0" } */
3695+/* { dg-add-options arm_neon } */
3696
3697 #include "arm_neon.h"
3698
3699Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
3700===================================================================
3701--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
3702+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
3703@@ -3,7 +3,8 @@
3704
3705 /* { dg-do assemble } */
3706 /* { dg-require-effective-target arm_neon_ok } */
3707-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3708+/* { dg-options "-save-temps -O0" } */
3709+/* { dg-add-options arm_neon } */
3710
3711 #include "arm_neon.h"
3712
3713Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
3714===================================================================
3715--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
3716+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
3717@@ -3,7 +3,8 @@
3718
3719 /* { dg-do assemble } */
3720 /* { dg-require-effective-target arm_neon_ok } */
3721-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3722+/* { dg-options "-save-temps -O0" } */
3723+/* { dg-add-options arm_neon } */
3724
3725 #include "arm_neon.h"
3726
3727Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
3728===================================================================
3729--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
3730+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
3731@@ -3,7 +3,8 @@
3732
3733 /* { dg-do assemble } */
3734 /* { dg-require-effective-target arm_neon_ok } */
3735-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3736+/* { dg-options "-save-temps -O0" } */
3737+/* { dg-add-options arm_neon } */
3738
3739 #include "arm_neon.h"
3740
3741Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
3742===================================================================
3743--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
3744+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
3745@@ -3,7 +3,8 @@
3746
3747 /* { dg-do assemble } */
3748 /* { dg-require-effective-target arm_neon_ok } */
3749-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3750+/* { dg-options "-save-temps -O0" } */
3751+/* { dg-add-options arm_neon } */
3752
3753 #include "arm_neon.h"
3754
3755Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
3756===================================================================
3757--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
3758+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
3759@@ -3,7 +3,8 @@
3760
3761 /* { dg-do assemble } */
3762 /* { dg-require-effective-target arm_neon_ok } */
3763-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3764+/* { dg-options "-save-temps -O0" } */
3765+/* { dg-add-options arm_neon } */
3766
3767 #include "arm_neon.h"
3768
3769Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
3770===================================================================
3771--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
3772+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
3773@@ -3,7 +3,8 @@
3774
3775 /* { dg-do assemble } */
3776 /* { dg-require-effective-target arm_neon_ok } */
3777-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3778+/* { dg-options "-save-temps -O0" } */
3779+/* { dg-add-options arm_neon } */
3780
3781 #include "arm_neon.h"
3782
3783Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcges16.c
3784===================================================================
3785--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcges16.c
3786+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcges16.c
3787@@ -3,7 +3,8 @@
3788
3789 /* { dg-do assemble } */
3790 /* { dg-require-effective-target arm_neon_ok } */
3791-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3792+/* { dg-options "-save-temps -O0" } */
3793+/* { dg-add-options arm_neon } */
3794
3795 #include "arm_neon.h"
3796
3797Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcges32.c
3798===================================================================
3799--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcges32.c
3800+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcges32.c
3801@@ -3,7 +3,8 @@
3802
3803 /* { dg-do assemble } */
3804 /* { dg-require-effective-target arm_neon_ok } */
3805-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3806+/* { dg-options "-save-temps -O0" } */
3807+/* { dg-add-options arm_neon } */
3808
3809 #include "arm_neon.h"
3810
3811Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcges8.c
3812===================================================================
3813--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcges8.c
3814+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcges8.c
3815@@ -3,7 +3,8 @@
3816
3817 /* { dg-do assemble } */
3818 /* { dg-require-effective-target arm_neon_ok } */
3819-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3820+/* { dg-options "-save-temps -O0" } */
3821+/* { dg-add-options arm_neon } */
3822
3823 #include "arm_neon.h"
3824
3825Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
3826===================================================================
3827--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
3828+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
3829@@ -3,7 +3,8 @@
3830
3831 /* { dg-do assemble } */
3832 /* { dg-require-effective-target arm_neon_ok } */
3833-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3834+/* { dg-options "-save-temps -O0" } */
3835+/* { dg-add-options arm_neon } */
3836
3837 #include "arm_neon.h"
3838
3839Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
3840===================================================================
3841--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
3842+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
3843@@ -3,7 +3,8 @@
3844
3845 /* { dg-do assemble } */
3846 /* { dg-require-effective-target arm_neon_ok } */
3847-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3848+/* { dg-options "-save-temps -O0" } */
3849+/* { dg-add-options arm_neon } */
3850
3851 #include "arm_neon.h"
3852
3853Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
3854===================================================================
3855--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
3856+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
3857@@ -3,7 +3,8 @@
3858
3859 /* { dg-do assemble } */
3860 /* { dg-require-effective-target arm_neon_ok } */
3861-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3862+/* { dg-options "-save-temps -O0" } */
3863+/* { dg-add-options arm_neon } */
3864
3865 #include "arm_neon.h"
3866
3867Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
3868===================================================================
3869--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
3870+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
3871@@ -3,7 +3,8 @@
3872
3873 /* { dg-do assemble } */
3874 /* { dg-require-effective-target arm_neon_ok } */
3875-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3876+/* { dg-options "-save-temps -O0" } */
3877+/* { dg-add-options arm_neon } */
3878
3879 #include "arm_neon.h"
3880
3881Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
3882===================================================================
3883--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
3884+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
3885@@ -3,7 +3,8 @@
3886
3887 /* { dg-do assemble } */
3888 /* { dg-require-effective-target arm_neon_ok } */
3889-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3890+/* { dg-options "-save-temps -O0" } */
3891+/* { dg-add-options arm_neon } */
3892
3893 #include "arm_neon.h"
3894
3895Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
3896===================================================================
3897--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
3898+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
3899@@ -3,7 +3,8 @@
3900
3901 /* { dg-do assemble } */
3902 /* { dg-require-effective-target arm_neon_ok } */
3903-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3904+/* { dg-options "-save-temps -O0" } */
3905+/* { dg-add-options arm_neon } */
3906
3907 #include "arm_neon.h"
3908
3909Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
3910===================================================================
3911--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
3912+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
3913@@ -3,7 +3,8 @@
3914
3915 /* { dg-do assemble } */
3916 /* { dg-require-effective-target arm_neon_ok } */
3917-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3918+/* { dg-options "-save-temps -O0" } */
3919+/* { dg-add-options arm_neon } */
3920
3921 #include "arm_neon.h"
3922
3923Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
3924===================================================================
3925--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
3926+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
3927@@ -3,7 +3,8 @@
3928
3929 /* { dg-do assemble } */
3930 /* { dg-require-effective-target arm_neon_ok } */
3931-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3932+/* { dg-options "-save-temps -O0" } */
3933+/* { dg-add-options arm_neon } */
3934
3935 #include "arm_neon.h"
3936
3937Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
3938===================================================================
3939--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
3940+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
3941@@ -3,7 +3,8 @@
3942
3943 /* { dg-do assemble } */
3944 /* { dg-require-effective-target arm_neon_ok } */
3945-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3946+/* { dg-options "-save-temps -O0" } */
3947+/* { dg-add-options arm_neon } */
3948
3949 #include "arm_neon.h"
3950
3951Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
3952===================================================================
3953--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
3954+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
3955@@ -3,7 +3,8 @@
3956
3957 /* { dg-do assemble } */
3958 /* { dg-require-effective-target arm_neon_ok } */
3959-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3960+/* { dg-options "-save-temps -O0" } */
3961+/* { dg-add-options arm_neon } */
3962
3963 #include "arm_neon.h"
3964
3965Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
3966===================================================================
3967--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
3968+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
3969@@ -3,7 +3,8 @@
3970
3971 /* { dg-do assemble } */
3972 /* { dg-require-effective-target arm_neon_ok } */
3973-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3974+/* { dg-options "-save-temps -O0" } */
3975+/* { dg-add-options arm_neon } */
3976
3977 #include "arm_neon.h"
3978
3979Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
3980===================================================================
3981--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
3982+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
3983@@ -3,7 +3,8 @@
3984
3985 /* { dg-do assemble } */
3986 /* { dg-require-effective-target arm_neon_ok } */
3987-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
3988+/* { dg-options "-save-temps -O0" } */
3989+/* { dg-add-options arm_neon } */
3990
3991 #include "arm_neon.h"
3992
3993Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
3994===================================================================
3995--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
3996+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
3997@@ -3,7 +3,8 @@
3998
3999 /* { dg-do assemble } */
4000 /* { dg-require-effective-target arm_neon_ok } */
4001-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4002+/* { dg-options "-save-temps -O0" } */
4003+/* { dg-add-options arm_neon } */
4004
4005 #include "arm_neon.h"
4006
4007Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
4008===================================================================
4009--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
4010+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
4011@@ -3,7 +3,8 @@
4012
4013 /* { dg-do assemble } */
4014 /* { dg-require-effective-target arm_neon_ok } */
4015-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4016+/* { dg-options "-save-temps -O0" } */
4017+/* { dg-add-options arm_neon } */
4018
4019 #include "arm_neon.h"
4020
4021Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
4022===================================================================
4023--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
4024+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
4025@@ -3,7 +3,8 @@
4026
4027 /* { dg-do assemble } */
4028 /* { dg-require-effective-target arm_neon_ok } */
4029-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4030+/* { dg-options "-save-temps -O0" } */
4031+/* { dg-add-options arm_neon } */
4032
4033 #include "arm_neon.h"
4034
4035Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
4036===================================================================
4037--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
4038+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
4039@@ -3,7 +3,8 @@
4040
4041 /* { dg-do assemble } */
4042 /* { dg-require-effective-target arm_neon_ok } */
4043-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4044+/* { dg-options "-save-temps -O0" } */
4045+/* { dg-add-options arm_neon } */
4046
4047 #include "arm_neon.h"
4048
4049Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
4050===================================================================
4051--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
4052+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
4053@@ -3,7 +3,8 @@
4054
4055 /* { dg-do assemble } */
4056 /* { dg-require-effective-target arm_neon_ok } */
4057-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4058+/* { dg-options "-save-temps -O0" } */
4059+/* { dg-add-options arm_neon } */
4060
4061 #include "arm_neon.h"
4062
4063Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
4064===================================================================
4065--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
4066+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
4067@@ -3,7 +3,8 @@
4068
4069 /* { dg-do assemble } */
4070 /* { dg-require-effective-target arm_neon_ok } */
4071-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4072+/* { dg-options "-save-temps -O0" } */
4073+/* { dg-add-options arm_neon } */
4074
4075 #include "arm_neon.h"
4076
4077Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
4078===================================================================
4079--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
4080+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
4081@@ -3,7 +3,8 @@
4082
4083 /* { dg-do assemble } */
4084 /* { dg-require-effective-target arm_neon_ok } */
4085-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4086+/* { dg-options "-save-temps -O0" } */
4087+/* { dg-add-options arm_neon } */
4088
4089 #include "arm_neon.h"
4090
4091Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
4092===================================================================
4093--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
4094+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
4095@@ -3,7 +3,8 @@
4096
4097 /* { dg-do assemble } */
4098 /* { dg-require-effective-target arm_neon_ok } */
4099-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4100+/* { dg-options "-save-temps -O0" } */
4101+/* { dg-add-options arm_neon } */
4102
4103 #include "arm_neon.h"
4104
4105Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
4106===================================================================
4107--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
4108+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
4109@@ -3,7 +3,8 @@
4110
4111 /* { dg-do assemble } */
4112 /* { dg-require-effective-target arm_neon_ok } */
4113-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4114+/* { dg-options "-save-temps -O0" } */
4115+/* { dg-add-options arm_neon } */
4116
4117 #include "arm_neon.h"
4118
4119Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
4120===================================================================
4121--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
4122+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
4123@@ -3,7 +3,8 @@
4124
4125 /* { dg-do assemble } */
4126 /* { dg-require-effective-target arm_neon_ok } */
4127-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4128+/* { dg-options "-save-temps -O0" } */
4129+/* { dg-add-options arm_neon } */
4130
4131 #include "arm_neon.h"
4132
4133Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
4134===================================================================
4135--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
4136+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
4137@@ -3,7 +3,8 @@
4138
4139 /* { dg-do assemble } */
4140 /* { dg-require-effective-target arm_neon_ok } */
4141-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4142+/* { dg-options "-save-temps -O0" } */
4143+/* { dg-add-options arm_neon } */
4144
4145 #include "arm_neon.h"
4146
4147Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
4148===================================================================
4149--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
4150+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
4151@@ -3,7 +3,8 @@
4152
4153 /* { dg-do assemble } */
4154 /* { dg-require-effective-target arm_neon_ok } */
4155-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4156+/* { dg-options "-save-temps -O0" } */
4157+/* { dg-add-options arm_neon } */
4158
4159 #include "arm_neon.h"
4160
4161Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclef32.c
4162===================================================================
4163--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclef32.c
4164+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclef32.c
4165@@ -3,7 +3,8 @@
4166
4167 /* { dg-do assemble } */
4168 /* { dg-require-effective-target arm_neon_ok } */
4169-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4170+/* { dg-options "-save-temps -O0" } */
4171+/* { dg-add-options arm_neon } */
4172
4173 #include "arm_neon.h"
4174
4175Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcles16.c
4176===================================================================
4177--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcles16.c
4178+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcles16.c
4179@@ -3,7 +3,8 @@
4180
4181 /* { dg-do assemble } */
4182 /* { dg-require-effective-target arm_neon_ok } */
4183-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4184+/* { dg-options "-save-temps -O0" } */
4185+/* { dg-add-options arm_neon } */
4186
4187 #include "arm_neon.h"
4188
4189Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcles32.c
4190===================================================================
4191--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcles32.c
4192+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcles32.c
4193@@ -3,7 +3,8 @@
4194
4195 /* { dg-do assemble } */
4196 /* { dg-require-effective-target arm_neon_ok } */
4197-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4198+/* { dg-options "-save-temps -O0" } */
4199+/* { dg-add-options arm_neon } */
4200
4201 #include "arm_neon.h"
4202
4203Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcles8.c
4204===================================================================
4205--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcles8.c
4206+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcles8.c
4207@@ -3,7 +3,8 @@
4208
4209 /* { dg-do assemble } */
4210 /* { dg-require-effective-target arm_neon_ok } */
4211-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4212+/* { dg-options "-save-temps -O0" } */
4213+/* { dg-add-options arm_neon } */
4214
4215 #include "arm_neon.h"
4216
4217Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
4218===================================================================
4219--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
4220+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
4221@@ -3,7 +3,8 @@
4222
4223 /* { dg-do assemble } */
4224 /* { dg-require-effective-target arm_neon_ok } */
4225-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4226+/* { dg-options "-save-temps -O0" } */
4227+/* { dg-add-options arm_neon } */
4228
4229 #include "arm_neon.h"
4230
4231Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
4232===================================================================
4233--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
4234+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
4235@@ -3,7 +3,8 @@
4236
4237 /* { dg-do assemble } */
4238 /* { dg-require-effective-target arm_neon_ok } */
4239-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4240+/* { dg-options "-save-temps -O0" } */
4241+/* { dg-add-options arm_neon } */
4242
4243 #include "arm_neon.h"
4244
4245Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
4246===================================================================
4247--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
4248+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
4249@@ -3,7 +3,8 @@
4250
4251 /* { dg-do assemble } */
4252 /* { dg-require-effective-target arm_neon_ok } */
4253-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4254+/* { dg-options "-save-temps -O0" } */
4255+/* { dg-add-options arm_neon } */
4256
4257 #include "arm_neon.h"
4258
4259Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
4260===================================================================
4261--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
4262+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
4263@@ -3,7 +3,8 @@
4264
4265 /* { dg-do assemble } */
4266 /* { dg-require-effective-target arm_neon_ok } */
4267-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4268+/* { dg-options "-save-temps -O0" } */
4269+/* { dg-add-options arm_neon } */
4270
4271 #include "arm_neon.h"
4272
4273Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
4274===================================================================
4275--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
4276+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
4277@@ -3,7 +3,8 @@
4278
4279 /* { dg-do assemble } */
4280 /* { dg-require-effective-target arm_neon_ok } */
4281-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4282+/* { dg-options "-save-temps -O0" } */
4283+/* { dg-add-options arm_neon } */
4284
4285 #include "arm_neon.h"
4286
4287Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
4288===================================================================
4289--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
4290+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
4291@@ -3,7 +3,8 @@
4292
4293 /* { dg-do assemble } */
4294 /* { dg-require-effective-target arm_neon_ok } */
4295-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4296+/* { dg-options "-save-temps -O0" } */
4297+/* { dg-add-options arm_neon } */
4298
4299 #include "arm_neon.h"
4300
4301Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclss16.c
4302===================================================================
4303--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclss16.c
4304+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclss16.c
4305@@ -3,7 +3,8 @@
4306
4307 /* { dg-do assemble } */
4308 /* { dg-require-effective-target arm_neon_ok } */
4309-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4310+/* { dg-options "-save-temps -O0" } */
4311+/* { dg-add-options arm_neon } */
4312
4313 #include "arm_neon.h"
4314
4315Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclss32.c
4316===================================================================
4317--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclss32.c
4318+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclss32.c
4319@@ -3,7 +3,8 @@
4320
4321 /* { dg-do assemble } */
4322 /* { dg-require-effective-target arm_neon_ok } */
4323-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4324+/* { dg-options "-save-temps -O0" } */
4325+/* { dg-add-options arm_neon } */
4326
4327 #include "arm_neon.h"
4328
4329Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclss8.c
4330===================================================================
4331--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclss8.c
4332+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclss8.c
4333@@ -3,7 +3,8 @@
4334
4335 /* { dg-do assemble } */
4336 /* { dg-require-effective-target arm_neon_ok } */
4337-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4338+/* { dg-options "-save-temps -O0" } */
4339+/* { dg-add-options arm_neon } */
4340
4341 #include "arm_neon.h"
4342
4343Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
4344===================================================================
4345--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
4346+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
4347@@ -3,7 +3,8 @@
4348
4349 /* { dg-do assemble } */
4350 /* { dg-require-effective-target arm_neon_ok } */
4351-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4352+/* { dg-options "-save-temps -O0" } */
4353+/* { dg-add-options arm_neon } */
4354
4355 #include "arm_neon.h"
4356
4357Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
4358===================================================================
4359--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
4360+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
4361@@ -3,7 +3,8 @@
4362
4363 /* { dg-do assemble } */
4364 /* { dg-require-effective-target arm_neon_ok } */
4365-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4366+/* { dg-options "-save-temps -O0" } */
4367+/* { dg-add-options arm_neon } */
4368
4369 #include "arm_neon.h"
4370
4371Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
4372===================================================================
4373--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
4374+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
4375@@ -3,7 +3,8 @@
4376
4377 /* { dg-do assemble } */
4378 /* { dg-require-effective-target arm_neon_ok } */
4379-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4380+/* { dg-options "-save-temps -O0" } */
4381+/* { dg-add-options arm_neon } */
4382
4383 #include "arm_neon.h"
4384
4385Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
4386===================================================================
4387--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
4388+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
4389@@ -3,7 +3,8 @@
4390
4391 /* { dg-do assemble } */
4392 /* { dg-require-effective-target arm_neon_ok } */
4393-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4394+/* { dg-options "-save-temps -O0" } */
4395+/* { dg-add-options arm_neon } */
4396
4397 #include "arm_neon.h"
4398
4399Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
4400===================================================================
4401--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
4402+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
4403@@ -3,7 +3,8 @@
4404
4405 /* { dg-do assemble } */
4406 /* { dg-require-effective-target arm_neon_ok } */
4407-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4408+/* { dg-options "-save-temps -O0" } */
4409+/* { dg-add-options arm_neon } */
4410
4411 #include "arm_neon.h"
4412
4413Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
4414===================================================================
4415--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
4416+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
4417@@ -3,7 +3,8 @@
4418
4419 /* { dg-do assemble } */
4420 /* { dg-require-effective-target arm_neon_ok } */
4421-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4422+/* { dg-options "-save-temps -O0" } */
4423+/* { dg-add-options arm_neon } */
4424
4425 #include "arm_neon.h"
4426
4427Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
4428===================================================================
4429--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
4430+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
4431@@ -3,7 +3,8 @@
4432
4433 /* { dg-do assemble } */
4434 /* { dg-require-effective-target arm_neon_ok } */
4435-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4436+/* { dg-options "-save-temps -O0" } */
4437+/* { dg-add-options arm_neon } */
4438
4439 #include "arm_neon.h"
4440
4441Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
4442===================================================================
4443--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
4444+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
4445@@ -3,7 +3,8 @@
4446
4447 /* { dg-do assemble } */
4448 /* { dg-require-effective-target arm_neon_ok } */
4449-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4450+/* { dg-options "-save-temps -O0" } */
4451+/* { dg-add-options arm_neon } */
4452
4453 #include "arm_neon.h"
4454
4455Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclts16.c
4456===================================================================
4457--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclts16.c
4458+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclts16.c
4459@@ -3,7 +3,8 @@
4460
4461 /* { dg-do assemble } */
4462 /* { dg-require-effective-target arm_neon_ok } */
4463-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4464+/* { dg-options "-save-temps -O0" } */
4465+/* { dg-add-options arm_neon } */
4466
4467 #include "arm_neon.h"
4468
4469Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclts32.c
4470===================================================================
4471--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclts32.c
4472+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclts32.c
4473@@ -3,7 +3,8 @@
4474
4475 /* { dg-do assemble } */
4476 /* { dg-require-effective-target arm_neon_ok } */
4477-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4478+/* { dg-options "-save-temps -O0" } */
4479+/* { dg-add-options arm_neon } */
4480
4481 #include "arm_neon.h"
4482
4483Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclts8.c
4484===================================================================
4485--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclts8.c
4486+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclts8.c
4487@@ -3,7 +3,8 @@
4488
4489 /* { dg-do assemble } */
4490 /* { dg-require-effective-target arm_neon_ok } */
4491-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4492+/* { dg-options "-save-temps -O0" } */
4493+/* { dg-add-options arm_neon } */
4494
4495 #include "arm_neon.h"
4496
4497Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
4498===================================================================
4499--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
4500+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
4501@@ -3,7 +3,8 @@
4502
4503 /* { dg-do assemble } */
4504 /* { dg-require-effective-target arm_neon_ok } */
4505-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4506+/* { dg-options "-save-temps -O0" } */
4507+/* { dg-add-options arm_neon } */
4508
4509 #include "arm_neon.h"
4510
4511Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
4512===================================================================
4513--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
4514+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
4515@@ -3,7 +3,8 @@
4516
4517 /* { dg-do assemble } */
4518 /* { dg-require-effective-target arm_neon_ok } */
4519-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4520+/* { dg-options "-save-temps -O0" } */
4521+/* { dg-add-options arm_neon } */
4522
4523 #include "arm_neon.h"
4524
4525Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
4526===================================================================
4527--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
4528+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
4529@@ -3,7 +3,8 @@
4530
4531 /* { dg-do assemble } */
4532 /* { dg-require-effective-target arm_neon_ok } */
4533-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4534+/* { dg-options "-save-temps -O0" } */
4535+/* { dg-add-options arm_neon } */
4536
4537 #include "arm_neon.h"
4538
4539Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
4540===================================================================
4541--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
4542+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
4543@@ -3,7 +3,8 @@
4544
4545 /* { dg-do assemble } */
4546 /* { dg-require-effective-target arm_neon_ok } */
4547-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4548+/* { dg-options "-save-temps -O0" } */
4549+/* { dg-add-options arm_neon } */
4550
4551 #include "arm_neon.h"
4552
4553Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
4554===================================================================
4555--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
4556+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
4557@@ -3,7 +3,8 @@
4558
4559 /* { dg-do assemble } */
4560 /* { dg-require-effective-target arm_neon_ok } */
4561-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4562+/* { dg-options "-save-temps -O0" } */
4563+/* { dg-add-options arm_neon } */
4564
4565 #include "arm_neon.h"
4566
4567Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
4568===================================================================
4569--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
4570+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
4571@@ -3,7 +3,8 @@
4572
4573 /* { dg-do assemble } */
4574 /* { dg-require-effective-target arm_neon_ok } */
4575-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4576+/* { dg-options "-save-temps -O0" } */
4577+/* { dg-add-options arm_neon } */
4578
4579 #include "arm_neon.h"
4580
4581Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
4582===================================================================
4583--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
4584+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
4585@@ -3,7 +3,8 @@
4586
4587 /* { dg-do assemble } */
4588 /* { dg-require-effective-target arm_neon_ok } */
4589-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4590+/* { dg-options "-save-temps -O0" } */
4591+/* { dg-add-options arm_neon } */
4592
4593 #include "arm_neon.h"
4594
4595Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
4596===================================================================
4597--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
4598+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
4599@@ -3,7 +3,8 @@
4600
4601 /* { dg-do assemble } */
4602 /* { dg-require-effective-target arm_neon_ok } */
4603-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4604+/* { dg-options "-save-temps -O0" } */
4605+/* { dg-add-options arm_neon } */
4606
4607 #include "arm_neon.h"
4608
4609Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
4610===================================================================
4611--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
4612+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
4613@@ -3,7 +3,8 @@
4614
4615 /* { dg-do assemble } */
4616 /* { dg-require-effective-target arm_neon_ok } */
4617-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4618+/* { dg-options "-save-temps -O0" } */
4619+/* { dg-add-options arm_neon } */
4620
4621 #include "arm_neon.h"
4622
4623Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
4624===================================================================
4625--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
4626+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
4627@@ -3,7 +3,8 @@
4628
4629 /* { dg-do assemble } */
4630 /* { dg-require-effective-target arm_neon_ok } */
4631-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4632+/* { dg-options "-save-temps -O0" } */
4633+/* { dg-add-options arm_neon } */
4634
4635 #include "arm_neon.h"
4636
4637Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
4638===================================================================
4639--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
4640+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
4641@@ -3,7 +3,8 @@
4642
4643 /* { dg-do assemble } */
4644 /* { dg-require-effective-target arm_neon_ok } */
4645-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4646+/* { dg-options "-save-temps -O0" } */
4647+/* { dg-add-options arm_neon } */
4648
4649 #include "arm_neon.h"
4650
4651Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
4652===================================================================
4653--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
4654+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
4655@@ -3,7 +3,8 @@
4656
4657 /* { dg-do assemble } */
4658 /* { dg-require-effective-target arm_neon_ok } */
4659-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4660+/* { dg-options "-save-temps -O0" } */
4661+/* { dg-add-options arm_neon } */
4662
4663 #include "arm_neon.h"
4664
4665Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
4666===================================================================
4667--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
4668+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
4669@@ -3,7 +3,8 @@
4670
4671 /* { dg-do assemble } */
4672 /* { dg-require-effective-target arm_neon_ok } */
4673-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4674+/* { dg-options "-save-temps -O0" } */
4675+/* { dg-add-options arm_neon } */
4676
4677 #include "arm_neon.h"
4678
4679Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
4680===================================================================
4681--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
4682+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
4683@@ -3,7 +3,8 @@
4684
4685 /* { dg-do assemble } */
4686 /* { dg-require-effective-target arm_neon_ok } */
4687-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4688+/* { dg-options "-save-temps -O0" } */
4689+/* { dg-add-options arm_neon } */
4690
4691 #include "arm_neon.h"
4692
4693Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
4694===================================================================
4695--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
4696+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
4697@@ -3,7 +3,8 @@
4698
4699 /* { dg-do assemble } */
4700 /* { dg-require-effective-target arm_neon_ok } */
4701-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4702+/* { dg-options "-save-temps -O0" } */
4703+/* { dg-add-options arm_neon } */
4704
4705 #include "arm_neon.h"
4706
4707Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
4708===================================================================
4709--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
4710+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
4711@@ -3,7 +3,8 @@
4712
4713 /* { dg-do assemble } */
4714 /* { dg-require-effective-target arm_neon_ok } */
4715-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4716+/* { dg-options "-save-temps -O0" } */
4717+/* { dg-add-options arm_neon } */
4718
4719 #include "arm_neon.h"
4720
4721Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
4722===================================================================
4723--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
4724+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
4725@@ -3,7 +3,8 @@
4726
4727 /* { dg-do assemble } */
4728 /* { dg-require-effective-target arm_neon_ok } */
4729-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4730+/* { dg-options "-save-temps -O0" } */
4731+/* { dg-add-options arm_neon } */
4732
4733 #include "arm_neon.h"
4734
4735Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
4736===================================================================
4737--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
4738+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
4739@@ -3,7 +3,8 @@
4740
4741 /* { dg-do assemble } */
4742 /* { dg-require-effective-target arm_neon_ok } */
4743-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4744+/* { dg-options "-save-temps -O0" } */
4745+/* { dg-add-options arm_neon } */
4746
4747 #include "arm_neon.h"
4748
4749Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
4750===================================================================
4751--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
4752+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
4753@@ -3,7 +3,8 @@
4754
4755 /* { dg-do assemble } */
4756 /* { dg-require-effective-target arm_neon_ok } */
4757-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4758+/* { dg-options "-save-temps -O0" } */
4759+/* { dg-add-options arm_neon } */
4760
4761 #include "arm_neon.h"
4762
4763Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
4764===================================================================
4765--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
4766+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
4767@@ -3,7 +3,8 @@
4768
4769 /* { dg-do assemble } */
4770 /* { dg-require-effective-target arm_neon_ok } */
4771-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4772+/* { dg-options "-save-temps -O0" } */
4773+/* { dg-add-options arm_neon } */
4774
4775 #include "arm_neon.h"
4776
4777Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
4778===================================================================
4779--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
4780+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
4781@@ -3,7 +3,8 @@
4782
4783 /* { dg-do assemble } */
4784 /* { dg-require-effective-target arm_neon_ok } */
4785-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4786+/* { dg-options "-save-temps -O0" } */
4787+/* { dg-add-options arm_neon } */
4788
4789 #include "arm_neon.h"
4790
4791Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
4792===================================================================
4793--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
4794+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
4795@@ -3,7 +3,8 @@
4796
4797 /* { dg-do assemble } */
4798 /* { dg-require-effective-target arm_neon_ok } */
4799-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4800+/* { dg-options "-save-temps -O0" } */
4801+/* { dg-add-options arm_neon } */
4802
4803 #include "arm_neon.h"
4804
4805Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
4806===================================================================
4807--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
4808+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
4809@@ -3,7 +3,8 @@
4810
4811 /* { dg-do assemble } */
4812 /* { dg-require-effective-target arm_neon_ok } */
4813-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4814+/* { dg-options "-save-temps -O0" } */
4815+/* { dg-add-options arm_neon } */
4816
4817 #include "arm_neon.h"
4818
4819Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
4820===================================================================
4821--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
4822+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
4823@@ -3,7 +3,8 @@
4824
4825 /* { dg-do assemble } */
4826 /* { dg-require-effective-target arm_neon_ok } */
4827-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4828+/* { dg-options "-save-temps -O0" } */
4829+/* { dg-add-options arm_neon } */
4830
4831 #include "arm_neon.h"
4832
4833Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
4834===================================================================
4835--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
4836+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
4837@@ -3,7 +3,8 @@
4838
4839 /* { dg-do assemble } */
4840 /* { dg-require-effective-target arm_neon_ok } */
4841-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4842+/* { dg-options "-save-temps -O0" } */
4843+/* { dg-add-options arm_neon } */
4844
4845 #include "arm_neon.h"
4846
4847Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
4848===================================================================
4849--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
4850+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
4851@@ -3,7 +3,8 @@
4852
4853 /* { dg-do assemble } */
4854 /* { dg-require-effective-target arm_neon_ok } */
4855-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4856+/* { dg-options "-save-temps -O0" } */
4857+/* { dg-add-options arm_neon } */
4858
4859 #include "arm_neon.h"
4860
4861Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
4862===================================================================
4863--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
4864+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
4865@@ -3,7 +3,8 @@
4866
4867 /* { dg-do assemble } */
4868 /* { dg-require-effective-target arm_neon_ok } */
4869-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4870+/* { dg-options "-save-temps -O0" } */
4871+/* { dg-add-options arm_neon } */
4872
4873 #include "arm_neon.h"
4874
4875Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
4876===================================================================
4877--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
4878+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
4879@@ -3,7 +3,8 @@
4880
4881 /* { dg-do assemble } */
4882 /* { dg-require-effective-target arm_neon_ok } */
4883-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4884+/* { dg-options "-save-temps -O0" } */
4885+/* { dg-add-options arm_neon } */
4886
4887 #include "arm_neon.h"
4888
4889Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
4890===================================================================
4891--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
4892+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
4893@@ -3,7 +3,8 @@
4894
4895 /* { dg-do assemble } */
4896 /* { dg-require-effective-target arm_neon_ok } */
4897-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4898+/* { dg-options "-save-temps -O0" } */
4899+/* { dg-add-options arm_neon } */
4900
4901 #include "arm_neon.h"
4902
4903Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
4904===================================================================
4905--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
4906+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
4907@@ -3,7 +3,8 @@
4908
4909 /* { dg-do assemble } */
4910 /* { dg-require-effective-target arm_neon_ok } */
4911-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4912+/* { dg-options "-save-temps -O0" } */
4913+/* { dg-add-options arm_neon } */
4914
4915 #include "arm_neon.h"
4916
4917Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
4918===================================================================
4919--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
4920+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
4921@@ -3,7 +3,8 @@
4922
4923 /* { dg-do assemble } */
4924 /* { dg-require-effective-target arm_neon_ok } */
4925-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4926+/* { dg-options "-save-temps -O0" } */
4927+/* { dg-add-options arm_neon } */
4928
4929 #include "arm_neon.h"
4930
4931Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
4932===================================================================
4933--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
4934+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
4935@@ -3,7 +3,8 @@
4936
4937 /* { dg-do assemble } */
4938 /* { dg-require-effective-target arm_neon_ok } */
4939-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4940+/* { dg-options "-save-temps -O0" } */
4941+/* { dg-add-options arm_neon } */
4942
4943 #include "arm_neon.h"
4944
4945Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
4946===================================================================
4947--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
4948+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
4949@@ -3,7 +3,8 @@
4950
4951 /* { dg-do assemble } */
4952 /* { dg-require-effective-target arm_neon_ok } */
4953-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4954+/* { dg-options "-save-temps -O0" } */
4955+/* { dg-add-options arm_neon } */
4956
4957 #include "arm_neon.h"
4958
4959Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
4960===================================================================
4961--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
4962+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
4963@@ -3,7 +3,8 @@
4964
4965 /* { dg-do assemble } */
4966 /* { dg-require-effective-target arm_neon_ok } */
4967-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4968+/* { dg-options "-save-temps -O0" } */
4969+/* { dg-add-options arm_neon } */
4970
4971 #include "arm_neon.h"
4972
4973Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
4974===================================================================
4975--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
4976+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
4977@@ -3,7 +3,8 @@
4978
4979 /* { dg-do assemble } */
4980 /* { dg-require-effective-target arm_neon_ok } */
4981-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4982+/* { dg-options "-save-temps -O0" } */
4983+/* { dg-add-options arm_neon } */
4984
4985 #include "arm_neon.h"
4986
4987Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
4988===================================================================
4989--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
4990+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
4991@@ -3,7 +3,8 @@
4992
4993 /* { dg-do assemble } */
4994 /* { dg-require-effective-target arm_neon_ok } */
4995-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
4996+/* { dg-options "-save-temps -O0" } */
4997+/* { dg-add-options arm_neon } */
4998
4999 #include "arm_neon.h"
5000
5001Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
5002===================================================================
5003--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
5004+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
5005@@ -3,7 +3,8 @@
5006
5007 /* { dg-do assemble } */
5008 /* { dg-require-effective-target arm_neon_ok } */
5009-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5010+/* { dg-options "-save-temps -O0" } */
5011+/* { dg-add-options arm_neon } */
5012
5013 #include "arm_neon.h"
5014
5015Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
5016===================================================================
5017--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
5018+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
5019@@ -3,7 +3,8 @@
5020
5021 /* { dg-do assemble } */
5022 /* { dg-require-effective-target arm_neon_ok } */
5023-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5024+/* { dg-options "-save-temps -O0" } */
5025+/* { dg-add-options arm_neon } */
5026
5027 #include "arm_neon.h"
5028
5029Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
5030===================================================================
5031--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
5032+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
5033@@ -3,7 +3,8 @@
5034
5035 /* { dg-do assemble } */
5036 /* { dg-require-effective-target arm_neon_ok } */
5037-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5038+/* { dg-options "-save-temps -O0" } */
5039+/* { dg-add-options arm_neon } */
5040
5041 #include "arm_neon.h"
5042
5043Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
5044===================================================================
5045--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
5046+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
5047@@ -3,7 +3,8 @@
5048
5049 /* { dg-do assemble } */
5050 /* { dg-require-effective-target arm_neon_ok } */
5051-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5052+/* { dg-options "-save-temps -O0" } */
5053+/* { dg-add-options arm_neon } */
5054
5055 #include "arm_neon.h"
5056
5057Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
5058===================================================================
5059--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
5060+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
5061@@ -3,7 +3,8 @@
5062
5063 /* { dg-do assemble } */
5064 /* { dg-require-effective-target arm_neon_ok } */
5065-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5066+/* { dg-options "-save-temps -O0" } */
5067+/* { dg-add-options arm_neon } */
5068
5069 #include "arm_neon.h"
5070
5071Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
5072===================================================================
5073--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
5074+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
5075@@ -3,7 +3,8 @@
5076
5077 /* { dg-do assemble } */
5078 /* { dg-require-effective-target arm_neon_ok } */
5079-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5080+/* { dg-options "-save-temps -O0" } */
5081+/* { dg-add-options arm_neon } */
5082
5083 #include "arm_neon.h"
5084
5085Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
5086===================================================================
5087--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
5088+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
5089@@ -3,7 +3,8 @@
5090
5091 /* { dg-do assemble } */
5092 /* { dg-require-effective-target arm_neon_ok } */
5093-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5094+/* { dg-options "-save-temps -O0" } */
5095+/* { dg-add-options arm_neon } */
5096
5097 #include "arm_neon.h"
5098
5099Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
5100===================================================================
5101--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
5102+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
5103@@ -3,7 +3,8 @@
5104
5105 /* { dg-do assemble } */
5106 /* { dg-require-effective-target arm_neon_ok } */
5107-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5108+/* { dg-options "-save-temps -O0" } */
5109+/* { dg-add-options arm_neon } */
5110
5111 #include "arm_neon.h"
5112
5113Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
5114===================================================================
5115--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
5116+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
5117@@ -3,7 +3,8 @@
5118
5119 /* { dg-do assemble } */
5120 /* { dg-require-effective-target arm_neon_ok } */
5121-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5122+/* { dg-options "-save-temps -O0" } */
5123+/* { dg-add-options arm_neon } */
5124
5125 #include "arm_neon.h"
5126
5127Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
5128===================================================================
5129--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
5130+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
5131@@ -3,7 +3,8 @@
5132
5133 /* { dg-do assemble } */
5134 /* { dg-require-effective-target arm_neon_ok } */
5135-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5136+/* { dg-options "-save-temps -O0" } */
5137+/* { dg-add-options arm_neon } */
5138
5139 #include "arm_neon.h"
5140
5141Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
5142===================================================================
5143--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
5144+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
5145@@ -3,7 +3,8 @@
5146
5147 /* { dg-do assemble } */
5148 /* { dg-require-effective-target arm_neon_ok } */
5149-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5150+/* { dg-options "-save-temps -O0" } */
5151+/* { dg-add-options arm_neon } */
5152
5153 #include "arm_neon.h"
5154
5155Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
5156===================================================================
5157--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
5158+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
5159@@ -3,7 +3,8 @@
5160
5161 /* { dg-do assemble } */
5162 /* { dg-require-effective-target arm_neon_ok } */
5163-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5164+/* { dg-options "-save-temps -O0" } */
5165+/* { dg-add-options arm_neon } */
5166
5167 #include "arm_neon.h"
5168
5169Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
5170===================================================================
5171--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
5172+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
5173@@ -3,7 +3,8 @@
5174
5175 /* { dg-do assemble } */
5176 /* { dg-require-effective-target arm_neon_ok } */
5177-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5178+/* { dg-options "-save-temps -O0" } */
5179+/* { dg-add-options arm_neon } */
5180
5181 #include "arm_neon.h"
5182
5183Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
5184===================================================================
5185--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
5186+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
5187@@ -3,7 +3,8 @@
5188
5189 /* { dg-do assemble } */
5190 /* { dg-require-effective-target arm_neon_ok } */
5191-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5192+/* { dg-options "-save-temps -O0" } */
5193+/* { dg-add-options arm_neon } */
5194
5195 #include "arm_neon.h"
5196
5197Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
5198===================================================================
5199--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
5200+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
5201@@ -3,7 +3,8 @@
5202
5203 /* { dg-do assemble } */
5204 /* { dg-require-effective-target arm_neon_ok } */
5205-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5206+/* { dg-options "-save-temps -O0" } */
5207+/* { dg-add-options arm_neon } */
5208
5209 #include "arm_neon.h"
5210
5211Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
5212===================================================================
5213--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
5214+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
5215@@ -3,7 +3,8 @@
5216
5217 /* { dg-do assemble } */
5218 /* { dg-require-effective-target arm_neon_ok } */
5219-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5220+/* { dg-options "-save-temps -O0" } */
5221+/* { dg-add-options arm_neon } */
5222
5223 #include "arm_neon.h"
5224
5225Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
5226===================================================================
5227--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
5228+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
5229@@ -3,7 +3,8 @@
5230
5231 /* { dg-do assemble } */
5232 /* { dg-require-effective-target arm_neon_ok } */
5233-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5234+/* { dg-options "-save-temps -O0" } */
5235+/* { dg-add-options arm_neon } */
5236
5237 #include "arm_neon.h"
5238
5239Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
5240===================================================================
5241--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
5242+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
5243@@ -3,7 +3,8 @@
5244
5245 /* { dg-do assemble } */
5246 /* { dg-require-effective-target arm_neon_ok } */
5247-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5248+/* { dg-options "-save-temps -O0" } */
5249+/* { dg-add-options arm_neon } */
5250
5251 #include "arm_neon.h"
5252
5253Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
5254===================================================================
5255--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
5256+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
5257@@ -3,7 +3,8 @@
5258
5259 /* { dg-do assemble } */
5260 /* { dg-require-effective-target arm_neon_ok } */
5261-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5262+/* { dg-options "-save-temps -O0" } */
5263+/* { dg-add-options arm_neon } */
5264
5265 #include "arm_neon.h"
5266
5267Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c
5268===================================================================
5269--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c
5270+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c
5271@@ -3,7 +3,8 @@
5272
5273 /* { dg-do assemble } */
5274 /* { dg-require-effective-target arm_neon_ok } */
5275-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5276+/* { dg-options "-save-temps -O0" } */
5277+/* { dg-add-options arm_neon } */
5278
5279 #include "arm_neon.h"
5280
5281Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
5282===================================================================
5283--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
5284+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
5285@@ -3,7 +3,8 @@
5286
5287 /* { dg-do assemble } */
5288 /* { dg-require-effective-target arm_neon_ok } */
5289-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5290+/* { dg-options "-save-temps -O0" } */
5291+/* { dg-add-options arm_neon } */
5292
5293 #include "arm_neon.h"
5294
5295Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
5296===================================================================
5297--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
5298+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
5299@@ -3,7 +3,8 @@
5300
5301 /* { dg-do assemble } */
5302 /* { dg-require-effective-target arm_neon_ok } */
5303-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5304+/* { dg-options "-save-temps -O0" } */
5305+/* { dg-add-options arm_neon } */
5306
5307 #include "arm_neon.h"
5308
5309Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
5310===================================================================
5311--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
5312+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
5313@@ -3,7 +3,8 @@
5314
5315 /* { dg-do assemble } */
5316 /* { dg-require-effective-target arm_neon_ok } */
5317-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5318+/* { dg-options "-save-temps -O0" } */
5319+/* { dg-add-options arm_neon } */
5320
5321 #include "arm_neon.h"
5322
5323Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
5324===================================================================
5325--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
5326+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
5327@@ -3,7 +3,8 @@
5328
5329 /* { dg-do assemble } */
5330 /* { dg-require-effective-target arm_neon_ok } */
5331-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5332+/* { dg-options "-save-temps -O0" } */
5333+/* { dg-add-options arm_neon } */
5334
5335 #include "arm_neon.h"
5336
5337Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
5338===================================================================
5339--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
5340+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
5341@@ -3,7 +3,8 @@
5342
5343 /* { dg-do assemble } */
5344 /* { dg-require-effective-target arm_neon_ok } */
5345-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5346+/* { dg-options "-save-temps -O0" } */
5347+/* { dg-add-options arm_neon } */
5348
5349 #include "arm_neon.h"
5350
5351Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
5352===================================================================
5353--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
5354+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
5355@@ -3,7 +3,8 @@
5356
5357 /* { dg-do assemble } */
5358 /* { dg-require-effective-target arm_neon_ok } */
5359-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5360+/* { dg-options "-save-temps -O0" } */
5361+/* { dg-add-options arm_neon } */
5362
5363 #include "arm_neon.h"
5364
5365Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
5366===================================================================
5367--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
5368+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
5369@@ -3,7 +3,8 @@
5370
5371 /* { dg-do assemble } */
5372 /* { dg-require-effective-target arm_neon_ok } */
5373-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5374+/* { dg-options "-save-temps -O0" } */
5375+/* { dg-add-options arm_neon } */
5376
5377 #include "arm_neon.h"
5378
5379Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
5380===================================================================
5381--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
5382+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
5383@@ -3,7 +3,8 @@
5384
5385 /* { dg-do assemble } */
5386 /* { dg-require-effective-target arm_neon_ok } */
5387-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5388+/* { dg-options "-save-temps -O0" } */
5389+/* { dg-add-options arm_neon } */
5390
5391 #include "arm_neon.h"
5392
5393Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
5394===================================================================
5395--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
5396+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
5397@@ -3,7 +3,8 @@
5398
5399 /* { dg-do assemble } */
5400 /* { dg-require-effective-target arm_neon_ok } */
5401-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5402+/* { dg-options "-save-temps -O0" } */
5403+/* { dg-add-options arm_neon } */
5404
5405 #include "arm_neon.h"
5406
5407Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
5408===================================================================
5409--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
5410+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
5411@@ -3,7 +3,8 @@
5412
5413 /* { dg-do assemble } */
5414 /* { dg-require-effective-target arm_neon_ok } */
5415-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5416+/* { dg-options "-save-temps -O0" } */
5417+/* { dg-add-options arm_neon } */
5418
5419 #include "arm_neon.h"
5420
5421Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
5422===================================================================
5423--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
5424+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
5425@@ -3,7 +3,8 @@
5426
5427 /* { dg-do assemble } */
5428 /* { dg-require-effective-target arm_neon_ok } */
5429-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5430+/* { dg-options "-save-temps -O0" } */
5431+/* { dg-add-options arm_neon } */
5432
5433 #include "arm_neon.h"
5434
5435Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
5436===================================================================
5437--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
5438+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
5439@@ -3,7 +3,8 @@
5440
5441 /* { dg-do assemble } */
5442 /* { dg-require-effective-target arm_neon_ok } */
5443-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5444+/* { dg-options "-save-temps -O0" } */
5445+/* { dg-add-options arm_neon } */
5446
5447 #include "arm_neon.h"
5448
5449Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
5450===================================================================
5451--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
5452+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
5453@@ -3,7 +3,8 @@
5454
5455 /* { dg-do assemble } */
5456 /* { dg-require-effective-target arm_neon_ok } */
5457-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5458+/* { dg-options "-save-temps -O0" } */
5459+/* { dg-add-options arm_neon } */
5460
5461 #include "arm_neon.h"
5462
5463Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
5464===================================================================
5465--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
5466+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
5467@@ -3,7 +3,8 @@
5468
5469 /* { dg-do assemble } */
5470 /* { dg-require-effective-target arm_neon_ok } */
5471-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5472+/* { dg-options "-save-temps -O0" } */
5473+/* { dg-add-options arm_neon } */
5474
5475 #include "arm_neon.h"
5476
5477Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
5478===================================================================
5479--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
5480+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
5481@@ -3,7 +3,8 @@
5482
5483 /* { dg-do assemble } */
5484 /* { dg-require-effective-target arm_neon_ok } */
5485-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5486+/* { dg-options "-save-temps -O0" } */
5487+/* { dg-add-options arm_neon } */
5488
5489 #include "arm_neon.h"
5490
5491Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
5492===================================================================
5493--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
5494+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
5495@@ -3,7 +3,8 @@
5496
5497 /* { dg-do assemble } */
5498 /* { dg-require-effective-target arm_neon_ok } */
5499-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5500+/* { dg-options "-save-temps -O0" } */
5501+/* { dg-add-options arm_neon } */
5502
5503 #include "arm_neon.h"
5504
5505Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
5506===================================================================
5507--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
5508+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
5509@@ -3,7 +3,8 @@
5510
5511 /* { dg-do assemble } */
5512 /* { dg-require-effective-target arm_neon_ok } */
5513-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5514+/* { dg-options "-save-temps -O0" } */
5515+/* { dg-add-options arm_neon } */
5516
5517 #include "arm_neon.h"
5518
5519Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
5520===================================================================
5521--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
5522+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
5523@@ -3,7 +3,8 @@
5524
5525 /* { dg-do assemble } */
5526 /* { dg-require-effective-target arm_neon_ok } */
5527-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5528+/* { dg-options "-save-temps -O0" } */
5529+/* { dg-add-options arm_neon } */
5530
5531 #include "arm_neon.h"
5532
5533Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
5534===================================================================
5535--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
5536+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
5537@@ -3,7 +3,8 @@
5538
5539 /* { dg-do assemble } */
5540 /* { dg-require-effective-target arm_neon_ok } */
5541-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5542+/* { dg-options "-save-temps -O0" } */
5543+/* { dg-add-options arm_neon } */
5544
5545 #include "arm_neon.h"
5546
5547Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
5548===================================================================
5549--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
5550+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
5551@@ -3,7 +3,8 @@
5552
5553 /* { dg-do assemble } */
5554 /* { dg-require-effective-target arm_neon_ok } */
5555-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5556+/* { dg-options "-save-temps -O0" } */
5557+/* { dg-add-options arm_neon } */
5558
5559 #include "arm_neon.h"
5560
5561Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
5562===================================================================
5563--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
5564+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
5565@@ -3,7 +3,8 @@
5566
5567 /* { dg-do assemble } */
5568 /* { dg-require-effective-target arm_neon_ok } */
5569-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5570+/* { dg-options "-save-temps -O0" } */
5571+/* { dg-add-options arm_neon } */
5572
5573 #include "arm_neon.h"
5574
5575Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
5576===================================================================
5577--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
5578+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
5579@@ -3,7 +3,8 @@
5580
5581 /* { dg-do assemble } */
5582 /* { dg-require-effective-target arm_neon_ok } */
5583-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5584+/* { dg-options "-save-temps -O0" } */
5585+/* { dg-add-options arm_neon } */
5586
5587 #include "arm_neon.h"
5588
5589Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
5590===================================================================
5591--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
5592+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
5593@@ -3,7 +3,8 @@
5594
5595 /* { dg-do assemble } */
5596 /* { dg-require-effective-target arm_neon_ok } */
5597-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5598+/* { dg-options "-save-temps -O0" } */
5599+/* { dg-add-options arm_neon } */
5600
5601 #include "arm_neon.h"
5602
5603Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
5604===================================================================
5605--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
5606+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
5607@@ -3,7 +3,8 @@
5608
5609 /* { dg-do assemble } */
5610 /* { dg-require-effective-target arm_neon_ok } */
5611-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5612+/* { dg-options "-save-temps -O0" } */
5613+/* { dg-add-options arm_neon } */
5614
5615 #include "arm_neon.h"
5616
5617Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
5618===================================================================
5619--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
5620+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
5621@@ -3,7 +3,8 @@
5622
5623 /* { dg-do assemble } */
5624 /* { dg-require-effective-target arm_neon_ok } */
5625-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5626+/* { dg-options "-save-temps -O0" } */
5627+/* { dg-add-options arm_neon } */
5628
5629 #include "arm_neon.h"
5630
5631Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
5632===================================================================
5633--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
5634+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
5635@@ -3,7 +3,8 @@
5636
5637 /* { dg-do assemble } */
5638 /* { dg-require-effective-target arm_neon_ok } */
5639-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5640+/* { dg-options "-save-temps -O0" } */
5641+/* { dg-add-options arm_neon } */
5642
5643 #include "arm_neon.h"
5644
5645Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
5646===================================================================
5647--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
5648+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
5649@@ -3,7 +3,8 @@
5650
5651 /* { dg-do assemble } */
5652 /* { dg-require-effective-target arm_neon_ok } */
5653-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5654+/* { dg-options "-save-temps -O0" } */
5655+/* { dg-add-options arm_neon } */
5656
5657 #include "arm_neon.h"
5658
5659Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
5660===================================================================
5661--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
5662+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
5663@@ -3,7 +3,8 @@
5664
5665 /* { dg-do assemble } */
5666 /* { dg-require-effective-target arm_neon_ok } */
5667-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5668+/* { dg-options "-save-temps -O0" } */
5669+/* { dg-add-options arm_neon } */
5670
5671 #include "arm_neon.h"
5672
5673Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
5674===================================================================
5675--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
5676+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
5677@@ -3,7 +3,8 @@
5678
5679 /* { dg-do assemble } */
5680 /* { dg-require-effective-target arm_neon_ok } */
5681-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5682+/* { dg-options "-save-temps -O0" } */
5683+/* { dg-add-options arm_neon } */
5684
5685 #include "arm_neon.h"
5686
5687Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
5688===================================================================
5689--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
5690+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
5691@@ -3,7 +3,8 @@
5692
5693 /* { dg-do assemble } */
5694 /* { dg-require-effective-target arm_neon_ok } */
5695-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5696+/* { dg-options "-save-temps -O0" } */
5697+/* { dg-add-options arm_neon } */
5698
5699 #include "arm_neon.h"
5700
5701Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
5702===================================================================
5703--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
5704+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
5705@@ -3,7 +3,8 @@
5706
5707 /* { dg-do assemble } */
5708 /* { dg-require-effective-target arm_neon_ok } */
5709-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5710+/* { dg-options "-save-temps -O0" } */
5711+/* { dg-add-options arm_neon } */
5712
5713 #include "arm_neon.h"
5714
5715Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
5716===================================================================
5717--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
5718+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
5719@@ -3,7 +3,8 @@
5720
5721 /* { dg-do assemble } */
5722 /* { dg-require-effective-target arm_neon_ok } */
5723-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5724+/* { dg-options "-save-temps -O0" } */
5725+/* { dg-add-options arm_neon } */
5726
5727 #include "arm_neon.h"
5728
5729Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
5730===================================================================
5731--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
5732+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
5733@@ -3,7 +3,8 @@
5734
5735 /* { dg-do assemble } */
5736 /* { dg-require-effective-target arm_neon_ok } */
5737-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5738+/* { dg-options "-save-temps -O0" } */
5739+/* { dg-add-options arm_neon } */
5740
5741 #include "arm_neon.h"
5742
5743Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
5744===================================================================
5745--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
5746+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
5747@@ -3,7 +3,8 @@
5748
5749 /* { dg-do assemble } */
5750 /* { dg-require-effective-target arm_neon_ok } */
5751-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5752+/* { dg-options "-save-temps -O0" } */
5753+/* { dg-add-options arm_neon } */
5754
5755 #include "arm_neon.h"
5756
5757Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
5758===================================================================
5759--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
5760+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
5761@@ -3,7 +3,8 @@
5762
5763 /* { dg-do assemble } */
5764 /* { dg-require-effective-target arm_neon_ok } */
5765-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5766+/* { dg-options "-save-temps -O0" } */
5767+/* { dg-add-options arm_neon } */
5768
5769 #include "arm_neon.h"
5770
5771Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
5772===================================================================
5773--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
5774+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
5775@@ -3,7 +3,8 @@
5776
5777 /* { dg-do assemble } */
5778 /* { dg-require-effective-target arm_neon_ok } */
5779-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5780+/* { dg-options "-save-temps -O0" } */
5781+/* { dg-add-options arm_neon } */
5782
5783 #include "arm_neon.h"
5784
5785Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
5786===================================================================
5787--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
5788+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
5789@@ -3,7 +3,8 @@
5790
5791 /* { dg-do assemble } */
5792 /* { dg-require-effective-target arm_neon_ok } */
5793-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5794+/* { dg-options "-save-temps -O0" } */
5795+/* { dg-add-options arm_neon } */
5796
5797 #include "arm_neon.h"
5798
5799Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
5800===================================================================
5801--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
5802+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
5803@@ -3,7 +3,8 @@
5804
5805 /* { dg-do assemble } */
5806 /* { dg-require-effective-target arm_neon_ok } */
5807-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5808+/* { dg-options "-save-temps -O0" } */
5809+/* { dg-add-options arm_neon } */
5810
5811 #include "arm_neon.h"
5812
5813Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
5814===================================================================
5815--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
5816+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
5817@@ -3,7 +3,8 @@
5818
5819 /* { dg-do assemble } */
5820 /* { dg-require-effective-target arm_neon_ok } */
5821-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5822+/* { dg-options "-save-temps -O0" } */
5823+/* { dg-add-options arm_neon } */
5824
5825 #include "arm_neon.h"
5826
5827Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
5828===================================================================
5829--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
5830+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
5831@@ -3,7 +3,8 @@
5832
5833 /* { dg-do assemble } */
5834 /* { dg-require-effective-target arm_neon_ok } */
5835-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5836+/* { dg-options "-save-temps -O0" } */
5837+/* { dg-add-options arm_neon } */
5838
5839 #include "arm_neon.h"
5840
5841Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
5842===================================================================
5843--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
5844+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
5845@@ -3,7 +3,8 @@
5846
5847 /* { dg-do assemble } */
5848 /* { dg-require-effective-target arm_neon_ok } */
5849-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5850+/* { dg-options "-save-temps -O0" } */
5851+/* { dg-add-options arm_neon } */
5852
5853 #include "arm_neon.h"
5854
5855Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
5856===================================================================
5857--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
5858+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
5859@@ -3,7 +3,8 @@
5860
5861 /* { dg-do assemble } */
5862 /* { dg-require-effective-target arm_neon_ok } */
5863-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5864+/* { dg-options "-save-temps -O0" } */
5865+/* { dg-add-options arm_neon } */
5866
5867 #include "arm_neon.h"
5868
5869Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
5870===================================================================
5871--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
5872+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
5873@@ -3,7 +3,8 @@
5874
5875 /* { dg-do assemble } */
5876 /* { dg-require-effective-target arm_neon_ok } */
5877-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5878+/* { dg-options "-save-temps -O0" } */
5879+/* { dg-add-options arm_neon } */
5880
5881 #include "arm_neon.h"
5882
5883Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
5884===================================================================
5885--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
5886+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
5887@@ -3,7 +3,8 @@
5888
5889 /* { dg-do assemble } */
5890 /* { dg-require-effective-target arm_neon_ok } */
5891-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5892+/* { dg-options "-save-temps -O0" } */
5893+/* { dg-add-options arm_neon } */
5894
5895 #include "arm_neon.h"
5896
5897Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
5898===================================================================
5899--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
5900+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
5901@@ -3,7 +3,8 @@
5902
5903 /* { dg-do assemble } */
5904 /* { dg-require-effective-target arm_neon_ok } */
5905-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5906+/* { dg-options "-save-temps -O0" } */
5907+/* { dg-add-options arm_neon } */
5908
5909 #include "arm_neon.h"
5910
5911Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
5912===================================================================
5913--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
5914+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
5915@@ -3,7 +3,8 @@
5916
5917 /* { dg-do assemble } */
5918 /* { dg-require-effective-target arm_neon_ok } */
5919-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5920+/* { dg-options "-save-temps -O0" } */
5921+/* { dg-add-options arm_neon } */
5922
5923 #include "arm_neon.h"
5924
5925Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
5926===================================================================
5927--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
5928+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
5929@@ -3,7 +3,8 @@
5930
5931 /* { dg-do assemble } */
5932 /* { dg-require-effective-target arm_neon_ok } */
5933-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5934+/* { dg-options "-save-temps -O0" } */
5935+/* { dg-add-options arm_neon } */
5936
5937 #include "arm_neon.h"
5938
5939Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
5940===================================================================
5941--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
5942+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
5943@@ -3,7 +3,8 @@
5944
5945 /* { dg-do assemble } */
5946 /* { dg-require-effective-target arm_neon_ok } */
5947-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5948+/* { dg-options "-save-temps -O0" } */
5949+/* { dg-add-options arm_neon } */
5950
5951 #include "arm_neon.h"
5952
5953Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
5954===================================================================
5955--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
5956+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
5957@@ -3,7 +3,8 @@
5958
5959 /* { dg-do assemble } */
5960 /* { dg-require-effective-target arm_neon_ok } */
5961-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5962+/* { dg-options "-save-temps -O0" } */
5963+/* { dg-add-options arm_neon } */
5964
5965 #include "arm_neon.h"
5966
5967Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
5968===================================================================
5969--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
5970+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
5971@@ -3,7 +3,8 @@
5972
5973 /* { dg-do assemble } */
5974 /* { dg-require-effective-target arm_neon_ok } */
5975-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5976+/* { dg-options "-save-temps -O0" } */
5977+/* { dg-add-options arm_neon } */
5978
5979 #include "arm_neon.h"
5980
5981Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
5982===================================================================
5983--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
5984+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
5985@@ -3,7 +3,8 @@
5986
5987 /* { dg-do assemble } */
5988 /* { dg-require-effective-target arm_neon_ok } */
5989-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
5990+/* { dg-options "-save-temps -O0" } */
5991+/* { dg-add-options arm_neon } */
5992
5993 #include "arm_neon.h"
5994
5995Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
5996===================================================================
5997--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
5998+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
5999@@ -3,7 +3,8 @@
6000
6001 /* { dg-do assemble } */
6002 /* { dg-require-effective-target arm_neon_ok } */
6003-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6004+/* { dg-options "-save-temps -O0" } */
6005+/* { dg-add-options arm_neon } */
6006
6007 #include "arm_neon.h"
6008
6009Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
6010===================================================================
6011--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
6012+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
6013@@ -3,7 +3,8 @@
6014
6015 /* { dg-do assemble } */
6016 /* { dg-require-effective-target arm_neon_ok } */
6017-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6018+/* { dg-options "-save-temps -O0" } */
6019+/* { dg-add-options arm_neon } */
6020
6021 #include "arm_neon.h"
6022
6023Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
6024===================================================================
6025--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
6026+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
6027@@ -3,7 +3,8 @@
6028
6029 /* { dg-do assemble } */
6030 /* { dg-require-effective-target arm_neon_ok } */
6031-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6032+/* { dg-options "-save-temps -O0" } */
6033+/* { dg-add-options arm_neon } */
6034
6035 #include "arm_neon.h"
6036
6037Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
6038===================================================================
6039--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
6040+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
6041@@ -3,7 +3,8 @@
6042
6043 /* { dg-do assemble } */
6044 /* { dg-require-effective-target arm_neon_ok } */
6045-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6046+/* { dg-options "-save-temps -O0" } */
6047+/* { dg-add-options arm_neon } */
6048
6049 #include "arm_neon.h"
6050
6051Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors16.c
6052===================================================================
6053--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veors16.c
6054+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors16.c
6055@@ -3,7 +3,8 @@
6056
6057 /* { dg-do assemble } */
6058 /* { dg-require-effective-target arm_neon_ok } */
6059-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6060+/* { dg-options "-save-temps -O0" } */
6061+/* { dg-add-options arm_neon } */
6062
6063 #include "arm_neon.h"
6064
6065Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors32.c
6066===================================================================
6067--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veors32.c
6068+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors32.c
6069@@ -3,7 +3,8 @@
6070
6071 /* { dg-do assemble } */
6072 /* { dg-require-effective-target arm_neon_ok } */
6073-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6074+/* { dg-options "-save-temps -O0" } */
6075+/* { dg-add-options arm_neon } */
6076
6077 #include "arm_neon.h"
6078
6079Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors64.c
6080===================================================================
6081--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veors64.c
6082+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors64.c
6083@@ -3,7 +3,8 @@
6084
6085 /* { dg-do assemble } */
6086 /* { dg-require-effective-target arm_neon_ok } */
6087-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6088+/* { dg-options "-save-temps -O0" } */
6089+/* { dg-add-options arm_neon } */
6090
6091 #include "arm_neon.h"
6092
6093Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors8.c
6094===================================================================
6095--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veors8.c
6096+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veors8.c
6097@@ -3,7 +3,8 @@
6098
6099 /* { dg-do assemble } */
6100 /* { dg-require-effective-target arm_neon_ok } */
6101-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6102+/* { dg-options "-save-temps -O0" } */
6103+/* { dg-add-options arm_neon } */
6104
6105 #include "arm_neon.h"
6106
6107Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru16.c
6108===================================================================
6109--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veoru16.c
6110+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru16.c
6111@@ -3,7 +3,8 @@
6112
6113 /* { dg-do assemble } */
6114 /* { dg-require-effective-target arm_neon_ok } */
6115-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6116+/* { dg-options "-save-temps -O0" } */
6117+/* { dg-add-options arm_neon } */
6118
6119 #include "arm_neon.h"
6120
6121Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru32.c
6122===================================================================
6123--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veoru32.c
6124+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru32.c
6125@@ -3,7 +3,8 @@
6126
6127 /* { dg-do assemble } */
6128 /* { dg-require-effective-target arm_neon_ok } */
6129-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6130+/* { dg-options "-save-temps -O0" } */
6131+/* { dg-add-options arm_neon } */
6132
6133 #include "arm_neon.h"
6134
6135Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru64.c
6136===================================================================
6137--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veoru64.c
6138+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru64.c
6139@@ -3,7 +3,8 @@
6140
6141 /* { dg-do assemble } */
6142 /* { dg-require-effective-target arm_neon_ok } */
6143-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6144+/* { dg-options "-save-temps -O0" } */
6145+/* { dg-add-options arm_neon } */
6146
6147 #include "arm_neon.h"
6148
6149Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru8.c
6150===================================================================
6151--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/veoru8.c
6152+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/veoru8.c
6153@@ -3,7 +3,8 @@
6154
6155 /* { dg-do assemble } */
6156 /* { dg-require-effective-target arm_neon_ok } */
6157-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6158+/* { dg-options "-save-temps -O0" } */
6159+/* { dg-add-options arm_neon } */
6160
6161 #include "arm_neon.h"
6162
6163Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
6164===================================================================
6165--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
6166+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
6167@@ -3,7 +3,8 @@
6168
6169 /* { dg-do assemble } */
6170 /* { dg-require-effective-target arm_neon_ok } */
6171-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6172+/* { dg-options "-save-temps -O0" } */
6173+/* { dg-add-options arm_neon } */
6174
6175 #include "arm_neon.h"
6176
6177Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
6178===================================================================
6179--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
6180+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
6181@@ -3,7 +3,8 @@
6182
6183 /* { dg-do assemble } */
6184 /* { dg-require-effective-target arm_neon_ok } */
6185-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6186+/* { dg-options "-save-temps -O0" } */
6187+/* { dg-add-options arm_neon } */
6188
6189 #include "arm_neon.h"
6190
6191Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
6192===================================================================
6193--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
6194+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
6195@@ -3,7 +3,8 @@
6196
6197 /* { dg-do assemble } */
6198 /* { dg-require-effective-target arm_neon_ok } */
6199-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6200+/* { dg-options "-save-temps -O0" } */
6201+/* { dg-add-options arm_neon } */
6202
6203 #include "arm_neon.h"
6204
6205Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
6206===================================================================
6207--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
6208+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
6209@@ -3,7 +3,8 @@
6210
6211 /* { dg-do assemble } */
6212 /* { dg-require-effective-target arm_neon_ok } */
6213-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6214+/* { dg-options "-save-temps -O0" } */
6215+/* { dg-add-options arm_neon } */
6216
6217 #include "arm_neon.h"
6218
6219Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
6220===================================================================
6221--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
6222+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
6223@@ -3,7 +3,8 @@
6224
6225 /* { dg-do assemble } */
6226 /* { dg-require-effective-target arm_neon_ok } */
6227-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6228+/* { dg-options "-save-temps -O0" } */
6229+/* { dg-add-options arm_neon } */
6230
6231 #include "arm_neon.h"
6232
6233Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
6234===================================================================
6235--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
6236+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
6237@@ -3,7 +3,8 @@
6238
6239 /* { dg-do assemble } */
6240 /* { dg-require-effective-target arm_neon_ok } */
6241-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6242+/* { dg-options "-save-temps -O0" } */
6243+/* { dg-add-options arm_neon } */
6244
6245 #include "arm_neon.h"
6246
6247Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
6248===================================================================
6249--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
6250+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
6251@@ -3,7 +3,8 @@
6252
6253 /* { dg-do assemble } */
6254 /* { dg-require-effective-target arm_neon_ok } */
6255-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6256+/* { dg-options "-save-temps -O0" } */
6257+/* { dg-add-options arm_neon } */
6258
6259 #include "arm_neon.h"
6260
6261Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
6262===================================================================
6263--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
6264+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
6265@@ -3,7 +3,8 @@
6266
6267 /* { dg-do assemble } */
6268 /* { dg-require-effective-target arm_neon_ok } */
6269-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6270+/* { dg-options "-save-temps -O0" } */
6271+/* { dg-add-options arm_neon } */
6272
6273 #include "arm_neon.h"
6274
6275Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
6276===================================================================
6277--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
6278+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
6279@@ -3,7 +3,8 @@
6280
6281 /* { dg-do assemble } */
6282 /* { dg-require-effective-target arm_neon_ok } */
6283-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6284+/* { dg-options "-save-temps -O0" } */
6285+/* { dg-add-options arm_neon } */
6286
6287 #include "arm_neon.h"
6288
6289Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
6290===================================================================
6291--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
6292+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
6293@@ -3,7 +3,8 @@
6294
6295 /* { dg-do assemble } */
6296 /* { dg-require-effective-target arm_neon_ok } */
6297-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6298+/* { dg-options "-save-temps -O0" } */
6299+/* { dg-add-options arm_neon } */
6300
6301 #include "arm_neon.h"
6302
6303Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
6304===================================================================
6305--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
6306+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
6307@@ -3,7 +3,8 @@
6308
6309 /* { dg-do assemble } */
6310 /* { dg-require-effective-target arm_neon_ok } */
6311-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6312+/* { dg-options "-save-temps -O0" } */
6313+/* { dg-add-options arm_neon } */
6314
6315 #include "arm_neon.h"
6316
6317Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextf32.c
6318===================================================================
6319--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextf32.c
6320+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextf32.c
6321@@ -3,7 +3,8 @@
6322
6323 /* { dg-do assemble } */
6324 /* { dg-require-effective-target arm_neon_ok } */
6325-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6326+/* { dg-options "-save-temps -O0" } */
6327+/* { dg-add-options arm_neon } */
6328
6329 #include "arm_neon.h"
6330
6331Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextp16.c
6332===================================================================
6333--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextp16.c
6334+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextp16.c
6335@@ -3,7 +3,8 @@
6336
6337 /* { dg-do assemble } */
6338 /* { dg-require-effective-target arm_neon_ok } */
6339-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6340+/* { dg-options "-save-temps -O0" } */
6341+/* { dg-add-options arm_neon } */
6342
6343 #include "arm_neon.h"
6344
6345Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextp8.c
6346===================================================================
6347--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextp8.c
6348+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextp8.c
6349@@ -3,7 +3,8 @@
6350
6351 /* { dg-do assemble } */
6352 /* { dg-require-effective-target arm_neon_ok } */
6353-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6354+/* { dg-options "-save-temps -O0" } */
6355+/* { dg-add-options arm_neon } */
6356
6357 #include "arm_neon.h"
6358
6359Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts16.c
6360===================================================================
6361--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vexts16.c
6362+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts16.c
6363@@ -3,7 +3,8 @@
6364
6365 /* { dg-do assemble } */
6366 /* { dg-require-effective-target arm_neon_ok } */
6367-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6368+/* { dg-options "-save-temps -O0" } */
6369+/* { dg-add-options arm_neon } */
6370
6371 #include "arm_neon.h"
6372
6373Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts32.c
6374===================================================================
6375--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vexts32.c
6376+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts32.c
6377@@ -3,7 +3,8 @@
6378
6379 /* { dg-do assemble } */
6380 /* { dg-require-effective-target arm_neon_ok } */
6381-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6382+/* { dg-options "-save-temps -O0" } */
6383+/* { dg-add-options arm_neon } */
6384
6385 #include "arm_neon.h"
6386
6387Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts64.c
6388===================================================================
6389--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vexts64.c
6390+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts64.c
6391@@ -3,7 +3,8 @@
6392
6393 /* { dg-do assemble } */
6394 /* { dg-require-effective-target arm_neon_ok } */
6395-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6396+/* { dg-options "-save-temps -O0" } */
6397+/* { dg-add-options arm_neon } */
6398
6399 #include "arm_neon.h"
6400
6401Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts8.c
6402===================================================================
6403--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vexts8.c
6404+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vexts8.c
6405@@ -3,7 +3,8 @@
6406
6407 /* { dg-do assemble } */
6408 /* { dg-require-effective-target arm_neon_ok } */
6409-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6410+/* { dg-options "-save-temps -O0" } */
6411+/* { dg-add-options arm_neon } */
6412
6413 #include "arm_neon.h"
6414
6415Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu16.c
6416===================================================================
6417--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextu16.c
6418+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu16.c
6419@@ -3,7 +3,8 @@
6420
6421 /* { dg-do assemble } */
6422 /* { dg-require-effective-target arm_neon_ok } */
6423-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6424+/* { dg-options "-save-temps -O0" } */
6425+/* { dg-add-options arm_neon } */
6426
6427 #include "arm_neon.h"
6428
6429Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu32.c
6430===================================================================
6431--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextu32.c
6432+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu32.c
6433@@ -3,7 +3,8 @@
6434
6435 /* { dg-do assemble } */
6436 /* { dg-require-effective-target arm_neon_ok } */
6437-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6438+/* { dg-options "-save-temps -O0" } */
6439+/* { dg-add-options arm_neon } */
6440
6441 #include "arm_neon.h"
6442
6443Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu64.c
6444===================================================================
6445--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextu64.c
6446+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu64.c
6447@@ -3,7 +3,8 @@
6448
6449 /* { dg-do assemble } */
6450 /* { dg-require-effective-target arm_neon_ok } */
6451-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6452+/* { dg-options "-save-temps -O0" } */
6453+/* { dg-add-options arm_neon } */
6454
6455 #include "arm_neon.h"
6456
6457Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu8.c
6458===================================================================
6459--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vextu8.c
6460+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vextu8.c
6461@@ -3,7 +3,8 @@
6462
6463 /* { dg-do assemble } */
6464 /* { dg-require-effective-target arm_neon_ok } */
6465-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6466+/* { dg-options "-save-temps -O0" } */
6467+/* { dg-add-options arm_neon } */
6468
6469 #include "arm_neon.h"
6470
6471Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
6472===================================================================
6473--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
6474+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
6475@@ -2,7 +2,8 @@
6476
6477 /* { dg-do compile } */
6478 /* { dg-require-effective-target arm_neon_ok } */
6479-/* { dg-options "-save-temps -mfpu=neon -mfloat-abi=softfp" } */
6480+/* { dg-options "-save-temps" } */
6481+/* { dg-add-options arm_neon } */
6482
6483 #include <arm_neon.h>
6484
6485Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
6486===================================================================
6487--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
6488+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
6489@@ -3,7 +3,8 @@
6490
6491 /* { dg-do assemble } */
6492 /* { dg-require-effective-target arm_neon_ok } */
6493-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6494+/* { dg-options "-save-temps -O0" } */
6495+/* { dg-add-options arm_neon } */
6496
6497 #include "arm_neon.h"
6498
6499Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
6500===================================================================
6501--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
6502+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
6503@@ -3,7 +3,8 @@
6504
6505 /* { dg-do assemble } */
6506 /* { dg-require-effective-target arm_neon_ok } */
6507-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6508+/* { dg-options "-save-temps -O0" } */
6509+/* { dg-add-options arm_neon } */
6510
6511 #include "arm_neon.h"
6512
6513Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
6514===================================================================
6515--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
6516+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
6517@@ -3,7 +3,8 @@
6518
6519 /* { dg-do assemble } */
6520 /* { dg-require-effective-target arm_neon_ok } */
6521-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6522+/* { dg-options "-save-temps -O0" } */
6523+/* { dg-add-options arm_neon } */
6524
6525 #include "arm_neon.h"
6526
6527Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
6528===================================================================
6529--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
6530+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
6531@@ -3,7 +3,8 @@
6532
6533 /* { dg-do assemble } */
6534 /* { dg-require-effective-target arm_neon_ok } */
6535-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6536+/* { dg-options "-save-temps -O0" } */
6537+/* { dg-add-options arm_neon } */
6538
6539 #include "arm_neon.h"
6540
6541Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
6542===================================================================
6543--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
6544+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
6545@@ -3,7 +3,8 @@
6546
6547 /* { dg-do assemble } */
6548 /* { dg-require-effective-target arm_neon_ok } */
6549-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6550+/* { dg-options "-save-temps -O0" } */
6551+/* { dg-add-options arm_neon } */
6552
6553 #include "arm_neon.h"
6554
6555Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
6556===================================================================
6557--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
6558+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
6559@@ -3,7 +3,8 @@
6560
6561 /* { dg-do assemble } */
6562 /* { dg-require-effective-target arm_neon_ok } */
6563-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6564+/* { dg-options "-save-temps -O0" } */
6565+/* { dg-add-options arm_neon } */
6566
6567 #include "arm_neon.h"
6568
6569Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
6570===================================================================
6571--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
6572+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
6573@@ -3,7 +3,8 @@
6574
6575 /* { dg-do assemble } */
6576 /* { dg-require-effective-target arm_neon_ok } */
6577-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6578+/* { dg-options "-save-temps -O0" } */
6579+/* { dg-add-options arm_neon } */
6580
6581 #include "arm_neon.h"
6582
6583Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
6584===================================================================
6585--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
6586+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
6587@@ -3,7 +3,8 @@
6588
6589 /* { dg-do assemble } */
6590 /* { dg-require-effective-target arm_neon_ok } */
6591-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6592+/* { dg-options "-save-temps -O0" } */
6593+/* { dg-add-options arm_neon } */
6594
6595 #include "arm_neon.h"
6596
6597Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
6598===================================================================
6599--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
6600+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
6601@@ -3,7 +3,8 @@
6602
6603 /* { dg-do assemble } */
6604 /* { dg-require-effective-target arm_neon_ok } */
6605-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6606+/* { dg-options "-save-temps -O0" } */
6607+/* { dg-add-options arm_neon } */
6608
6609 #include "arm_neon.h"
6610
6611Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
6612===================================================================
6613--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
6614+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
6615@@ -3,7 +3,8 @@
6616
6617 /* { dg-do assemble } */
6618 /* { dg-require-effective-target arm_neon_ok } */
6619-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6620+/* { dg-options "-save-temps -O0" } */
6621+/* { dg-add-options arm_neon } */
6622
6623 #include "arm_neon.h"
6624
6625Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
6626===================================================================
6627--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
6628+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
6629@@ -3,7 +3,8 @@
6630
6631 /* { dg-do assemble } */
6632 /* { dg-require-effective-target arm_neon_ok } */
6633-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6634+/* { dg-options "-save-temps -O0" } */
6635+/* { dg-add-options arm_neon } */
6636
6637 #include "arm_neon.h"
6638
6639Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
6640===================================================================
6641--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
6642+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
6643@@ -3,7 +3,8 @@
6644
6645 /* { dg-do assemble } */
6646 /* { dg-require-effective-target arm_neon_ok } */
6647-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6648+/* { dg-options "-save-temps -O0" } */
6649+/* { dg-add-options arm_neon } */
6650
6651 #include "arm_neon.h"
6652
6653Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
6654===================================================================
6655--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
6656+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
6657@@ -3,7 +3,8 @@
6658
6659 /* { dg-do assemble } */
6660 /* { dg-require-effective-target arm_neon_ok } */
6661-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6662+/* { dg-options "-save-temps -O0" } */
6663+/* { dg-add-options arm_neon } */
6664
6665 #include "arm_neon.h"
6666
6667Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
6668===================================================================
6669--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
6670+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
6671@@ -3,7 +3,8 @@
6672
6673 /* { dg-do assemble } */
6674 /* { dg-require-effective-target arm_neon_ok } */
6675-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6676+/* { dg-options "-save-temps -O0" } */
6677+/* { dg-add-options arm_neon } */
6678
6679 #include "arm_neon.h"
6680
6681Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
6682===================================================================
6683--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
6684+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
6685@@ -3,7 +3,8 @@
6686
6687 /* { dg-do assemble } */
6688 /* { dg-require-effective-target arm_neon_ok } */
6689-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6690+/* { dg-options "-save-temps -O0" } */
6691+/* { dg-add-options arm_neon } */
6692
6693 #include "arm_neon.h"
6694
6695Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
6696===================================================================
6697--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
6698+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
6699@@ -3,7 +3,8 @@
6700
6701 /* { dg-do assemble } */
6702 /* { dg-require-effective-target arm_neon_ok } */
6703-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6704+/* { dg-options "-save-temps -O0" } */
6705+/* { dg-add-options arm_neon } */
6706
6707 #include "arm_neon.h"
6708
6709Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
6710===================================================================
6711--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
6712+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
6713@@ -3,7 +3,8 @@
6714
6715 /* { dg-do assemble } */
6716 /* { dg-require-effective-target arm_neon_ok } */
6717-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6718+/* { dg-options "-save-temps -O0" } */
6719+/* { dg-add-options arm_neon } */
6720
6721 #include "arm_neon.h"
6722
6723Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
6724===================================================================
6725--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
6726+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
6727@@ -3,7 +3,8 @@
6728
6729 /* { dg-do assemble } */
6730 /* { dg-require-effective-target arm_neon_ok } */
6731-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6732+/* { dg-options "-save-temps -O0" } */
6733+/* { dg-add-options arm_neon } */
6734
6735 #include "arm_neon.h"
6736
6737Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
6738===================================================================
6739--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
6740+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
6741@@ -3,7 +3,8 @@
6742
6743 /* { dg-do assemble } */
6744 /* { dg-require-effective-target arm_neon_ok } */
6745-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6746+/* { dg-options "-save-temps -O0" } */
6747+/* { dg-add-options arm_neon } */
6748
6749 #include "arm_neon.h"
6750
6751Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
6752===================================================================
6753--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
6754+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
6755@@ -3,7 +3,8 @@
6756
6757 /* { dg-do assemble } */
6758 /* { dg-require-effective-target arm_neon_ok } */
6759-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6760+/* { dg-options "-save-temps -O0" } */
6761+/* { dg-add-options arm_neon } */
6762
6763 #include "arm_neon.h"
6764
6765Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
6766===================================================================
6767--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
6768+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
6769@@ -3,7 +3,8 @@
6770
6771 /* { dg-do assemble } */
6772 /* { dg-require-effective-target arm_neon_ok } */
6773-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6774+/* { dg-options "-save-temps -O0" } */
6775+/* { dg-add-options arm_neon } */
6776
6777 #include "arm_neon.h"
6778
6779Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
6780===================================================================
6781--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
6782+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
6783@@ -3,7 +3,8 @@
6784
6785 /* { dg-do assemble } */
6786 /* { dg-require-effective-target arm_neon_ok } */
6787-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6788+/* { dg-options "-save-temps -O0" } */
6789+/* { dg-add-options arm_neon } */
6790
6791 #include "arm_neon.h"
6792
6793Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
6794===================================================================
6795--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
6796+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
6797@@ -3,7 +3,8 @@
6798
6799 /* { dg-do assemble } */
6800 /* { dg-require-effective-target arm_neon_ok } */
6801-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6802+/* { dg-options "-save-temps -O0" } */
6803+/* { dg-add-options arm_neon } */
6804
6805 #include "arm_neon.h"
6806
6807Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
6808===================================================================
6809--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
6810+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
6811@@ -3,7 +3,8 @@
6812
6813 /* { dg-do assemble } */
6814 /* { dg-require-effective-target arm_neon_ok } */
6815-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6816+/* { dg-options "-save-temps -O0" } */
6817+/* { dg-add-options arm_neon } */
6818
6819 #include "arm_neon.h"
6820
6821Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
6822===================================================================
6823--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
6824+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
6825@@ -3,7 +3,8 @@
6826
6827 /* { dg-do assemble } */
6828 /* { dg-require-effective-target arm_neon_ok } */
6829-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6830+/* { dg-options "-save-temps -O0" } */
6831+/* { dg-add-options arm_neon } */
6832
6833 #include "arm_neon.h"
6834
6835Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
6836===================================================================
6837--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
6838+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
6839@@ -3,7 +3,8 @@
6840
6841 /* { dg-do assemble } */
6842 /* { dg-require-effective-target arm_neon_ok } */
6843-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6844+/* { dg-options "-save-temps -O0" } */
6845+/* { dg-add-options arm_neon } */
6846
6847 #include "arm_neon.h"
6848
6849Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
6850===================================================================
6851--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
6852+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
6853@@ -3,7 +3,8 @@
6854
6855 /* { dg-do assemble } */
6856 /* { dg-require-effective-target arm_neon_ok } */
6857-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6858+/* { dg-options "-save-temps -O0" } */
6859+/* { dg-add-options arm_neon } */
6860
6861 #include "arm_neon.h"
6862
6863Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
6864===================================================================
6865--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
6866+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
6867@@ -3,7 +3,8 @@
6868
6869 /* { dg-do assemble } */
6870 /* { dg-require-effective-target arm_neon_ok } */
6871-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6872+/* { dg-options "-save-temps -O0" } */
6873+/* { dg-add-options arm_neon } */
6874
6875 #include "arm_neon.h"
6876
6877Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
6878===================================================================
6879--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
6880+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
6881@@ -3,7 +3,8 @@
6882
6883 /* { dg-do assemble } */
6884 /* { dg-require-effective-target arm_neon_ok } */
6885-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6886+/* { dg-options "-save-temps -O0" } */
6887+/* { dg-add-options arm_neon } */
6888
6889 #include "arm_neon.h"
6890
6891Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
6892===================================================================
6893--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
6894+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
6895@@ -3,7 +3,8 @@
6896
6897 /* { dg-do assemble } */
6898 /* { dg-require-effective-target arm_neon_ok } */
6899-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6900+/* { dg-options "-save-temps -O0" } */
6901+/* { dg-add-options arm_neon } */
6902
6903 #include "arm_neon.h"
6904
6905Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
6906===================================================================
6907--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
6908+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
6909@@ -3,7 +3,8 @@
6910
6911 /* { dg-do assemble } */
6912 /* { dg-require-effective-target arm_neon_ok } */
6913-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6914+/* { dg-options "-save-temps -O0" } */
6915+/* { dg-add-options arm_neon } */
6916
6917 #include "arm_neon.h"
6918
6919Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
6920===================================================================
6921--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
6922+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
6923@@ -3,7 +3,8 @@
6924
6925 /* { dg-do assemble } */
6926 /* { dg-require-effective-target arm_neon_ok } */
6927-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6928+/* { dg-options "-save-temps -O0" } */
6929+/* { dg-add-options arm_neon } */
6930
6931 #include "arm_neon.h"
6932
6933Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
6934===================================================================
6935--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
6936+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
6937@@ -3,7 +3,8 @@
6938
6939 /* { dg-do assemble } */
6940 /* { dg-require-effective-target arm_neon_ok } */
6941-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6942+/* { dg-options "-save-temps -O0" } */
6943+/* { dg-add-options arm_neon } */
6944
6945 #include "arm_neon.h"
6946
6947Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
6948===================================================================
6949--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
6950+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
6951@@ -3,7 +3,8 @@
6952
6953 /* { dg-do assemble } */
6954 /* { dg-require-effective-target arm_neon_ok } */
6955-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6956+/* { dg-options "-save-temps -O0" } */
6957+/* { dg-add-options arm_neon } */
6958
6959 #include "arm_neon.h"
6960
6961Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
6962===================================================================
6963--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
6964+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
6965@@ -3,7 +3,8 @@
6966
6967 /* { dg-do assemble } */
6968 /* { dg-require-effective-target arm_neon_ok } */
6969-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6970+/* { dg-options "-save-temps -O0" } */
6971+/* { dg-add-options arm_neon } */
6972
6973 #include "arm_neon.h"
6974
6975Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
6976===================================================================
6977--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
6978+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
6979@@ -3,7 +3,8 @@
6980
6981 /* { dg-do assemble } */
6982 /* { dg-require-effective-target arm_neon_ok } */
6983-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6984+/* { dg-options "-save-temps -O0" } */
6985+/* { dg-add-options arm_neon } */
6986
6987 #include "arm_neon.h"
6988
6989Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
6990===================================================================
6991--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
6992+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
6993@@ -3,7 +3,8 @@
6994
6995 /* { dg-do assemble } */
6996 /* { dg-require-effective-target arm_neon_ok } */
6997-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
6998+/* { dg-options "-save-temps -O0" } */
6999+/* { dg-add-options arm_neon } */
7000
7001 #include "arm_neon.h"
7002
7003Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
7004===================================================================
7005--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
7006+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
7007@@ -3,7 +3,8 @@
7008
7009 /* { dg-do assemble } */
7010 /* { dg-require-effective-target arm_neon_ok } */
7011-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7012+/* { dg-options "-save-temps -O0" } */
7013+/* { dg-add-options arm_neon } */
7014
7015 #include "arm_neon.h"
7016
7017Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
7018===================================================================
7019--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
7020+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
7021@@ -3,7 +3,8 @@
7022
7023 /* { dg-do assemble } */
7024 /* { dg-require-effective-target arm_neon_ok } */
7025-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7026+/* { dg-options "-save-temps -O0" } */
7027+/* { dg-add-options arm_neon } */
7028
7029 #include "arm_neon.h"
7030
7031Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
7032===================================================================
7033--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
7034+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
7035@@ -3,7 +3,8 @@
7036
7037 /* { dg-do assemble } */
7038 /* { dg-require-effective-target arm_neon_ok } */
7039-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7040+/* { dg-options "-save-temps -O0" } */
7041+/* { dg-add-options arm_neon } */
7042
7043 #include "arm_neon.h"
7044
7045Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
7046===================================================================
7047--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
7048+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
7049@@ -3,7 +3,8 @@
7050
7051 /* { dg-do assemble } */
7052 /* { dg-require-effective-target arm_neon_ok } */
7053-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7054+/* { dg-options "-save-temps -O0" } */
7055+/* { dg-add-options arm_neon } */
7056
7057 #include "arm_neon.h"
7058
7059Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
7060===================================================================
7061--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
7062+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
7063@@ -3,7 +3,8 @@
7064
7065 /* { dg-do assemble } */
7066 /* { dg-require-effective-target arm_neon_ok } */
7067-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7068+/* { dg-options "-save-temps -O0" } */
7069+/* { dg-add-options arm_neon } */
7070
7071 #include "arm_neon.h"
7072
7073Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
7074===================================================================
7075--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
7076+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
7077@@ -3,7 +3,8 @@
7078
7079 /* { dg-do assemble } */
7080 /* { dg-require-effective-target arm_neon_ok } */
7081-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7082+/* { dg-options "-save-temps -O0" } */
7083+/* { dg-add-options arm_neon } */
7084
7085 #include "arm_neon.h"
7086
7087Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
7088===================================================================
7089--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
7090+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
7091@@ -3,7 +3,8 @@
7092
7093 /* { dg-do assemble } */
7094 /* { dg-require-effective-target arm_neon_ok } */
7095-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7096+/* { dg-options "-save-temps -O0" } */
7097+/* { dg-add-options arm_neon } */
7098
7099 #include "arm_neon.h"
7100
7101Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
7102===================================================================
7103--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
7104+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
7105@@ -3,7 +3,8 @@
7106
7107 /* { dg-do assemble } */
7108 /* { dg-require-effective-target arm_neon_ok } */
7109-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7110+/* { dg-options "-save-temps -O0" } */
7111+/* { dg-add-options arm_neon } */
7112
7113 #include "arm_neon.h"
7114
7115Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
7116===================================================================
7117--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
7118+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
7119@@ -3,7 +3,8 @@
7120
7121 /* { dg-do assemble } */
7122 /* { dg-require-effective-target arm_neon_ok } */
7123-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7124+/* { dg-options "-save-temps -O0" } */
7125+/* { dg-add-options arm_neon } */
7126
7127 #include "arm_neon.h"
7128
7129Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
7130===================================================================
7131--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
7132+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
7133@@ -3,7 +3,8 @@
7134
7135 /* { dg-do assemble } */
7136 /* { dg-require-effective-target arm_neon_ok } */
7137-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7138+/* { dg-options "-save-temps -O0" } */
7139+/* { dg-add-options arm_neon } */
7140
7141 #include "arm_neon.h"
7142
7143Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
7144===================================================================
7145--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
7146+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
7147@@ -3,7 +3,8 @@
7148
7149 /* { dg-do assemble } */
7150 /* { dg-require-effective-target arm_neon_ok } */
7151-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7152+/* { dg-options "-save-temps -O0" } */
7153+/* { dg-add-options arm_neon } */
7154
7155 #include "arm_neon.h"
7156
7157Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
7158===================================================================
7159--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
7160+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
7161@@ -3,7 +3,8 @@
7162
7163 /* { dg-do assemble } */
7164 /* { dg-require-effective-target arm_neon_ok } */
7165-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7166+/* { dg-options "-save-temps -O0" } */
7167+/* { dg-add-options arm_neon } */
7168
7169 #include "arm_neon.h"
7170
7171Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
7172===================================================================
7173--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
7174+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
7175@@ -3,7 +3,8 @@
7176
7177 /* { dg-do assemble } */
7178 /* { dg-require-effective-target arm_neon_ok } */
7179-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7180+/* { dg-options "-save-temps -O0" } */
7181+/* { dg-add-options arm_neon } */
7182
7183 #include "arm_neon.h"
7184
7185Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
7186===================================================================
7187--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
7188+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
7189@@ -3,7 +3,8 @@
7190
7191 /* { dg-do assemble } */
7192 /* { dg-require-effective-target arm_neon_ok } */
7193-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7194+/* { dg-options "-save-temps -O0" } */
7195+/* { dg-add-options arm_neon } */
7196
7197 #include "arm_neon.h"
7198
7199Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
7200===================================================================
7201--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
7202+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
7203@@ -3,7 +3,8 @@
7204
7205 /* { dg-do assemble } */
7206 /* { dg-require-effective-target arm_neon_ok } */
7207-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7208+/* { dg-options "-save-temps -O0" } */
7209+/* { dg-add-options arm_neon } */
7210
7211 #include "arm_neon.h"
7212
7213Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
7214===================================================================
7215--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
7216+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
7217@@ -3,7 +3,8 @@
7218
7219 /* { dg-do assemble } */
7220 /* { dg-require-effective-target arm_neon_ok } */
7221-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7222+/* { dg-options "-save-temps -O0" } */
7223+/* { dg-add-options arm_neon } */
7224
7225 #include "arm_neon.h"
7226
7227Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
7228===================================================================
7229--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
7230+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
7231@@ -3,7 +3,8 @@
7232
7233 /* { dg-do assemble } */
7234 /* { dg-require-effective-target arm_neon_ok } */
7235-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7236+/* { dg-options "-save-temps -O0" } */
7237+/* { dg-add-options arm_neon } */
7238
7239 #include "arm_neon.h"
7240
7241Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
7242===================================================================
7243--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
7244+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
7245@@ -3,7 +3,8 @@
7246
7247 /* { dg-do assemble } */
7248 /* { dg-require-effective-target arm_neon_ok } */
7249-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7250+/* { dg-options "-save-temps -O0" } */
7251+/* { dg-add-options arm_neon } */
7252
7253 #include "arm_neon.h"
7254
7255Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
7256===================================================================
7257--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
7258+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
7259@@ -3,7 +3,8 @@
7260
7261 /* { dg-do assemble } */
7262 /* { dg-require-effective-target arm_neon_ok } */
7263-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7264+/* { dg-options "-save-temps -O0" } */
7265+/* { dg-add-options arm_neon } */
7266
7267 #include "arm_neon.h"
7268
7269Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
7270===================================================================
7271--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
7272+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
7273@@ -3,7 +3,8 @@
7274
7275 /* { dg-do assemble } */
7276 /* { dg-require-effective-target arm_neon_ok } */
7277-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7278+/* { dg-options "-save-temps -O0" } */
7279+/* { dg-add-options arm_neon } */
7280
7281 #include "arm_neon.h"
7282
7283Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
7284===================================================================
7285--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
7286+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
7287@@ -3,7 +3,8 @@
7288
7289 /* { dg-do assemble } */
7290 /* { dg-require-effective-target arm_neon_ok } */
7291-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7292+/* { dg-options "-save-temps -O0" } */
7293+/* { dg-add-options arm_neon } */
7294
7295 #include "arm_neon.h"
7296
7297Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
7298===================================================================
7299--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
7300+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
7301@@ -3,7 +3,8 @@
7302
7303 /* { dg-do assemble } */
7304 /* { dg-require-effective-target arm_neon_ok } */
7305-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7306+/* { dg-options "-save-temps -O0" } */
7307+/* { dg-add-options arm_neon } */
7308
7309 #include "arm_neon.h"
7310
7311Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
7312===================================================================
7313--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
7314+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
7315@@ -3,7 +3,8 @@
7316
7317 /* { dg-do assemble } */
7318 /* { dg-require-effective-target arm_neon_ok } */
7319-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7320+/* { dg-options "-save-temps -O0" } */
7321+/* { dg-add-options arm_neon } */
7322
7323 #include "arm_neon.h"
7324
7325Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
7326===================================================================
7327--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
7328+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
7329@@ -3,7 +3,8 @@
7330
7331 /* { dg-do assemble } */
7332 /* { dg-require-effective-target arm_neon_ok } */
7333-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7334+/* { dg-options "-save-temps -O0" } */
7335+/* { dg-add-options arm_neon } */
7336
7337 #include "arm_neon.h"
7338
7339Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
7340===================================================================
7341--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
7342+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
7343@@ -3,7 +3,8 @@
7344
7345 /* { dg-do assemble } */
7346 /* { dg-require-effective-target arm_neon_ok } */
7347-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7348+/* { dg-options "-save-temps -O0" } */
7349+/* { dg-add-options arm_neon } */
7350
7351 #include "arm_neon.h"
7352
7353Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
7354===================================================================
7355--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
7356+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
7357@@ -3,7 +3,8 @@
7358
7359 /* { dg-do assemble } */
7360 /* { dg-require-effective-target arm_neon_ok } */
7361-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7362+/* { dg-options "-save-temps -O0" } */
7363+/* { dg-add-options arm_neon } */
7364
7365 #include "arm_neon.h"
7366
7367Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
7368===================================================================
7369--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
7370+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
7371@@ -3,7 +3,8 @@
7372
7373 /* { dg-do assemble } */
7374 /* { dg-require-effective-target arm_neon_ok } */
7375-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7376+/* { dg-options "-save-temps -O0" } */
7377+/* { dg-add-options arm_neon } */
7378
7379 #include "arm_neon.h"
7380
7381Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
7382===================================================================
7383--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
7384+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
7385@@ -3,7 +3,8 @@
7386
7387 /* { dg-do assemble } */
7388 /* { dg-require-effective-target arm_neon_ok } */
7389-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7390+/* { dg-options "-save-temps -O0" } */
7391+/* { dg-add-options arm_neon } */
7392
7393 #include "arm_neon.h"
7394
7395Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
7396===================================================================
7397--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
7398+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
7399@@ -3,7 +3,8 @@
7400
7401 /* { dg-do assemble } */
7402 /* { dg-require-effective-target arm_neon_ok } */
7403-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7404+/* { dg-options "-save-temps -O0" } */
7405+/* { dg-add-options arm_neon } */
7406
7407 #include "arm_neon.h"
7408
7409Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
7410===================================================================
7411--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
7412+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
7413@@ -3,7 +3,8 @@
7414
7415 /* { dg-do assemble } */
7416 /* { dg-require-effective-target arm_neon_ok } */
7417-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7418+/* { dg-options "-save-temps -O0" } */
7419+/* { dg-add-options arm_neon } */
7420
7421 #include "arm_neon.h"
7422
7423Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
7424===================================================================
7425--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
7426+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
7427@@ -3,7 +3,8 @@
7428
7429 /* { dg-do assemble } */
7430 /* { dg-require-effective-target arm_neon_ok } */
7431-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7432+/* { dg-options "-save-temps -O0" } */
7433+/* { dg-add-options arm_neon } */
7434
7435 #include "arm_neon.h"
7436
7437Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
7438===================================================================
7439--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
7440+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
7441@@ -3,7 +3,8 @@
7442
7443 /* { dg-do assemble } */
7444 /* { dg-require-effective-target arm_neon_ok } */
7445-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7446+/* { dg-options "-save-temps -O0" } */
7447+/* { dg-add-options arm_neon } */
7448
7449 #include "arm_neon.h"
7450
7451Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
7452===================================================================
7453--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
7454+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
7455@@ -3,7 +3,8 @@
7456
7457 /* { dg-do assemble } */
7458 /* { dg-require-effective-target arm_neon_ok } */
7459-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7460+/* { dg-options "-save-temps -O0" } */
7461+/* { dg-add-options arm_neon } */
7462
7463 #include "arm_neon.h"
7464
7465Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
7466===================================================================
7467--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
7468+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
7469@@ -3,7 +3,8 @@
7470
7471 /* { dg-do assemble } */
7472 /* { dg-require-effective-target arm_neon_ok } */
7473-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7474+/* { dg-options "-save-temps -O0" } */
7475+/* { dg-add-options arm_neon } */
7476
7477 #include "arm_neon.h"
7478
7479Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
7480===================================================================
7481--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
7482+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
7483@@ -3,7 +3,8 @@
7484
7485 /* { dg-do assemble } */
7486 /* { dg-require-effective-target arm_neon_ok } */
7487-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7488+/* { dg-options "-save-temps -O0" } */
7489+/* { dg-add-options arm_neon } */
7490
7491 #include "arm_neon.h"
7492
7493Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
7494===================================================================
7495--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
7496+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
7497@@ -3,7 +3,8 @@
7498
7499 /* { dg-do assemble } */
7500 /* { dg-require-effective-target arm_neon_ok } */
7501-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7502+/* { dg-options "-save-temps -O0" } */
7503+/* { dg-add-options arm_neon } */
7504
7505 #include "arm_neon.h"
7506
7507Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
7508===================================================================
7509--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
7510+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
7511@@ -3,7 +3,8 @@
7512
7513 /* { dg-do assemble } */
7514 /* { dg-require-effective-target arm_neon_ok } */
7515-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7516+/* { dg-options "-save-temps -O0" } */
7517+/* { dg-add-options arm_neon } */
7518
7519 #include "arm_neon.h"
7520
7521Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
7522===================================================================
7523--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
7524+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
7525@@ -3,7 +3,8 @@
7526
7527 /* { dg-do assemble } */
7528 /* { dg-require-effective-target arm_neon_ok } */
7529-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7530+/* { dg-options "-save-temps -O0" } */
7531+/* { dg-add-options arm_neon } */
7532
7533 #include "arm_neon.h"
7534
7535Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
7536===================================================================
7537--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
7538+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
7539@@ -3,7 +3,8 @@
7540
7541 /* { dg-do assemble } */
7542 /* { dg-require-effective-target arm_neon_ok } */
7543-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7544+/* { dg-options "-save-temps -O0" } */
7545+/* { dg-add-options arm_neon } */
7546
7547 #include "arm_neon.h"
7548
7549Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
7550===================================================================
7551--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
7552+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
7553@@ -3,7 +3,8 @@
7554
7555 /* { dg-do assemble } */
7556 /* { dg-require-effective-target arm_neon_ok } */
7557-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7558+/* { dg-options "-save-temps -O0" } */
7559+/* { dg-add-options arm_neon } */
7560
7561 #include "arm_neon.h"
7562
7563Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
7564===================================================================
7565--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
7566+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
7567@@ -3,7 +3,8 @@
7568
7569 /* { dg-do assemble } */
7570 /* { dg-require-effective-target arm_neon_ok } */
7571-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7572+/* { dg-options "-save-temps -O0" } */
7573+/* { dg-add-options arm_neon } */
7574
7575 #include "arm_neon.h"
7576
7577Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
7578===================================================================
7579--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
7580+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
7581@@ -3,7 +3,8 @@
7582
7583 /* { dg-do assemble } */
7584 /* { dg-require-effective-target arm_neon_ok } */
7585-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7586+/* { dg-options "-save-temps -O0" } */
7587+/* { dg-add-options arm_neon } */
7588
7589 #include "arm_neon.h"
7590
7591Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
7592===================================================================
7593--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
7594+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
7595@@ -3,7 +3,8 @@
7596
7597 /* { dg-do assemble } */
7598 /* { dg-require-effective-target arm_neon_ok } */
7599-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7600+/* { dg-options "-save-temps -O0" } */
7601+/* { dg-add-options arm_neon } */
7602
7603 #include "arm_neon.h"
7604
7605Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
7606===================================================================
7607--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
7608+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
7609@@ -3,7 +3,8 @@
7610
7611 /* { dg-do assemble } */
7612 /* { dg-require-effective-target arm_neon_ok } */
7613-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7614+/* { dg-options "-save-temps -O0" } */
7615+/* { dg-add-options arm_neon } */
7616
7617 #include "arm_neon.h"
7618
7619Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
7620===================================================================
7621--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
7622+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
7623@@ -3,7 +3,8 @@
7624
7625 /* { dg-do assemble } */
7626 /* { dg-require-effective-target arm_neon_ok } */
7627-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7628+/* { dg-options "-save-temps -O0" } */
7629+/* { dg-add-options arm_neon } */
7630
7631 #include "arm_neon.h"
7632
7633Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
7634===================================================================
7635--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
7636+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
7637@@ -3,7 +3,8 @@
7638
7639 /* { dg-do assemble } */
7640 /* { dg-require-effective-target arm_neon_ok } */
7641-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7642+/* { dg-options "-save-temps -O0" } */
7643+/* { dg-add-options arm_neon } */
7644
7645 #include "arm_neon.h"
7646
7647Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
7648===================================================================
7649--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
7650+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
7651@@ -3,7 +3,8 @@
7652
7653 /* { dg-do assemble } */
7654 /* { dg-require-effective-target arm_neon_ok } */
7655-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7656+/* { dg-options "-save-temps -O0" } */
7657+/* { dg-add-options arm_neon } */
7658
7659 #include "arm_neon.h"
7660
7661Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
7662===================================================================
7663--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
7664+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
7665@@ -3,7 +3,8 @@
7666
7667 /* { dg-do assemble } */
7668 /* { dg-require-effective-target arm_neon_ok } */
7669-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7670+/* { dg-options "-save-temps -O0" } */
7671+/* { dg-add-options arm_neon } */
7672
7673 #include "arm_neon.h"
7674
7675Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
7676===================================================================
7677--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
7678+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
7679@@ -3,7 +3,8 @@
7680
7681 /* { dg-do assemble } */
7682 /* { dg-require-effective-target arm_neon_ok } */
7683-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7684+/* { dg-options "-save-temps -O0" } */
7685+/* { dg-add-options arm_neon } */
7686
7687 #include "arm_neon.h"
7688
7689Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
7690===================================================================
7691--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
7692+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
7693@@ -3,7 +3,8 @@
7694
7695 /* { dg-do assemble } */
7696 /* { dg-require-effective-target arm_neon_ok } */
7697-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7698+/* { dg-options "-save-temps -O0" } */
7699+/* { dg-add-options arm_neon } */
7700
7701 #include "arm_neon.h"
7702
7703Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
7704===================================================================
7705--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
7706+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
7707@@ -3,7 +3,8 @@
7708
7709 /* { dg-do assemble } */
7710 /* { dg-require-effective-target arm_neon_ok } */
7711-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7712+/* { dg-options "-save-temps -O0" } */
7713+/* { dg-add-options arm_neon } */
7714
7715 #include "arm_neon.h"
7716
7717Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
7718===================================================================
7719--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
7720+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
7721@@ -3,7 +3,8 @@
7722
7723 /* { dg-do assemble } */
7724 /* { dg-require-effective-target arm_neon_ok } */
7725-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7726+/* { dg-options "-save-temps -O0" } */
7727+/* { dg-add-options arm_neon } */
7728
7729 #include "arm_neon.h"
7730
7731Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
7732===================================================================
7733--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
7734+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
7735@@ -3,7 +3,8 @@
7736
7737 /* { dg-do assemble } */
7738 /* { dg-require-effective-target arm_neon_ok } */
7739-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7740+/* { dg-options "-save-temps -O0" } */
7741+/* { dg-add-options arm_neon } */
7742
7743 #include "arm_neon.h"
7744
7745Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
7746===================================================================
7747--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
7748+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
7749@@ -3,7 +3,8 @@
7750
7751 /* { dg-do assemble } */
7752 /* { dg-require-effective-target arm_neon_ok } */
7753-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7754+/* { dg-options "-save-temps -O0" } */
7755+/* { dg-add-options arm_neon } */
7756
7757 #include "arm_neon.h"
7758
7759Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
7760===================================================================
7761--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
7762+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
7763@@ -3,7 +3,8 @@
7764
7765 /* { dg-do assemble } */
7766 /* { dg-require-effective-target arm_neon_ok } */
7767-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7768+/* { dg-options "-save-temps -O0" } */
7769+/* { dg-add-options arm_neon } */
7770
7771 #include "arm_neon.h"
7772
7773Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
7774===================================================================
7775--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
7776+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
7777@@ -3,7 +3,8 @@
7778
7779 /* { dg-do assemble } */
7780 /* { dg-require-effective-target arm_neon_ok } */
7781-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7782+/* { dg-options "-save-temps -O0" } */
7783+/* { dg-add-options arm_neon } */
7784
7785 #include "arm_neon.h"
7786
7787Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
7788===================================================================
7789--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
7790+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
7791@@ -3,7 +3,8 @@
7792
7793 /* { dg-do assemble } */
7794 /* { dg-require-effective-target arm_neon_ok } */
7795-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7796+/* { dg-options "-save-temps -O0" } */
7797+/* { dg-add-options arm_neon } */
7798
7799 #include "arm_neon.h"
7800
7801Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
7802===================================================================
7803--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
7804+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
7805@@ -3,7 +3,8 @@
7806
7807 /* { dg-do assemble } */
7808 /* { dg-require-effective-target arm_neon_ok } */
7809-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7810+/* { dg-options "-save-temps -O0" } */
7811+/* { dg-add-options arm_neon } */
7812
7813 #include "arm_neon.h"
7814
7815Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
7816===================================================================
7817--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
7818+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
7819@@ -3,7 +3,8 @@
7820
7821 /* { dg-do assemble } */
7822 /* { dg-require-effective-target arm_neon_ok } */
7823-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7824+/* { dg-options "-save-temps -O0" } */
7825+/* { dg-add-options arm_neon } */
7826
7827 #include "arm_neon.h"
7828
7829Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
7830===================================================================
7831--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
7832+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
7833@@ -3,7 +3,8 @@
7834
7835 /* { dg-do assemble } */
7836 /* { dg-require-effective-target arm_neon_ok } */
7837-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7838+/* { dg-options "-save-temps -O0" } */
7839+/* { dg-add-options arm_neon } */
7840
7841 #include "arm_neon.h"
7842
7843Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
7844===================================================================
7845--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
7846+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
7847@@ -3,7 +3,8 @@
7848
7849 /* { dg-do assemble } */
7850 /* { dg-require-effective-target arm_neon_ok } */
7851-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7852+/* { dg-options "-save-temps -O0" } */
7853+/* { dg-add-options arm_neon } */
7854
7855 #include "arm_neon.h"
7856
7857Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
7858===================================================================
7859--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
7860+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
7861@@ -3,7 +3,8 @@
7862
7863 /* { dg-do assemble } */
7864 /* { dg-require-effective-target arm_neon_ok } */
7865-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7866+/* { dg-options "-save-temps -O0" } */
7867+/* { dg-add-options arm_neon } */
7868
7869 #include "arm_neon.h"
7870
7871Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
7872===================================================================
7873--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
7874+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
7875@@ -3,7 +3,8 @@
7876
7877 /* { dg-do assemble } */
7878 /* { dg-require-effective-target arm_neon_ok } */
7879-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7880+/* { dg-options "-save-temps -O0" } */
7881+/* { dg-add-options arm_neon } */
7882
7883 #include "arm_neon.h"
7884
7885Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
7886===================================================================
7887--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
7888+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
7889@@ -3,7 +3,8 @@
7890
7891 /* { dg-do assemble } */
7892 /* { dg-require-effective-target arm_neon_ok } */
7893-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7894+/* { dg-options "-save-temps -O0" } */
7895+/* { dg-add-options arm_neon } */
7896
7897 #include "arm_neon.h"
7898
7899Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
7900===================================================================
7901--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
7902+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
7903@@ -3,7 +3,8 @@
7904
7905 /* { dg-do assemble } */
7906 /* { dg-require-effective-target arm_neon_ok } */
7907-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7908+/* { dg-options "-save-temps -O0" } */
7909+/* { dg-add-options arm_neon } */
7910
7911 #include "arm_neon.h"
7912
7913Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
7914===================================================================
7915--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
7916+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
7917@@ -3,7 +3,8 @@
7918
7919 /* { dg-do assemble } */
7920 /* { dg-require-effective-target arm_neon_ok } */
7921-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7922+/* { dg-options "-save-temps -O0" } */
7923+/* { dg-add-options arm_neon } */
7924
7925 #include "arm_neon.h"
7926
7927Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
7928===================================================================
7929--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
7930+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
7931@@ -3,7 +3,8 @@
7932
7933 /* { dg-do assemble } */
7934 /* { dg-require-effective-target arm_neon_ok } */
7935-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7936+/* { dg-options "-save-temps -O0" } */
7937+/* { dg-add-options arm_neon } */
7938
7939 #include "arm_neon.h"
7940
7941Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
7942===================================================================
7943--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
7944+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
7945@@ -3,7 +3,8 @@
7946
7947 /* { dg-do assemble } */
7948 /* { dg-require-effective-target arm_neon_ok } */
7949-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7950+/* { dg-options "-save-temps -O0" } */
7951+/* { dg-add-options arm_neon } */
7952
7953 #include "arm_neon.h"
7954
7955Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
7956===================================================================
7957--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
7958+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
7959@@ -3,7 +3,8 @@
7960
7961 /* { dg-do assemble } */
7962 /* { dg-require-effective-target arm_neon_ok } */
7963-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7964+/* { dg-options "-save-temps -O0" } */
7965+/* { dg-add-options arm_neon } */
7966
7967 #include "arm_neon.h"
7968
7969Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
7970===================================================================
7971--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
7972+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
7973@@ -3,7 +3,8 @@
7974
7975 /* { dg-do assemble } */
7976 /* { dg-require-effective-target arm_neon_ok } */
7977-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7978+/* { dg-options "-save-temps -O0" } */
7979+/* { dg-add-options arm_neon } */
7980
7981 #include "arm_neon.h"
7982
7983Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
7984===================================================================
7985--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
7986+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
7987@@ -3,7 +3,8 @@
7988
7989 /* { dg-do assemble } */
7990 /* { dg-require-effective-target arm_neon_ok } */
7991-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
7992+/* { dg-options "-save-temps -O0" } */
7993+/* { dg-add-options arm_neon } */
7994
7995 #include "arm_neon.h"
7996
7997Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
7998===================================================================
7999--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
8000+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
8001@@ -3,7 +3,8 @@
8002
8003 /* { dg-do assemble } */
8004 /* { dg-require-effective-target arm_neon_ok } */
8005-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8006+/* { dg-options "-save-temps -O0" } */
8007+/* { dg-add-options arm_neon } */
8008
8009 #include "arm_neon.h"
8010
8011Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
8012===================================================================
8013--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
8014+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
8015@@ -3,7 +3,8 @@
8016
8017 /* { dg-do assemble } */
8018 /* { dg-require-effective-target arm_neon_ok } */
8019-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8020+/* { dg-options "-save-temps -O0" } */
8021+/* { dg-add-options arm_neon } */
8022
8023 #include "arm_neon.h"
8024
8025Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
8026===================================================================
8027--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
8028+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
8029@@ -3,7 +3,8 @@
8030
8031 /* { dg-do assemble } */
8032 /* { dg-require-effective-target arm_neon_ok } */
8033-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8034+/* { dg-options "-save-temps -O0" } */
8035+/* { dg-add-options arm_neon } */
8036
8037 #include "arm_neon.h"
8038
8039Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
8040===================================================================
8041--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
8042+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
8043@@ -3,7 +3,8 @@
8044
8045 /* { dg-do assemble } */
8046 /* { dg-require-effective-target arm_neon_ok } */
8047-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8048+/* { dg-options "-save-temps -O0" } */
8049+/* { dg-add-options arm_neon } */
8050
8051 #include "arm_neon.h"
8052
8053Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
8054===================================================================
8055--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
8056+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
8057@@ -3,7 +3,8 @@
8058
8059 /* { dg-do assemble } */
8060 /* { dg-require-effective-target arm_neon_ok } */
8061-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8062+/* { dg-options "-save-temps -O0" } */
8063+/* { dg-add-options arm_neon } */
8064
8065 #include "arm_neon.h"
8066
8067Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
8068===================================================================
8069--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
8070+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
8071@@ -3,7 +3,8 @@
8072
8073 /* { dg-do assemble } */
8074 /* { dg-require-effective-target arm_neon_ok } */
8075-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8076+/* { dg-options "-save-temps -O0" } */
8077+/* { dg-add-options arm_neon } */
8078
8079 #include "arm_neon.h"
8080
8081Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
8082===================================================================
8083--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
8084+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
8085@@ -3,7 +3,8 @@
8086
8087 /* { dg-do assemble } */
8088 /* { dg-require-effective-target arm_neon_ok } */
8089-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8090+/* { dg-options "-save-temps -O0" } */
8091+/* { dg-add-options arm_neon } */
8092
8093 #include "arm_neon.h"
8094
8095Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
8096===================================================================
8097--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
8098+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
8099@@ -3,7 +3,8 @@
8100
8101 /* { dg-do assemble } */
8102 /* { dg-require-effective-target arm_neon_ok } */
8103-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8104+/* { dg-options "-save-temps -O0" } */
8105+/* { dg-add-options arm_neon } */
8106
8107 #include "arm_neon.h"
8108
8109Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
8110===================================================================
8111--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
8112+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
8113@@ -3,7 +3,8 @@
8114
8115 /* { dg-do assemble } */
8116 /* { dg-require-effective-target arm_neon_ok } */
8117-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8118+/* { dg-options "-save-temps -O0" } */
8119+/* { dg-add-options arm_neon } */
8120
8121 #include "arm_neon.h"
8122
8123Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
8124===================================================================
8125--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
8126+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
8127@@ -3,7 +3,8 @@
8128
8129 /* { dg-do assemble } */
8130 /* { dg-require-effective-target arm_neon_ok } */
8131-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8132+/* { dg-options "-save-temps -O0" } */
8133+/* { dg-add-options arm_neon } */
8134
8135 #include "arm_neon.h"
8136
8137Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
8138===================================================================
8139--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
8140+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
8141@@ -3,7 +3,8 @@
8142
8143 /* { dg-do assemble } */
8144 /* { dg-require-effective-target arm_neon_ok } */
8145-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8146+/* { dg-options "-save-temps -O0" } */
8147+/* { dg-add-options arm_neon } */
8148
8149 #include "arm_neon.h"
8150
8151Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
8152===================================================================
8153--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
8154+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
8155@@ -3,7 +3,8 @@
8156
8157 /* { dg-do assemble } */
8158 /* { dg-require-effective-target arm_neon_ok } */
8159-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8160+/* { dg-options "-save-temps -O0" } */
8161+/* { dg-add-options arm_neon } */
8162
8163 #include "arm_neon.h"
8164
8165Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
8166===================================================================
8167--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
8168+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
8169@@ -3,7 +3,8 @@
8170
8171 /* { dg-do assemble } */
8172 /* { dg-require-effective-target arm_neon_ok } */
8173-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8174+/* { dg-options "-save-temps -O0" } */
8175+/* { dg-add-options arm_neon } */
8176
8177 #include "arm_neon.h"
8178
8179Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
8180===================================================================
8181--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
8182+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
8183@@ -3,7 +3,8 @@
8184
8185 /* { dg-do assemble } */
8186 /* { dg-require-effective-target arm_neon_ok } */
8187-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8188+/* { dg-options "-save-temps -O0" } */
8189+/* { dg-add-options arm_neon } */
8190
8191 #include "arm_neon.h"
8192
8193Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
8194===================================================================
8195--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
8196+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
8197@@ -3,7 +3,8 @@
8198
8199 /* { dg-do assemble } */
8200 /* { dg-require-effective-target arm_neon_ok } */
8201-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8202+/* { dg-options "-save-temps -O0" } */
8203+/* { dg-add-options arm_neon } */
8204
8205 #include "arm_neon.h"
8206
8207Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
8208===================================================================
8209--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
8210+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
8211@@ -3,7 +3,8 @@
8212
8213 /* { dg-do assemble } */
8214 /* { dg-require-effective-target arm_neon_ok } */
8215-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8216+/* { dg-options "-save-temps -O0" } */
8217+/* { dg-add-options arm_neon } */
8218
8219 #include "arm_neon.h"
8220
8221Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
8222===================================================================
8223--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
8224+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
8225@@ -3,7 +3,8 @@
8226
8227 /* { dg-do assemble } */
8228 /* { dg-require-effective-target arm_neon_ok } */
8229-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8230+/* { dg-options "-save-temps -O0" } */
8231+/* { dg-add-options arm_neon } */
8232
8233 #include "arm_neon.h"
8234
8235Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
8236===================================================================
8237--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
8238+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
8239@@ -3,7 +3,8 @@
8240
8241 /* { dg-do assemble } */
8242 /* { dg-require-effective-target arm_neon_ok } */
8243-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8244+/* { dg-options "-save-temps -O0" } */
8245+/* { dg-add-options arm_neon } */
8246
8247 #include "arm_neon.h"
8248
8249Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
8250===================================================================
8251--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
8252+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
8253@@ -3,7 +3,8 @@
8254
8255 /* { dg-do assemble } */
8256 /* { dg-require-effective-target arm_neon_ok } */
8257-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8258+/* { dg-options "-save-temps -O0" } */
8259+/* { dg-add-options arm_neon } */
8260
8261 #include "arm_neon.h"
8262
8263Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
8264===================================================================
8265--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
8266+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
8267@@ -3,7 +3,8 @@
8268
8269 /* { dg-do assemble } */
8270 /* { dg-require-effective-target arm_neon_ok } */
8271-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8272+/* { dg-options "-save-temps -O0" } */
8273+/* { dg-add-options arm_neon } */
8274
8275 #include "arm_neon.h"
8276
8277Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
8278===================================================================
8279--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
8280+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
8281@@ -3,7 +3,8 @@
8282
8283 /* { dg-do assemble } */
8284 /* { dg-require-effective-target arm_neon_ok } */
8285-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8286+/* { dg-options "-save-temps -O0" } */
8287+/* { dg-add-options arm_neon } */
8288
8289 #include "arm_neon.h"
8290
8291Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
8292===================================================================
8293--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
8294+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
8295@@ -3,7 +3,8 @@
8296
8297 /* { dg-do assemble } */
8298 /* { dg-require-effective-target arm_neon_ok } */
8299-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8300+/* { dg-options "-save-temps -O0" } */
8301+/* { dg-add-options arm_neon } */
8302
8303 #include "arm_neon.h"
8304
8305Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
8306===================================================================
8307--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
8308+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
8309@@ -3,7 +3,8 @@
8310
8311 /* { dg-do assemble } */
8312 /* { dg-require-effective-target arm_neon_ok } */
8313-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8314+/* { dg-options "-save-temps -O0" } */
8315+/* { dg-add-options arm_neon } */
8316
8317 #include "arm_neon.h"
8318
8319Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
8320===================================================================
8321--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
8322+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
8323@@ -3,7 +3,8 @@
8324
8325 /* { dg-do assemble } */
8326 /* { dg-require-effective-target arm_neon_ok } */
8327-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8328+/* { dg-options "-save-temps -O0" } */
8329+/* { dg-add-options arm_neon } */
8330
8331 #include "arm_neon.h"
8332
8333Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
8334===================================================================
8335--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
8336+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
8337@@ -3,7 +3,8 @@
8338
8339 /* { dg-do assemble } */
8340 /* { dg-require-effective-target arm_neon_ok } */
8341-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8342+/* { dg-options "-save-temps -O0" } */
8343+/* { dg-add-options arm_neon } */
8344
8345 #include "arm_neon.h"
8346
8347Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
8348===================================================================
8349--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
8350+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
8351@@ -3,7 +3,8 @@
8352
8353 /* { dg-do assemble } */
8354 /* { dg-require-effective-target arm_neon_ok } */
8355-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8356+/* { dg-options "-save-temps -O0" } */
8357+/* { dg-add-options arm_neon } */
8358
8359 #include "arm_neon.h"
8360
8361Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
8362===================================================================
8363--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
8364+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
8365@@ -3,7 +3,8 @@
8366
8367 /* { dg-do assemble } */
8368 /* { dg-require-effective-target arm_neon_ok } */
8369-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8370+/* { dg-options "-save-temps -O0" } */
8371+/* { dg-add-options arm_neon } */
8372
8373 #include "arm_neon.h"
8374
8375Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
8376===================================================================
8377--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
8378+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
8379@@ -3,7 +3,8 @@
8380
8381 /* { dg-do assemble } */
8382 /* { dg-require-effective-target arm_neon_ok } */
8383-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8384+/* { dg-options "-save-temps -O0" } */
8385+/* { dg-add-options arm_neon } */
8386
8387 #include "arm_neon.h"
8388
8389Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
8390===================================================================
8391--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
8392+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
8393@@ -3,7 +3,8 @@
8394
8395 /* { dg-do assemble } */
8396 /* { dg-require-effective-target arm_neon_ok } */
8397-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8398+/* { dg-options "-save-temps -O0" } */
8399+/* { dg-add-options arm_neon } */
8400
8401 #include "arm_neon.h"
8402
8403Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
8404===================================================================
8405--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
8406+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
8407@@ -3,7 +3,8 @@
8408
8409 /* { dg-do assemble } */
8410 /* { dg-require-effective-target arm_neon_ok } */
8411-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8412+/* { dg-options "-save-temps -O0" } */
8413+/* { dg-add-options arm_neon } */
8414
8415 #include "arm_neon.h"
8416
8417Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
8418===================================================================
8419--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
8420+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
8421@@ -3,7 +3,8 @@
8422
8423 /* { dg-do assemble } */
8424 /* { dg-require-effective-target arm_neon_ok } */
8425-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8426+/* { dg-options "-save-temps -O0" } */
8427+/* { dg-add-options arm_neon } */
8428
8429 #include "arm_neon.h"
8430
8431Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
8432===================================================================
8433--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
8434+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
8435@@ -3,7 +3,8 @@
8436
8437 /* { dg-do assemble } */
8438 /* { dg-require-effective-target arm_neon_ok } */
8439-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8440+/* { dg-options "-save-temps -O0" } */
8441+/* { dg-add-options arm_neon } */
8442
8443 #include "arm_neon.h"
8444
8445Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
8446===================================================================
8447--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
8448+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
8449@@ -3,7 +3,8 @@
8450
8451 /* { dg-do assemble } */
8452 /* { dg-require-effective-target arm_neon_ok } */
8453-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8454+/* { dg-options "-save-temps -O0" } */
8455+/* { dg-add-options arm_neon } */
8456
8457 #include "arm_neon.h"
8458
8459Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
8460===================================================================
8461--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
8462+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
8463@@ -3,7 +3,8 @@
8464
8465 /* { dg-do assemble } */
8466 /* { dg-require-effective-target arm_neon_ok } */
8467-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8468+/* { dg-options "-save-temps -O0" } */
8469+/* { dg-add-options arm_neon } */
8470
8471 #include "arm_neon.h"
8472
8473Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
8474===================================================================
8475--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
8476+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
8477@@ -3,7 +3,8 @@
8478
8479 /* { dg-do assemble } */
8480 /* { dg-require-effective-target arm_neon_ok } */
8481-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8482+/* { dg-options "-save-temps -O0" } */
8483+/* { dg-add-options arm_neon } */
8484
8485 #include "arm_neon.h"
8486
8487Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
8488===================================================================
8489--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
8490+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
8491@@ -3,7 +3,8 @@
8492
8493 /* { dg-do assemble } */
8494 /* { dg-require-effective-target arm_neon_ok } */
8495-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8496+/* { dg-options "-save-temps -O0" } */
8497+/* { dg-add-options arm_neon } */
8498
8499 #include "arm_neon.h"
8500
8501Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
8502===================================================================
8503--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
8504+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
8505@@ -3,7 +3,8 @@
8506
8507 /* { dg-do assemble } */
8508 /* { dg-require-effective-target arm_neon_ok } */
8509-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8510+/* { dg-options "-save-temps -O0" } */
8511+/* { dg-add-options arm_neon } */
8512
8513 #include "arm_neon.h"
8514
8515Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
8516===================================================================
8517--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
8518+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
8519@@ -3,7 +3,8 @@
8520
8521 /* { dg-do assemble } */
8522 /* { dg-require-effective-target arm_neon_ok } */
8523-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8524+/* { dg-options "-save-temps -O0" } */
8525+/* { dg-add-options arm_neon } */
8526
8527 #include "arm_neon.h"
8528
8529Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
8530===================================================================
8531--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
8532+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
8533@@ -3,7 +3,8 @@
8534
8535 /* { dg-do assemble } */
8536 /* { dg-require-effective-target arm_neon_ok } */
8537-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8538+/* { dg-options "-save-temps -O0" } */
8539+/* { dg-add-options arm_neon } */
8540
8541 #include "arm_neon.h"
8542
8543Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
8544===================================================================
8545--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
8546+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
8547@@ -3,7 +3,8 @@
8548
8549 /* { dg-do assemble } */
8550 /* { dg-require-effective-target arm_neon_ok } */
8551-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8552+/* { dg-options "-save-temps -O0" } */
8553+/* { dg-add-options arm_neon } */
8554
8555 #include "arm_neon.h"
8556
8557Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
8558===================================================================
8559--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
8560+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
8561@@ -3,7 +3,8 @@
8562
8563 /* { dg-do assemble } */
8564 /* { dg-require-effective-target arm_neon_ok } */
8565-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8566+/* { dg-options "-save-temps -O0" } */
8567+/* { dg-add-options arm_neon } */
8568
8569 #include "arm_neon.h"
8570
8571Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
8572===================================================================
8573--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
8574+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
8575@@ -3,7 +3,8 @@
8576
8577 /* { dg-do assemble } */
8578 /* { dg-require-effective-target arm_neon_ok } */
8579-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8580+/* { dg-options "-save-temps -O0" } */
8581+/* { dg-add-options arm_neon } */
8582
8583 #include "arm_neon.h"
8584
8585Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
8586===================================================================
8587--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
8588+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
8589@@ -3,7 +3,8 @@
8590
8591 /* { dg-do assemble } */
8592 /* { dg-require-effective-target arm_neon_ok } */
8593-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8594+/* { dg-options "-save-temps -O0" } */
8595+/* { dg-add-options arm_neon } */
8596
8597 #include "arm_neon.h"
8598
8599Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
8600===================================================================
8601--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
8602+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
8603@@ -3,7 +3,8 @@
8604
8605 /* { dg-do assemble } */
8606 /* { dg-require-effective-target arm_neon_ok } */
8607-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8608+/* { dg-options "-save-temps -O0" } */
8609+/* { dg-add-options arm_neon } */
8610
8611 #include "arm_neon.h"
8612
8613Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
8614===================================================================
8615--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
8616+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
8617@@ -3,7 +3,8 @@
8618
8619 /* { dg-do assemble } */
8620 /* { dg-require-effective-target arm_neon_ok } */
8621-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8622+/* { dg-options "-save-temps -O0" } */
8623+/* { dg-add-options arm_neon } */
8624
8625 #include "arm_neon.h"
8626
8627Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
8628===================================================================
8629--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
8630+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
8631@@ -3,7 +3,8 @@
8632
8633 /* { dg-do assemble } */
8634 /* { dg-require-effective-target arm_neon_ok } */
8635-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8636+/* { dg-options "-save-temps -O0" } */
8637+/* { dg-add-options arm_neon } */
8638
8639 #include "arm_neon.h"
8640
8641Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
8642===================================================================
8643--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
8644+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
8645@@ -3,7 +3,8 @@
8646
8647 /* { dg-do assemble } */
8648 /* { dg-require-effective-target arm_neon_ok } */
8649-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8650+/* { dg-options "-save-temps -O0" } */
8651+/* { dg-add-options arm_neon } */
8652
8653 #include "arm_neon.h"
8654
8655Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
8656===================================================================
8657--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
8658+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
8659@@ -3,7 +3,8 @@
8660
8661 /* { dg-do assemble } */
8662 /* { dg-require-effective-target arm_neon_ok } */
8663-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8664+/* { dg-options "-save-temps -O0" } */
8665+/* { dg-add-options arm_neon } */
8666
8667 #include "arm_neon.h"
8668
8669Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
8670===================================================================
8671--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
8672+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
8673@@ -3,7 +3,8 @@
8674
8675 /* { dg-do assemble } */
8676 /* { dg-require-effective-target arm_neon_ok } */
8677-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8678+/* { dg-options "-save-temps -O0" } */
8679+/* { dg-add-options arm_neon } */
8680
8681 #include "arm_neon.h"
8682
8683Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
8684===================================================================
8685--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
8686+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
8687@@ -3,7 +3,8 @@
8688
8689 /* { dg-do assemble } */
8690 /* { dg-require-effective-target arm_neon_ok } */
8691-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8692+/* { dg-options "-save-temps -O0" } */
8693+/* { dg-add-options arm_neon } */
8694
8695 #include "arm_neon.h"
8696
8697Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
8698===================================================================
8699--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
8700+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
8701@@ -3,7 +3,8 @@
8702
8703 /* { dg-do assemble } */
8704 /* { dg-require-effective-target arm_neon_ok } */
8705-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8706+/* { dg-options "-save-temps -O0" } */
8707+/* { dg-add-options arm_neon } */
8708
8709 #include "arm_neon.h"
8710
8711Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
8712===================================================================
8713--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
8714+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
8715@@ -3,7 +3,8 @@
8716
8717 /* { dg-do assemble } */
8718 /* { dg-require-effective-target arm_neon_ok } */
8719-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8720+/* { dg-options "-save-temps -O0" } */
8721+/* { dg-add-options arm_neon } */
8722
8723 #include "arm_neon.h"
8724
8725Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
8726===================================================================
8727--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
8728+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
8729@@ -3,7 +3,8 @@
8730
8731 /* { dg-do assemble } */
8732 /* { dg-require-effective-target arm_neon_ok } */
8733-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8734+/* { dg-options "-save-temps -O0" } */
8735+/* { dg-add-options arm_neon } */
8736
8737 #include "arm_neon.h"
8738
8739Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
8740===================================================================
8741--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
8742+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
8743@@ -3,7 +3,8 @@
8744
8745 /* { dg-do assemble } */
8746 /* { dg-require-effective-target arm_neon_ok } */
8747-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8748+/* { dg-options "-save-temps -O0" } */
8749+/* { dg-add-options arm_neon } */
8750
8751 #include "arm_neon.h"
8752
8753Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
8754===================================================================
8755--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
8756+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
8757@@ -3,7 +3,8 @@
8758
8759 /* { dg-do assemble } */
8760 /* { dg-require-effective-target arm_neon_ok } */
8761-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8762+/* { dg-options "-save-temps -O0" } */
8763+/* { dg-add-options arm_neon } */
8764
8765 #include "arm_neon.h"
8766
8767Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
8768===================================================================
8769--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
8770+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
8771@@ -3,7 +3,8 @@
8772
8773 /* { dg-do assemble } */
8774 /* { dg-require-effective-target arm_neon_ok } */
8775-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8776+/* { dg-options "-save-temps -O0" } */
8777+/* { dg-add-options arm_neon } */
8778
8779 #include "arm_neon.h"
8780
8781Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
8782===================================================================
8783--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
8784+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
8785@@ -3,7 +3,8 @@
8786
8787 /* { dg-do assemble } */
8788 /* { dg-require-effective-target arm_neon_ok } */
8789-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8790+/* { dg-options "-save-temps -O0" } */
8791+/* { dg-add-options arm_neon } */
8792
8793 #include "arm_neon.h"
8794
8795Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
8796===================================================================
8797--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
8798+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
8799@@ -3,7 +3,8 @@
8800
8801 /* { dg-do assemble } */
8802 /* { dg-require-effective-target arm_neon_ok } */
8803-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8804+/* { dg-options "-save-temps -O0" } */
8805+/* { dg-add-options arm_neon } */
8806
8807 #include "arm_neon.h"
8808
8809Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
8810===================================================================
8811--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
8812+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
8813@@ -3,7 +3,8 @@
8814
8815 /* { dg-do assemble } */
8816 /* { dg-require-effective-target arm_neon_ok } */
8817-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8818+/* { dg-options "-save-temps -O0" } */
8819+/* { dg-add-options arm_neon } */
8820
8821 #include "arm_neon.h"
8822
8823Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
8824===================================================================
8825--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
8826+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
8827@@ -3,7 +3,8 @@
8828
8829 /* { dg-do assemble } */
8830 /* { dg-require-effective-target arm_neon_ok } */
8831-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8832+/* { dg-options "-save-temps -O0" } */
8833+/* { dg-add-options arm_neon } */
8834
8835 #include "arm_neon.h"
8836
8837Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
8838===================================================================
8839--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
8840+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
8841@@ -3,7 +3,8 @@
8842
8843 /* { dg-do assemble } */
8844 /* { dg-require-effective-target arm_neon_ok } */
8845-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8846+/* { dg-options "-save-temps -O0" } */
8847+/* { dg-add-options arm_neon } */
8848
8849 #include "arm_neon.h"
8850
8851Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
8852===================================================================
8853--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
8854+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
8855@@ -3,7 +3,8 @@
8856
8857 /* { dg-do assemble } */
8858 /* { dg-require-effective-target arm_neon_ok } */
8859-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8860+/* { dg-options "-save-temps -O0" } */
8861+/* { dg-add-options arm_neon } */
8862
8863 #include "arm_neon.h"
8864
8865Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
8866===================================================================
8867--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
8868+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
8869@@ -3,7 +3,8 @@
8870
8871 /* { dg-do assemble } */
8872 /* { dg-require-effective-target arm_neon_ok } */
8873-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8874+/* { dg-options "-save-temps -O0" } */
8875+/* { dg-add-options arm_neon } */
8876
8877 #include "arm_neon.h"
8878
8879Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
8880===================================================================
8881--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
8882+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
8883@@ -3,7 +3,8 @@
8884
8885 /* { dg-do assemble } */
8886 /* { dg-require-effective-target arm_neon_ok } */
8887-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8888+/* { dg-options "-save-temps -O0" } */
8889+/* { dg-add-options arm_neon } */
8890
8891 #include "arm_neon.h"
8892
8893Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
8894===================================================================
8895--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
8896+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
8897@@ -3,7 +3,8 @@
8898
8899 /* { dg-do assemble } */
8900 /* { dg-require-effective-target arm_neon_ok } */
8901-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8902+/* { dg-options "-save-temps -O0" } */
8903+/* { dg-add-options arm_neon } */
8904
8905 #include "arm_neon.h"
8906
8907Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
8908===================================================================
8909--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
8910+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
8911@@ -3,7 +3,8 @@
8912
8913 /* { dg-do assemble } */
8914 /* { dg-require-effective-target arm_neon_ok } */
8915-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8916+/* { dg-options "-save-temps -O0" } */
8917+/* { dg-add-options arm_neon } */
8918
8919 #include "arm_neon.h"
8920
8921Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
8922===================================================================
8923--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
8924+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
8925@@ -3,7 +3,8 @@
8926
8927 /* { dg-do assemble } */
8928 /* { dg-require-effective-target arm_neon_ok } */
8929-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8930+/* { dg-options "-save-temps -O0" } */
8931+/* { dg-add-options arm_neon } */
8932
8933 #include "arm_neon.h"
8934
8935Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
8936===================================================================
8937--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
8938+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
8939@@ -3,7 +3,8 @@
8940
8941 /* { dg-do assemble } */
8942 /* { dg-require-effective-target arm_neon_ok } */
8943-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8944+/* { dg-options "-save-temps -O0" } */
8945+/* { dg-add-options arm_neon } */
8946
8947 #include "arm_neon.h"
8948
8949Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
8950===================================================================
8951--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
8952+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
8953@@ -3,7 +3,8 @@
8954
8955 /* { dg-do assemble } */
8956 /* { dg-require-effective-target arm_neon_ok } */
8957-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8958+/* { dg-options "-save-temps -O0" } */
8959+/* { dg-add-options arm_neon } */
8960
8961 #include "arm_neon.h"
8962
8963Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
8964===================================================================
8965--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
8966+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
8967@@ -3,7 +3,8 @@
8968
8969 /* { dg-do assemble } */
8970 /* { dg-require-effective-target arm_neon_ok } */
8971-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8972+/* { dg-options "-save-temps -O0" } */
8973+/* { dg-add-options arm_neon } */
8974
8975 #include "arm_neon.h"
8976
8977Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
8978===================================================================
8979--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
8980+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
8981@@ -3,7 +3,8 @@
8982
8983 /* { dg-do assemble } */
8984 /* { dg-require-effective-target arm_neon_ok } */
8985-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
8986+/* { dg-options "-save-temps -O0" } */
8987+/* { dg-add-options arm_neon } */
8988
8989 #include "arm_neon.h"
8990
8991Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
8992===================================================================
8993--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
8994+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
8995@@ -3,7 +3,8 @@
8996
8997 /* { dg-do assemble } */
8998 /* { dg-require-effective-target arm_neon_ok } */
8999-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9000+/* { dg-options "-save-temps -O0" } */
9001+/* { dg-add-options arm_neon } */
9002
9003 #include "arm_neon.h"
9004
9005Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
9006===================================================================
9007--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
9008+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
9009@@ -3,7 +3,8 @@
9010
9011 /* { dg-do assemble } */
9012 /* { dg-require-effective-target arm_neon_ok } */
9013-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9014+/* { dg-options "-save-temps -O0" } */
9015+/* { dg-add-options arm_neon } */
9016
9017 #include "arm_neon.h"
9018
9019Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
9020===================================================================
9021--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
9022+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
9023@@ -3,7 +3,8 @@
9024
9025 /* { dg-do assemble } */
9026 /* { dg-require-effective-target arm_neon_ok } */
9027-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9028+/* { dg-options "-save-temps -O0" } */
9029+/* { dg-add-options arm_neon } */
9030
9031 #include "arm_neon.h"
9032
9033Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
9034===================================================================
9035--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
9036+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
9037@@ -3,7 +3,8 @@
9038
9039 /* { dg-do assemble } */
9040 /* { dg-require-effective-target arm_neon_ok } */
9041-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9042+/* { dg-options "-save-temps -O0" } */
9043+/* { dg-add-options arm_neon } */
9044
9045 #include "arm_neon.h"
9046
9047Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
9048===================================================================
9049--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
9050+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
9051@@ -3,7 +3,8 @@
9052
9053 /* { dg-do assemble } */
9054 /* { dg-require-effective-target arm_neon_ok } */
9055-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9056+/* { dg-options "-save-temps -O0" } */
9057+/* { dg-add-options arm_neon } */
9058
9059 #include "arm_neon.h"
9060
9061Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
9062===================================================================
9063--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
9064+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
9065@@ -3,7 +3,8 @@
9066
9067 /* { dg-do assemble } */
9068 /* { dg-require-effective-target arm_neon_ok } */
9069-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9070+/* { dg-options "-save-temps -O0" } */
9071+/* { dg-add-options arm_neon } */
9072
9073 #include "arm_neon.h"
9074
9075Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
9076===================================================================
9077--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
9078+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
9079@@ -3,7 +3,8 @@
9080
9081 /* { dg-do assemble } */
9082 /* { dg-require-effective-target arm_neon_ok } */
9083-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9084+/* { dg-options "-save-temps -O0" } */
9085+/* { dg-add-options arm_neon } */
9086
9087 #include "arm_neon.h"
9088
9089Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
9090===================================================================
9091--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
9092+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
9093@@ -3,7 +3,8 @@
9094
9095 /* { dg-do assemble } */
9096 /* { dg-require-effective-target arm_neon_ok } */
9097-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9098+/* { dg-options "-save-temps -O0" } */
9099+/* { dg-add-options arm_neon } */
9100
9101 #include "arm_neon.h"
9102
9103Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
9104===================================================================
9105--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
9106+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
9107@@ -3,7 +3,8 @@
9108
9109 /* { dg-do assemble } */
9110 /* { dg-require-effective-target arm_neon_ok } */
9111-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9112+/* { dg-options "-save-temps -O0" } */
9113+/* { dg-add-options arm_neon } */
9114
9115 #include "arm_neon.h"
9116
9117Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
9118===================================================================
9119--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
9120+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
9121@@ -3,7 +3,8 @@
9122
9123 /* { dg-do assemble } */
9124 /* { dg-require-effective-target arm_neon_ok } */
9125-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9126+/* { dg-options "-save-temps -O0" } */
9127+/* { dg-add-options arm_neon } */
9128
9129 #include "arm_neon.h"
9130
9131Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
9132===================================================================
9133--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
9134+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
9135@@ -3,7 +3,8 @@
9136
9137 /* { dg-do assemble } */
9138 /* { dg-require-effective-target arm_neon_ok } */
9139-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9140+/* { dg-options "-save-temps -O0" } */
9141+/* { dg-add-options arm_neon } */
9142
9143 #include "arm_neon.h"
9144
9145Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
9146===================================================================
9147--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
9148+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
9149@@ -3,7 +3,8 @@
9150
9151 /* { dg-do assemble } */
9152 /* { dg-require-effective-target arm_neon_ok } */
9153-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9154+/* { dg-options "-save-temps -O0" } */
9155+/* { dg-add-options arm_neon } */
9156
9157 #include "arm_neon.h"
9158
9159Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
9160===================================================================
9161--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
9162+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
9163@@ -3,7 +3,8 @@
9164
9165 /* { dg-do assemble } */
9166 /* { dg-require-effective-target arm_neon_ok } */
9167-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9168+/* { dg-options "-save-temps -O0" } */
9169+/* { dg-add-options arm_neon } */
9170
9171 #include "arm_neon.h"
9172
9173Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
9174===================================================================
9175--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
9176+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
9177@@ -3,7 +3,8 @@
9178
9179 /* { dg-do assemble } */
9180 /* { dg-require-effective-target arm_neon_ok } */
9181-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9182+/* { dg-options "-save-temps -O0" } */
9183+/* { dg-add-options arm_neon } */
9184
9185 #include "arm_neon.h"
9186
9187Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
9188===================================================================
9189--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
9190+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
9191@@ -3,7 +3,8 @@
9192
9193 /* { dg-do assemble } */
9194 /* { dg-require-effective-target arm_neon_ok } */
9195-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9196+/* { dg-options "-save-temps -O0" } */
9197+/* { dg-add-options arm_neon } */
9198
9199 #include "arm_neon.h"
9200
9201Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
9202===================================================================
9203--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
9204+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
9205@@ -3,7 +3,8 @@
9206
9207 /* { dg-do assemble } */
9208 /* { dg-require-effective-target arm_neon_ok } */
9209-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9210+/* { dg-options "-save-temps -O0" } */
9211+/* { dg-add-options arm_neon } */
9212
9213 #include "arm_neon.h"
9214
9215Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
9216===================================================================
9217--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
9218+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
9219@@ -3,7 +3,8 @@
9220
9221 /* { dg-do assemble } */
9222 /* { dg-require-effective-target arm_neon_ok } */
9223-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9224+/* { dg-options "-save-temps -O0" } */
9225+/* { dg-add-options arm_neon } */
9226
9227 #include "arm_neon.h"
9228
9229Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
9230===================================================================
9231--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
9232+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
9233@@ -3,7 +3,8 @@
9234
9235 /* { dg-do assemble } */
9236 /* { dg-require-effective-target arm_neon_ok } */
9237-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9238+/* { dg-options "-save-temps -O0" } */
9239+/* { dg-add-options arm_neon } */
9240
9241 #include "arm_neon.h"
9242
9243Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
9244===================================================================
9245--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
9246+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
9247@@ -3,7 +3,8 @@
9248
9249 /* { dg-do assemble } */
9250 /* { dg-require-effective-target arm_neon_ok } */
9251-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9252+/* { dg-options "-save-temps -O0" } */
9253+/* { dg-add-options arm_neon } */
9254
9255 #include "arm_neon.h"
9256
9257Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
9258===================================================================
9259--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
9260+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
9261@@ -3,7 +3,8 @@
9262
9263 /* { dg-do assemble } */
9264 /* { dg-require-effective-target arm_neon_ok } */
9265-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9266+/* { dg-options "-save-temps -O0" } */
9267+/* { dg-add-options arm_neon } */
9268
9269 #include "arm_neon.h"
9270
9271Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
9272===================================================================
9273--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
9274+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
9275@@ -3,7 +3,8 @@
9276
9277 /* { dg-do assemble } */
9278 /* { dg-require-effective-target arm_neon_ok } */
9279-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9280+/* { dg-options "-save-temps -O0" } */
9281+/* { dg-add-options arm_neon } */
9282
9283 #include "arm_neon.h"
9284
9285Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
9286===================================================================
9287--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
9288+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
9289@@ -3,7 +3,8 @@
9290
9291 /* { dg-do assemble } */
9292 /* { dg-require-effective-target arm_neon_ok } */
9293-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9294+/* { dg-options "-save-temps -O0" } */
9295+/* { dg-add-options arm_neon } */
9296
9297 #include "arm_neon.h"
9298
9299Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
9300===================================================================
9301--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
9302+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
9303@@ -3,7 +3,8 @@
9304
9305 /* { dg-do assemble } */
9306 /* { dg-require-effective-target arm_neon_ok } */
9307-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9308+/* { dg-options "-save-temps -O0" } */
9309+/* { dg-add-options arm_neon } */
9310
9311 #include "arm_neon.h"
9312
9313Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
9314===================================================================
9315--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
9316+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
9317@@ -3,7 +3,8 @@
9318
9319 /* { dg-do assemble } */
9320 /* { dg-require-effective-target arm_neon_ok } */
9321-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9322+/* { dg-options "-save-temps -O0" } */
9323+/* { dg-add-options arm_neon } */
9324
9325 #include "arm_neon.h"
9326
9327Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
9328===================================================================
9329--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
9330+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
9331@@ -3,7 +3,8 @@
9332
9333 /* { dg-do assemble } */
9334 /* { dg-require-effective-target arm_neon_ok } */
9335-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9336+/* { dg-options "-save-temps -O0" } */
9337+/* { dg-add-options arm_neon } */
9338
9339 #include "arm_neon.h"
9340
9341Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
9342===================================================================
9343--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
9344+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
9345@@ -3,7 +3,8 @@
9346
9347 /* { dg-do assemble } */
9348 /* { dg-require-effective-target arm_neon_ok } */
9349-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9350+/* { dg-options "-save-temps -O0" } */
9351+/* { dg-add-options arm_neon } */
9352
9353 #include "arm_neon.h"
9354
9355Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
9356===================================================================
9357--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
9358+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
9359@@ -3,7 +3,8 @@
9360
9361 /* { dg-do assemble } */
9362 /* { dg-require-effective-target arm_neon_ok } */
9363-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9364+/* { dg-options "-save-temps -O0" } */
9365+/* { dg-add-options arm_neon } */
9366
9367 #include "arm_neon.h"
9368
9369Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
9370===================================================================
9371--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
9372+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
9373@@ -3,7 +3,8 @@
9374
9375 /* { dg-do assemble } */
9376 /* { dg-require-effective-target arm_neon_ok } */
9377-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9378+/* { dg-options "-save-temps -O0" } */
9379+/* { dg-add-options arm_neon } */
9380
9381 #include "arm_neon.h"
9382
9383Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
9384===================================================================
9385--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
9386+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
9387@@ -3,7 +3,8 @@
9388
9389 /* { dg-do assemble } */
9390 /* { dg-require-effective-target arm_neon_ok } */
9391-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9392+/* { dg-options "-save-temps -O0" } */
9393+/* { dg-add-options arm_neon } */
9394
9395 #include "arm_neon.h"
9396
9397Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
9398===================================================================
9399--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
9400+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
9401@@ -3,7 +3,8 @@
9402
9403 /* { dg-do assemble } */
9404 /* { dg-require-effective-target arm_neon_ok } */
9405-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9406+/* { dg-options "-save-temps -O0" } */
9407+/* { dg-add-options arm_neon } */
9408
9409 #include "arm_neon.h"
9410
9411Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
9412===================================================================
9413--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
9414+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
9415@@ -3,7 +3,8 @@
9416
9417 /* { dg-do assemble } */
9418 /* { dg-require-effective-target arm_neon_ok } */
9419-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9420+/* { dg-options "-save-temps -O0" } */
9421+/* { dg-add-options arm_neon } */
9422
9423 #include "arm_neon.h"
9424
9425Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
9426===================================================================
9427--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
9428+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
9429@@ -3,7 +3,8 @@
9430
9431 /* { dg-do assemble } */
9432 /* { dg-require-effective-target arm_neon_ok } */
9433-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9434+/* { dg-options "-save-temps -O0" } */
9435+/* { dg-add-options arm_neon } */
9436
9437 #include "arm_neon.h"
9438
9439Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
9440===================================================================
9441--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
9442+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
9443@@ -3,7 +3,8 @@
9444
9445 /* { dg-do assemble } */
9446 /* { dg-require-effective-target arm_neon_ok } */
9447-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9448+/* { dg-options "-save-temps -O0" } */
9449+/* { dg-add-options arm_neon } */
9450
9451 #include "arm_neon.h"
9452
9453Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
9454===================================================================
9455--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
9456+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
9457@@ -3,7 +3,8 @@
9458
9459 /* { dg-do assemble } */
9460 /* { dg-require-effective-target arm_neon_ok } */
9461-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9462+/* { dg-options "-save-temps -O0" } */
9463+/* { dg-add-options arm_neon } */
9464
9465 #include "arm_neon.h"
9466
9467Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
9468===================================================================
9469--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
9470+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
9471@@ -3,7 +3,8 @@
9472
9473 /* { dg-do assemble } */
9474 /* { dg-require-effective-target arm_neon_ok } */
9475-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9476+/* { dg-options "-save-temps -O0" } */
9477+/* { dg-add-options arm_neon } */
9478
9479 #include "arm_neon.h"
9480
9481Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
9482===================================================================
9483--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
9484+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
9485@@ -3,7 +3,8 @@
9486
9487 /* { dg-do assemble } */
9488 /* { dg-require-effective-target arm_neon_ok } */
9489-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9490+/* { dg-options "-save-temps -O0" } */
9491+/* { dg-add-options arm_neon } */
9492
9493 #include "arm_neon.h"
9494
9495Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
9496===================================================================
9497--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
9498+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
9499@@ -3,7 +3,8 @@
9500
9501 /* { dg-do assemble } */
9502 /* { dg-require-effective-target arm_neon_ok } */
9503-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9504+/* { dg-options "-save-temps -O0" } */
9505+/* { dg-add-options arm_neon } */
9506
9507 #include "arm_neon.h"
9508
9509Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
9510===================================================================
9511--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
9512+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
9513@@ -3,7 +3,8 @@
9514
9515 /* { dg-do assemble } */
9516 /* { dg-require-effective-target arm_neon_ok } */
9517-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9518+/* { dg-options "-save-temps -O0" } */
9519+/* { dg-add-options arm_neon } */
9520
9521 #include "arm_neon.h"
9522
9523Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
9524===================================================================
9525--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
9526+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
9527@@ -3,7 +3,8 @@
9528
9529 /* { dg-do assemble } */
9530 /* { dg-require-effective-target arm_neon_ok } */
9531-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9532+/* { dg-options "-save-temps -O0" } */
9533+/* { dg-add-options arm_neon } */
9534
9535 #include "arm_neon.h"
9536
9537Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
9538===================================================================
9539--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
9540+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
9541@@ -3,7 +3,8 @@
9542
9543 /* { dg-do assemble } */
9544 /* { dg-require-effective-target arm_neon_ok } */
9545-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9546+/* { dg-options "-save-temps -O0" } */
9547+/* { dg-add-options arm_neon } */
9548
9549 #include "arm_neon.h"
9550
9551Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
9552===================================================================
9553--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
9554+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
9555@@ -3,7 +3,8 @@
9556
9557 /* { dg-do assemble } */
9558 /* { dg-require-effective-target arm_neon_ok } */
9559-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9560+/* { dg-options "-save-temps -O0" } */
9561+/* { dg-add-options arm_neon } */
9562
9563 #include "arm_neon.h"
9564
9565Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
9566===================================================================
9567--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
9568+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
9569@@ -3,7 +3,8 @@
9570
9571 /* { dg-do assemble } */
9572 /* { dg-require-effective-target arm_neon_ok } */
9573-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9574+/* { dg-options "-save-temps -O0" } */
9575+/* { dg-add-options arm_neon } */
9576
9577 #include "arm_neon.h"
9578
9579Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
9580===================================================================
9581--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
9582+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
9583@@ -3,7 +3,8 @@
9584
9585 /* { dg-do assemble } */
9586 /* { dg-require-effective-target arm_neon_ok } */
9587-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9588+/* { dg-options "-save-temps -O0" } */
9589+/* { dg-add-options arm_neon } */
9590
9591 #include "arm_neon.h"
9592
9593Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
9594===================================================================
9595--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
9596+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
9597@@ -3,7 +3,8 @@
9598
9599 /* { dg-do assemble } */
9600 /* { dg-require-effective-target arm_neon_ok } */
9601-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9602+/* { dg-options "-save-temps -O0" } */
9603+/* { dg-add-options arm_neon } */
9604
9605 #include "arm_neon.h"
9606
9607Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
9608===================================================================
9609--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
9610+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
9611@@ -3,7 +3,8 @@
9612
9613 /* { dg-do assemble } */
9614 /* { dg-require-effective-target arm_neon_ok } */
9615-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9616+/* { dg-options "-save-temps -O0" } */
9617+/* { dg-add-options arm_neon } */
9618
9619 #include "arm_neon.h"
9620
9621Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
9622===================================================================
9623--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
9624+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
9625@@ -3,7 +3,8 @@
9626
9627 /* { dg-do assemble } */
9628 /* { dg-require-effective-target arm_neon_ok } */
9629-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9630+/* { dg-options "-save-temps -O0" } */
9631+/* { dg-add-options arm_neon } */
9632
9633 #include "arm_neon.h"
9634
9635Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
9636===================================================================
9637--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
9638+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
9639@@ -3,7 +3,8 @@
9640
9641 /* { dg-do assemble } */
9642 /* { dg-require-effective-target arm_neon_ok } */
9643-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9644+/* { dg-options "-save-temps -O0" } */
9645+/* { dg-add-options arm_neon } */
9646
9647 #include "arm_neon.h"
9648
9649Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
9650===================================================================
9651--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
9652+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
9653@@ -3,7 +3,8 @@
9654
9655 /* { dg-do assemble } */
9656 /* { dg-require-effective-target arm_neon_ok } */
9657-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9658+/* { dg-options "-save-temps -O0" } */
9659+/* { dg-add-options arm_neon } */
9660
9661 #include "arm_neon.h"
9662
9663Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
9664===================================================================
9665--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
9666+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
9667@@ -3,7 +3,8 @@
9668
9669 /* { dg-do assemble } */
9670 /* { dg-require-effective-target arm_neon_ok } */
9671-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9672+/* { dg-options "-save-temps -O0" } */
9673+/* { dg-add-options arm_neon } */
9674
9675 #include "arm_neon.h"
9676
9677Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
9678===================================================================
9679--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
9680+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
9681@@ -3,7 +3,8 @@
9682
9683 /* { dg-do assemble } */
9684 /* { dg-require-effective-target arm_neon_ok } */
9685-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9686+/* { dg-options "-save-temps -O0" } */
9687+/* { dg-add-options arm_neon } */
9688
9689 #include "arm_neon.h"
9690
9691Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
9692===================================================================
9693--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
9694+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
9695@@ -3,7 +3,8 @@
9696
9697 /* { dg-do assemble } */
9698 /* { dg-require-effective-target arm_neon_ok } */
9699-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9700+/* { dg-options "-save-temps -O0" } */
9701+/* { dg-add-options arm_neon } */
9702
9703 #include "arm_neon.h"
9704
9705Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
9706===================================================================
9707--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
9708+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
9709@@ -3,7 +3,8 @@
9710
9711 /* { dg-do assemble } */
9712 /* { dg-require-effective-target arm_neon_ok } */
9713-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9714+/* { dg-options "-save-temps -O0" } */
9715+/* { dg-add-options arm_neon } */
9716
9717 #include "arm_neon.h"
9718
9719Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
9720===================================================================
9721--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
9722+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
9723@@ -3,7 +3,8 @@
9724
9725 /* { dg-do assemble } */
9726 /* { dg-require-effective-target arm_neon_ok } */
9727-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9728+/* { dg-options "-save-temps -O0" } */
9729+/* { dg-add-options arm_neon } */
9730
9731 #include "arm_neon.h"
9732
9733Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
9734===================================================================
9735--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
9736+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
9737@@ -3,7 +3,8 @@
9738
9739 /* { dg-do assemble } */
9740 /* { dg-require-effective-target arm_neon_ok } */
9741-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9742+/* { dg-options "-save-temps -O0" } */
9743+/* { dg-add-options arm_neon } */
9744
9745 #include "arm_neon.h"
9746
9747Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
9748===================================================================
9749--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
9750+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
9751@@ -3,7 +3,8 @@
9752
9753 /* { dg-do assemble } */
9754 /* { dg-require-effective-target arm_neon_ok } */
9755-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9756+/* { dg-options "-save-temps -O0" } */
9757+/* { dg-add-options arm_neon } */
9758
9759 #include "arm_neon.h"
9760
9761Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
9762===================================================================
9763--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
9764+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
9765@@ -3,7 +3,8 @@
9766
9767 /* { dg-do assemble } */
9768 /* { dg-require-effective-target arm_neon_ok } */
9769-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9770+/* { dg-options "-save-temps -O0" } */
9771+/* { dg-add-options arm_neon } */
9772
9773 #include "arm_neon.h"
9774
9775Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
9776===================================================================
9777--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
9778+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
9779@@ -3,7 +3,8 @@
9780
9781 /* { dg-do assemble } */
9782 /* { dg-require-effective-target arm_neon_ok } */
9783-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9784+/* { dg-options "-save-temps -O0" } */
9785+/* { dg-add-options arm_neon } */
9786
9787 #include "arm_neon.h"
9788
9789Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
9790===================================================================
9791--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
9792+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
9793@@ -3,7 +3,8 @@
9794
9795 /* { dg-do assemble } */
9796 /* { dg-require-effective-target arm_neon_ok } */
9797-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9798+/* { dg-options "-save-temps -O0" } */
9799+/* { dg-add-options arm_neon } */
9800
9801 #include "arm_neon.h"
9802
9803Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
9804===================================================================
9805--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
9806+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
9807@@ -3,7 +3,8 @@
9808
9809 /* { dg-do assemble } */
9810 /* { dg-require-effective-target arm_neon_ok } */
9811-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9812+/* { dg-options "-save-temps -O0" } */
9813+/* { dg-add-options arm_neon } */
9814
9815 #include "arm_neon.h"
9816
9817Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
9818===================================================================
9819--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
9820+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
9821@@ -3,7 +3,8 @@
9822
9823 /* { dg-do assemble } */
9824 /* { dg-require-effective-target arm_neon_ok } */
9825-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9826+/* { dg-options "-save-temps -O0" } */
9827+/* { dg-add-options arm_neon } */
9828
9829 #include "arm_neon.h"
9830
9831Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
9832===================================================================
9833--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
9834+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
9835@@ -3,7 +3,8 @@
9836
9837 /* { dg-do assemble } */
9838 /* { dg-require-effective-target arm_neon_ok } */
9839-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9840+/* { dg-options "-save-temps -O0" } */
9841+/* { dg-add-options arm_neon } */
9842
9843 #include "arm_neon.h"
9844
9845Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
9846===================================================================
9847--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
9848+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
9849@@ -3,7 +3,8 @@
9850
9851 /* { dg-do assemble } */
9852 /* { dg-require-effective-target arm_neon_ok } */
9853-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9854+/* { dg-options "-save-temps -O0" } */
9855+/* { dg-add-options arm_neon } */
9856
9857 #include "arm_neon.h"
9858
9859Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
9860===================================================================
9861--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
9862+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
9863@@ -3,7 +3,8 @@
9864
9865 /* { dg-do assemble } */
9866 /* { dg-require-effective-target arm_neon_ok } */
9867-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9868+/* { dg-options "-save-temps -O0" } */
9869+/* { dg-add-options arm_neon } */
9870
9871 #include "arm_neon.h"
9872
9873Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
9874===================================================================
9875--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
9876+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
9877@@ -3,7 +3,8 @@
9878
9879 /* { dg-do assemble } */
9880 /* { dg-require-effective-target arm_neon_ok } */
9881-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9882+/* { dg-options "-save-temps -O0" } */
9883+/* { dg-add-options arm_neon } */
9884
9885 #include "arm_neon.h"
9886
9887Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
9888===================================================================
9889--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
9890+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
9891@@ -3,7 +3,8 @@
9892
9893 /* { dg-do assemble } */
9894 /* { dg-require-effective-target arm_neon_ok } */
9895-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9896+/* { dg-options "-save-temps -O0" } */
9897+/* { dg-add-options arm_neon } */
9898
9899 #include "arm_neon.h"
9900
9901Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
9902===================================================================
9903--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
9904+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
9905@@ -3,7 +3,8 @@
9906
9907 /* { dg-do assemble } */
9908 /* { dg-require-effective-target arm_neon_ok } */
9909-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9910+/* { dg-options "-save-temps -O0" } */
9911+/* { dg-add-options arm_neon } */
9912
9913 #include "arm_neon.h"
9914
9915Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
9916===================================================================
9917--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
9918+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
9919@@ -3,7 +3,8 @@
9920
9921 /* { dg-do assemble } */
9922 /* { dg-require-effective-target arm_neon_ok } */
9923-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9924+/* { dg-options "-save-temps -O0" } */
9925+/* { dg-add-options arm_neon } */
9926
9927 #include "arm_neon.h"
9928
9929Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
9930===================================================================
9931--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
9932+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
9933@@ -3,7 +3,8 @@
9934
9935 /* { dg-do assemble } */
9936 /* { dg-require-effective-target arm_neon_ok } */
9937-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9938+/* { dg-options "-save-temps -O0" } */
9939+/* { dg-add-options arm_neon } */
9940
9941 #include "arm_neon.h"
9942
9943Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
9944===================================================================
9945--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
9946+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
9947@@ -3,7 +3,8 @@
9948
9949 /* { dg-do assemble } */
9950 /* { dg-require-effective-target arm_neon_ok } */
9951-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9952+/* { dg-options "-save-temps -O0" } */
9953+/* { dg-add-options arm_neon } */
9954
9955 #include "arm_neon.h"
9956
9957Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
9958===================================================================
9959--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
9960+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
9961@@ -3,7 +3,8 @@
9962
9963 /* { dg-do assemble } */
9964 /* { dg-require-effective-target arm_neon_ok } */
9965-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9966+/* { dg-options "-save-temps -O0" } */
9967+/* { dg-add-options arm_neon } */
9968
9969 #include "arm_neon.h"
9970
9971Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
9972===================================================================
9973--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
9974+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
9975@@ -3,7 +3,8 @@
9976
9977 /* { dg-do assemble } */
9978 /* { dg-require-effective-target arm_neon_ok } */
9979-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9980+/* { dg-options "-save-temps -O0" } */
9981+/* { dg-add-options arm_neon } */
9982
9983 #include "arm_neon.h"
9984
9985Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
9986===================================================================
9987--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
9988+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
9989@@ -3,7 +3,8 @@
9990
9991 /* { dg-do assemble } */
9992 /* { dg-require-effective-target arm_neon_ok } */
9993-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
9994+/* { dg-options "-save-temps -O0" } */
9995+/* { dg-add-options arm_neon } */
9996
9997 #include "arm_neon.h"
9998
9999Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
10000===================================================================
10001--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
10002+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
10003@@ -3,7 +3,8 @@
10004
10005 /* { dg-do assemble } */
10006 /* { dg-require-effective-target arm_neon_ok } */
10007-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10008+/* { dg-options "-save-temps -O0" } */
10009+/* { dg-add-options arm_neon } */
10010
10011 #include "arm_neon.h"
10012
10013Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
10014===================================================================
10015--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
10016+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
10017@@ -3,7 +3,8 @@
10018
10019 /* { dg-do assemble } */
10020 /* { dg-require-effective-target arm_neon_ok } */
10021-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10022+/* { dg-options "-save-temps -O0" } */
10023+/* { dg-add-options arm_neon } */
10024
10025 #include "arm_neon.h"
10026
10027Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
10028===================================================================
10029--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
10030+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
10031@@ -3,7 +3,8 @@
10032
10033 /* { dg-do assemble } */
10034 /* { dg-require-effective-target arm_neon_ok } */
10035-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10036+/* { dg-options "-save-temps -O0" } */
10037+/* { dg-add-options arm_neon } */
10038
10039 #include "arm_neon.h"
10040
10041Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
10042===================================================================
10043--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
10044+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
10045@@ -3,7 +3,8 @@
10046
10047 /* { dg-do assemble } */
10048 /* { dg-require-effective-target arm_neon_ok } */
10049-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10050+/* { dg-options "-save-temps -O0" } */
10051+/* { dg-add-options arm_neon } */
10052
10053 #include "arm_neon.h"
10054
10055Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
10056===================================================================
10057--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
10058+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
10059@@ -3,7 +3,8 @@
10060
10061 /* { dg-do assemble } */
10062 /* { dg-require-effective-target arm_neon_ok } */
10063-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10064+/* { dg-options "-save-temps -O0" } */
10065+/* { dg-add-options arm_neon } */
10066
10067 #include "arm_neon.h"
10068
10069Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
10070===================================================================
10071--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
10072+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
10073@@ -3,7 +3,8 @@
10074
10075 /* { dg-do assemble } */
10076 /* { dg-require-effective-target arm_neon_ok } */
10077-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10078+/* { dg-options "-save-temps -O0" } */
10079+/* { dg-add-options arm_neon } */
10080
10081 #include "arm_neon.h"
10082
10083Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
10084===================================================================
10085--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
10086+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
10087@@ -3,7 +3,8 @@
10088
10089 /* { dg-do assemble } */
10090 /* { dg-require-effective-target arm_neon_ok } */
10091-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10092+/* { dg-options "-save-temps -O0" } */
10093+/* { dg-add-options arm_neon } */
10094
10095 #include "arm_neon.h"
10096
10097Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
10098===================================================================
10099--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
10100+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
10101@@ -3,7 +3,8 @@
10102
10103 /* { dg-do assemble } */
10104 /* { dg-require-effective-target arm_neon_ok } */
10105-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10106+/* { dg-options "-save-temps -O0" } */
10107+/* { dg-add-options arm_neon } */
10108
10109 #include "arm_neon.h"
10110
10111Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
10112===================================================================
10113--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
10114+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
10115@@ -3,7 +3,8 @@
10116
10117 /* { dg-do assemble } */
10118 /* { dg-require-effective-target arm_neon_ok } */
10119-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10120+/* { dg-options "-save-temps -O0" } */
10121+/* { dg-add-options arm_neon } */
10122
10123 #include "arm_neon.h"
10124
10125Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
10126===================================================================
10127--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
10128+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
10129@@ -3,7 +3,8 @@
10130
10131 /* { dg-do assemble } */
10132 /* { dg-require-effective-target arm_neon_ok } */
10133-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10134+/* { dg-options "-save-temps -O0" } */
10135+/* { dg-add-options arm_neon } */
10136
10137 #include "arm_neon.h"
10138
10139Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
10140===================================================================
10141--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
10142+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
10143@@ -3,7 +3,8 @@
10144
10145 /* { dg-do assemble } */
10146 /* { dg-require-effective-target arm_neon_ok } */
10147-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10148+/* { dg-options "-save-temps -O0" } */
10149+/* { dg-add-options arm_neon } */
10150
10151 #include "arm_neon.h"
10152
10153Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
10154===================================================================
10155--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
10156+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
10157@@ -3,7 +3,8 @@
10158
10159 /* { dg-do assemble } */
10160 /* { dg-require-effective-target arm_neon_ok } */
10161-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10162+/* { dg-options "-save-temps -O0" } */
10163+/* { dg-add-options arm_neon } */
10164
10165 #include "arm_neon.h"
10166
10167Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
10168===================================================================
10169--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
10170+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
10171@@ -3,7 +3,8 @@
10172
10173 /* { dg-do assemble } */
10174 /* { dg-require-effective-target arm_neon_ok } */
10175-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10176+/* { dg-options "-save-temps -O0" } */
10177+/* { dg-add-options arm_neon } */
10178
10179 #include "arm_neon.h"
10180
10181Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
10182===================================================================
10183--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
10184+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
10185@@ -3,7 +3,8 @@
10186
10187 /* { dg-do assemble } */
10188 /* { dg-require-effective-target arm_neon_ok } */
10189-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10190+/* { dg-options "-save-temps -O0" } */
10191+/* { dg-add-options arm_neon } */
10192
10193 #include "arm_neon.h"
10194
10195Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
10196===================================================================
10197--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
10198+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
10199@@ -3,7 +3,8 @@
10200
10201 /* { dg-do assemble } */
10202 /* { dg-require-effective-target arm_neon_ok } */
10203-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10204+/* { dg-options "-save-temps -O0" } */
10205+/* { dg-add-options arm_neon } */
10206
10207 #include "arm_neon.h"
10208
10209Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
10210===================================================================
10211--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
10212+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
10213@@ -3,7 +3,8 @@
10214
10215 /* { dg-do assemble } */
10216 /* { dg-require-effective-target arm_neon_ok } */
10217-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10218+/* { dg-options "-save-temps -O0" } */
10219+/* { dg-add-options arm_neon } */
10220
10221 #include "arm_neon.h"
10222
10223Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
10224===================================================================
10225--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
10226+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
10227@@ -3,7 +3,8 @@
10228
10229 /* { dg-do assemble } */
10230 /* { dg-require-effective-target arm_neon_ok } */
10231-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10232+/* { dg-options "-save-temps -O0" } */
10233+/* { dg-add-options arm_neon } */
10234
10235 #include "arm_neon.h"
10236
10237Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
10238===================================================================
10239--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
10240+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
10241@@ -3,7 +3,8 @@
10242
10243 /* { dg-do assemble } */
10244 /* { dg-require-effective-target arm_neon_ok } */
10245-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10246+/* { dg-options "-save-temps -O0" } */
10247+/* { dg-add-options arm_neon } */
10248
10249 #include "arm_neon.h"
10250
10251Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
10252===================================================================
10253--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
10254+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
10255@@ -3,7 +3,8 @@
10256
10257 /* { dg-do assemble } */
10258 /* { dg-require-effective-target arm_neon_ok } */
10259-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10260+/* { dg-options "-save-temps -O0" } */
10261+/* { dg-add-options arm_neon } */
10262
10263 #include "arm_neon.h"
10264
10265Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
10266===================================================================
10267--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
10268+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
10269@@ -3,7 +3,8 @@
10270
10271 /* { dg-do assemble } */
10272 /* { dg-require-effective-target arm_neon_ok } */
10273-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10274+/* { dg-options "-save-temps -O0" } */
10275+/* { dg-add-options arm_neon } */
10276
10277 #include "arm_neon.h"
10278
10279Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
10280===================================================================
10281--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
10282+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
10283@@ -3,7 +3,8 @@
10284
10285 /* { dg-do assemble } */
10286 /* { dg-require-effective-target arm_neon_ok } */
10287-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10288+/* { dg-options "-save-temps -O0" } */
10289+/* { dg-add-options arm_neon } */
10290
10291 #include "arm_neon.h"
10292
10293Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
10294===================================================================
10295--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
10296+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
10297@@ -3,7 +3,8 @@
10298
10299 /* { dg-do assemble } */
10300 /* { dg-require-effective-target arm_neon_ok } */
10301-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10302+/* { dg-options "-save-temps -O0" } */
10303+/* { dg-add-options arm_neon } */
10304
10305 #include "arm_neon.h"
10306
10307Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
10308===================================================================
10309--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
10310+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
10311@@ -3,7 +3,8 @@
10312
10313 /* { dg-do assemble } */
10314 /* { dg-require-effective-target arm_neon_ok } */
10315-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10316+/* { dg-options "-save-temps -O0" } */
10317+/* { dg-add-options arm_neon } */
10318
10319 #include "arm_neon.h"
10320
10321Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
10322===================================================================
10323--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
10324+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
10325@@ -3,7 +3,8 @@
10326
10327 /* { dg-do assemble } */
10328 /* { dg-require-effective-target arm_neon_ok } */
10329-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10330+/* { dg-options "-save-temps -O0" } */
10331+/* { dg-add-options arm_neon } */
10332
10333 #include "arm_neon.h"
10334
10335Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
10336===================================================================
10337--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
10338+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
10339@@ -3,7 +3,8 @@
10340
10341 /* { dg-do assemble } */
10342 /* { dg-require-effective-target arm_neon_ok } */
10343-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10344+/* { dg-options "-save-temps -O0" } */
10345+/* { dg-add-options arm_neon } */
10346
10347 #include "arm_neon.h"
10348
10349Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
10350===================================================================
10351--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
10352+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
10353@@ -3,7 +3,8 @@
10354
10355 /* { dg-do assemble } */
10356 /* { dg-require-effective-target arm_neon_ok } */
10357-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10358+/* { dg-options "-save-temps -O0" } */
10359+/* { dg-add-options arm_neon } */
10360
10361 #include "arm_neon.h"
10362
10363Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
10364===================================================================
10365--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
10366+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
10367@@ -3,7 +3,8 @@
10368
10369 /* { dg-do assemble } */
10370 /* { dg-require-effective-target arm_neon_ok } */
10371-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10372+/* { dg-options "-save-temps -O0" } */
10373+/* { dg-add-options arm_neon } */
10374
10375 #include "arm_neon.h"
10376
10377Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
10378===================================================================
10379--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
10380+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
10381@@ -3,7 +3,8 @@
10382
10383 /* { dg-do assemble } */
10384 /* { dg-require-effective-target arm_neon_ok } */
10385-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10386+/* { dg-options "-save-temps -O0" } */
10387+/* { dg-add-options arm_neon } */
10388
10389 #include "arm_neon.h"
10390
10391Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
10392===================================================================
10393--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
10394+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
10395@@ -3,7 +3,8 @@
10396
10397 /* { dg-do assemble } */
10398 /* { dg-require-effective-target arm_neon_ok } */
10399-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10400+/* { dg-options "-save-temps -O0" } */
10401+/* { dg-add-options arm_neon } */
10402
10403 #include "arm_neon.h"
10404
10405Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
10406===================================================================
10407--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
10408+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
10409@@ -3,7 +3,8 @@
10410
10411 /* { dg-do assemble } */
10412 /* { dg-require-effective-target arm_neon_ok } */
10413-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10414+/* { dg-options "-save-temps -O0" } */
10415+/* { dg-add-options arm_neon } */
10416
10417 #include "arm_neon.h"
10418
10419Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
10420===================================================================
10421--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
10422+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
10423@@ -3,7 +3,8 @@
10424
10425 /* { dg-do assemble } */
10426 /* { dg-require-effective-target arm_neon_ok } */
10427-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10428+/* { dg-options "-save-temps -O0" } */
10429+/* { dg-add-options arm_neon } */
10430
10431 #include "arm_neon.h"
10432
10433Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
10434===================================================================
10435--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
10436+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
10437@@ -3,7 +3,8 @@
10438
10439 /* { dg-do assemble } */
10440 /* { dg-require-effective-target arm_neon_ok } */
10441-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10442+/* { dg-options "-save-temps -O0" } */
10443+/* { dg-add-options arm_neon } */
10444
10445 #include "arm_neon.h"
10446
10447Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
10448===================================================================
10449--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
10450+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
10451@@ -3,7 +3,8 @@
10452
10453 /* { dg-do assemble } */
10454 /* { dg-require-effective-target arm_neon_ok } */
10455-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10456+/* { dg-options "-save-temps -O0" } */
10457+/* { dg-add-options arm_neon } */
10458
10459 #include "arm_neon.h"
10460
10461Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
10462===================================================================
10463--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
10464+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
10465@@ -3,7 +3,8 @@
10466
10467 /* { dg-do assemble } */
10468 /* { dg-require-effective-target arm_neon_ok } */
10469-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10470+/* { dg-options "-save-temps -O0" } */
10471+/* { dg-add-options arm_neon } */
10472
10473 #include "arm_neon.h"
10474
10475Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
10476===================================================================
10477--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
10478+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
10479@@ -3,7 +3,8 @@
10480
10481 /* { dg-do assemble } */
10482 /* { dg-require-effective-target arm_neon_ok } */
10483-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10484+/* { dg-options "-save-temps -O0" } */
10485+/* { dg-add-options arm_neon } */
10486
10487 #include "arm_neon.h"
10488
10489Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
10490===================================================================
10491--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
10492+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
10493@@ -3,7 +3,8 @@
10494
10495 /* { dg-do assemble } */
10496 /* { dg-require-effective-target arm_neon_ok } */
10497-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10498+/* { dg-options "-save-temps -O0" } */
10499+/* { dg-add-options arm_neon } */
10500
10501 #include "arm_neon.h"
10502
10503Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
10504===================================================================
10505--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
10506+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
10507@@ -3,7 +3,8 @@
10508
10509 /* { dg-do assemble } */
10510 /* { dg-require-effective-target arm_neon_ok } */
10511-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10512+/* { dg-options "-save-temps -O0" } */
10513+/* { dg-add-options arm_neon } */
10514
10515 #include "arm_neon.h"
10516
10517Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
10518===================================================================
10519--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
10520+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
10521@@ -3,7 +3,8 @@
10522
10523 /* { dg-do assemble } */
10524 /* { dg-require-effective-target arm_neon_ok } */
10525-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10526+/* { dg-options "-save-temps -O0" } */
10527+/* { dg-add-options arm_neon } */
10528
10529 #include "arm_neon.h"
10530
10531Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
10532===================================================================
10533--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
10534+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
10535@@ -3,7 +3,8 @@
10536
10537 /* { dg-do assemble } */
10538 /* { dg-require-effective-target arm_neon_ok } */
10539-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10540+/* { dg-options "-save-temps -O0" } */
10541+/* { dg-add-options arm_neon } */
10542
10543 #include "arm_neon.h"
10544
10545Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
10546===================================================================
10547--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
10548+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
10549@@ -3,7 +3,8 @@
10550
10551 /* { dg-do assemble } */
10552 /* { dg-require-effective-target arm_neon_ok } */
10553-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10554+/* { dg-options "-save-temps -O0" } */
10555+/* { dg-add-options arm_neon } */
10556
10557 #include "arm_neon.h"
10558
10559Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
10560===================================================================
10561--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
10562+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
10563@@ -3,7 +3,8 @@
10564
10565 /* { dg-do assemble } */
10566 /* { dg-require-effective-target arm_neon_ok } */
10567-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10568+/* { dg-options "-save-temps -O0" } */
10569+/* { dg-add-options arm_neon } */
10570
10571 #include "arm_neon.h"
10572
10573Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
10574===================================================================
10575--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
10576+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
10577@@ -3,7 +3,8 @@
10578
10579 /* { dg-do assemble } */
10580 /* { dg-require-effective-target arm_neon_ok } */
10581-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10582+/* { dg-options "-save-temps -O0" } */
10583+/* { dg-add-options arm_neon } */
10584
10585 #include "arm_neon.h"
10586
10587Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminf32.c
10588===================================================================
10589--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminf32.c
10590+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminf32.c
10591@@ -3,7 +3,8 @@
10592
10593 /* { dg-do assemble } */
10594 /* { dg-require-effective-target arm_neon_ok } */
10595-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10596+/* { dg-options "-save-temps -O0" } */
10597+/* { dg-add-options arm_neon } */
10598
10599 #include "arm_neon.h"
10600
10601Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmins16.c
10602===================================================================
10603--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmins16.c
10604+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmins16.c
10605@@ -3,7 +3,8 @@
10606
10607 /* { dg-do assemble } */
10608 /* { dg-require-effective-target arm_neon_ok } */
10609-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10610+/* { dg-options "-save-temps -O0" } */
10611+/* { dg-add-options arm_neon } */
10612
10613 #include "arm_neon.h"
10614
10615Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmins32.c
10616===================================================================
10617--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmins32.c
10618+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmins32.c
10619@@ -3,7 +3,8 @@
10620
10621 /* { dg-do assemble } */
10622 /* { dg-require-effective-target arm_neon_ok } */
10623-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10624+/* { dg-options "-save-temps -O0" } */
10625+/* { dg-add-options arm_neon } */
10626
10627 #include "arm_neon.h"
10628
10629Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmins8.c
10630===================================================================
10631--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmins8.c
10632+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmins8.c
10633@@ -3,7 +3,8 @@
10634
10635 /* { dg-do assemble } */
10636 /* { dg-require-effective-target arm_neon_ok } */
10637-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10638+/* { dg-options "-save-temps -O0" } */
10639+/* { dg-add-options arm_neon } */
10640
10641 #include "arm_neon.h"
10642
10643Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminu16.c
10644===================================================================
10645--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminu16.c
10646+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminu16.c
10647@@ -3,7 +3,8 @@
10648
10649 /* { dg-do assemble } */
10650 /* { dg-require-effective-target arm_neon_ok } */
10651-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10652+/* { dg-options "-save-temps -O0" } */
10653+/* { dg-add-options arm_neon } */
10654
10655 #include "arm_neon.h"
10656
10657Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminu32.c
10658===================================================================
10659--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminu32.c
10660+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminu32.c
10661@@ -3,7 +3,8 @@
10662
10663 /* { dg-do assemble } */
10664 /* { dg-require-effective-target arm_neon_ok } */
10665-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10666+/* { dg-options "-save-temps -O0" } */
10667+/* { dg-add-options arm_neon } */
10668
10669 #include "arm_neon.h"
10670
10671Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminu8.c
10672===================================================================
10673--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vminu8.c
10674+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vminu8.c
10675@@ -3,7 +3,8 @@
10676
10677 /* { dg-do assemble } */
10678 /* { dg-require-effective-target arm_neon_ok } */
10679-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10680+/* { dg-options "-save-temps -O0" } */
10681+/* { dg-add-options arm_neon } */
10682
10683 #include "arm_neon.h"
10684
10685Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
10686===================================================================
10687--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
10688+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
10689@@ -3,7 +3,8 @@
10690
10691 /* { dg-do assemble } */
10692 /* { dg-require-effective-target arm_neon_ok } */
10693-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10694+/* { dg-options "-save-temps -O0" } */
10695+/* { dg-add-options arm_neon } */
10696
10697 #include "arm_neon.h"
10698
10699Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
10700===================================================================
10701--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
10702+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
10703@@ -3,7 +3,8 @@
10704
10705 /* { dg-do assemble } */
10706 /* { dg-require-effective-target arm_neon_ok } */
10707-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10708+/* { dg-options "-save-temps -O0" } */
10709+/* { dg-add-options arm_neon } */
10710
10711 #include "arm_neon.h"
10712
10713Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
10714===================================================================
10715--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
10716+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
10717@@ -3,7 +3,8 @@
10718
10719 /* { dg-do assemble } */
10720 /* { dg-require-effective-target arm_neon_ok } */
10721-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10722+/* { dg-options "-save-temps -O0" } */
10723+/* { dg-add-options arm_neon } */
10724
10725 #include "arm_neon.h"
10726
10727Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
10728===================================================================
10729--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
10730+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
10731@@ -3,7 +3,8 @@
10732
10733 /* { dg-do assemble } */
10734 /* { dg-require-effective-target arm_neon_ok } */
10735-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10736+/* { dg-options "-save-temps -O0" } */
10737+/* { dg-add-options arm_neon } */
10738
10739 #include "arm_neon.h"
10740
10741Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
10742===================================================================
10743--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
10744+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
10745@@ -3,7 +3,8 @@
10746
10747 /* { dg-do assemble } */
10748 /* { dg-require-effective-target arm_neon_ok } */
10749-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10750+/* { dg-options "-save-temps -O0" } */
10751+/* { dg-add-options arm_neon } */
10752
10753 #include "arm_neon.h"
10754
10755Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
10756===================================================================
10757--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
10758+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
10759@@ -3,7 +3,8 @@
10760
10761 /* { dg-do assemble } */
10762 /* { dg-require-effective-target arm_neon_ok } */
10763-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10764+/* { dg-options "-save-temps -O0" } */
10765+/* { dg-add-options arm_neon } */
10766
10767 #include "arm_neon.h"
10768
10769Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
10770===================================================================
10771--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
10772+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
10773@@ -3,7 +3,8 @@
10774
10775 /* { dg-do assemble } */
10776 /* { dg-require-effective-target arm_neon_ok } */
10777-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10778+/* { dg-options "-save-temps -O0" } */
10779+/* { dg-add-options arm_neon } */
10780
10781 #include "arm_neon.h"
10782
10783Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
10784===================================================================
10785--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
10786+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
10787@@ -3,7 +3,8 @@
10788
10789 /* { dg-do assemble } */
10790 /* { dg-require-effective-target arm_neon_ok } */
10791-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10792+/* { dg-options "-save-temps -O0" } */
10793+/* { dg-add-options arm_neon } */
10794
10795 #include "arm_neon.h"
10796
10797Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
10798===================================================================
10799--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
10800+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
10801@@ -3,7 +3,8 @@
10802
10803 /* { dg-do assemble } */
10804 /* { dg-require-effective-target arm_neon_ok } */
10805-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10806+/* { dg-options "-save-temps -O0" } */
10807+/* { dg-add-options arm_neon } */
10808
10809 #include "arm_neon.h"
10810
10811Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
10812===================================================================
10813--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
10814+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
10815@@ -3,7 +3,8 @@
10816
10817 /* { dg-do assemble } */
10818 /* { dg-require-effective-target arm_neon_ok } */
10819-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10820+/* { dg-options "-save-temps -O0" } */
10821+/* { dg-add-options arm_neon } */
10822
10823 #include "arm_neon.h"
10824
10825Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
10826===================================================================
10827--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
10828+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
10829@@ -3,7 +3,8 @@
10830
10831 /* { dg-do assemble } */
10832 /* { dg-require-effective-target arm_neon_ok } */
10833-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10834+/* { dg-options "-save-temps -O0" } */
10835+/* { dg-add-options arm_neon } */
10836
10837 #include "arm_neon.h"
10838
10839Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
10840===================================================================
10841--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
10842+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
10843@@ -3,7 +3,8 @@
10844
10845 /* { dg-do assemble } */
10846 /* { dg-require-effective-target arm_neon_ok } */
10847-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10848+/* { dg-options "-save-temps -O0" } */
10849+/* { dg-add-options arm_neon } */
10850
10851 #include "arm_neon.h"
10852
10853Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
10854===================================================================
10855--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
10856+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
10857@@ -3,7 +3,8 @@
10858
10859 /* { dg-do assemble } */
10860 /* { dg-require-effective-target arm_neon_ok } */
10861-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10862+/* { dg-options "-save-temps -O0" } */
10863+/* { dg-add-options arm_neon } */
10864
10865 #include "arm_neon.h"
10866
10867Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
10868===================================================================
10869--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
10870+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
10871@@ -3,7 +3,8 @@
10872
10873 /* { dg-do assemble } */
10874 /* { dg-require-effective-target arm_neon_ok } */
10875-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10876+/* { dg-options "-save-temps -O0" } */
10877+/* { dg-add-options arm_neon } */
10878
10879 #include "arm_neon.h"
10880
10881Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
10882===================================================================
10883--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
10884+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
10885@@ -3,7 +3,8 @@
10886
10887 /* { dg-do assemble } */
10888 /* { dg-require-effective-target arm_neon_ok } */
10889-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10890+/* { dg-options "-save-temps -O0" } */
10891+/* { dg-add-options arm_neon } */
10892
10893 #include "arm_neon.h"
10894
10895Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
10896===================================================================
10897--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
10898+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
10899@@ -3,7 +3,8 @@
10900
10901 /* { dg-do assemble } */
10902 /* { dg-require-effective-target arm_neon_ok } */
10903-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10904+/* { dg-options "-save-temps -O0" } */
10905+/* { dg-add-options arm_neon } */
10906
10907 #include "arm_neon.h"
10908
10909Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
10910===================================================================
10911--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
10912+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
10913@@ -3,7 +3,8 @@
10914
10915 /* { dg-do assemble } */
10916 /* { dg-require-effective-target arm_neon_ok } */
10917-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10918+/* { dg-options "-save-temps -O0" } */
10919+/* { dg-add-options arm_neon } */
10920
10921 #include "arm_neon.h"
10922
10923Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
10924===================================================================
10925--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
10926+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
10927@@ -3,7 +3,8 @@
10928
10929 /* { dg-do assemble } */
10930 /* { dg-require-effective-target arm_neon_ok } */
10931-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10932+/* { dg-options "-save-temps -O0" } */
10933+/* { dg-add-options arm_neon } */
10934
10935 #include "arm_neon.h"
10936
10937Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
10938===================================================================
10939--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
10940+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
10941@@ -3,7 +3,8 @@
10942
10943 /* { dg-do assemble } */
10944 /* { dg-require-effective-target arm_neon_ok } */
10945-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10946+/* { dg-options "-save-temps -O0" } */
10947+/* { dg-add-options arm_neon } */
10948
10949 #include "arm_neon.h"
10950
10951Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
10952===================================================================
10953--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
10954+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
10955@@ -3,7 +3,8 @@
10956
10957 /* { dg-do assemble } */
10958 /* { dg-require-effective-target arm_neon_ok } */
10959-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10960+/* { dg-options "-save-temps -O0" } */
10961+/* { dg-add-options arm_neon } */
10962
10963 #include "arm_neon.h"
10964
10965Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
10966===================================================================
10967--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
10968+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
10969@@ -3,7 +3,8 @@
10970
10971 /* { dg-do assemble } */
10972 /* { dg-require-effective-target arm_neon_ok } */
10973-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10974+/* { dg-options "-save-temps -O0" } */
10975+/* { dg-add-options arm_neon } */
10976
10977 #include "arm_neon.h"
10978
10979Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
10980===================================================================
10981--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
10982+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
10983@@ -3,7 +3,8 @@
10984
10985 /* { dg-do assemble } */
10986 /* { dg-require-effective-target arm_neon_ok } */
10987-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
10988+/* { dg-options "-save-temps -O0" } */
10989+/* { dg-add-options arm_neon } */
10990
10991 #include "arm_neon.h"
10992
10993Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
10994===================================================================
10995--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
10996+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
10997@@ -3,7 +3,8 @@
10998
10999 /* { dg-do assemble } */
11000 /* { dg-require-effective-target arm_neon_ok } */
11001-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11002+/* { dg-options "-save-temps -O0" } */
11003+/* { dg-add-options arm_neon } */
11004
11005 #include "arm_neon.h"
11006
11007Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
11008===================================================================
11009--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
11010+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
11011@@ -3,7 +3,8 @@
11012
11013 /* { dg-do assemble } */
11014 /* { dg-require-effective-target arm_neon_ok } */
11015-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11016+/* { dg-options "-save-temps -O0" } */
11017+/* { dg-add-options arm_neon } */
11018
11019 #include "arm_neon.h"
11020
11021Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
11022===================================================================
11023--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
11024+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
11025@@ -3,7 +3,8 @@
11026
11027 /* { dg-do assemble } */
11028 /* { dg-require-effective-target arm_neon_ok } */
11029-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11030+/* { dg-options "-save-temps -O0" } */
11031+/* { dg-add-options arm_neon } */
11032
11033 #include "arm_neon.h"
11034
11035Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
11036===================================================================
11037--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
11038+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
11039@@ -3,7 +3,8 @@
11040
11041 /* { dg-do assemble } */
11042 /* { dg-require-effective-target arm_neon_ok } */
11043-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11044+/* { dg-options "-save-temps -O0" } */
11045+/* { dg-add-options arm_neon } */
11046
11047 #include "arm_neon.h"
11048
11049Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
11050===================================================================
11051--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
11052+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
11053@@ -3,7 +3,8 @@
11054
11055 /* { dg-do assemble } */
11056 /* { dg-require-effective-target arm_neon_ok } */
11057-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11058+/* { dg-options "-save-temps -O0" } */
11059+/* { dg-add-options arm_neon } */
11060
11061 #include "arm_neon.h"
11062
11063Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
11064===================================================================
11065--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
11066+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
11067@@ -3,7 +3,8 @@
11068
11069 /* { dg-do assemble } */
11070 /* { dg-require-effective-target arm_neon_ok } */
11071-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11072+/* { dg-options "-save-temps -O0" } */
11073+/* { dg-add-options arm_neon } */
11074
11075 #include "arm_neon.h"
11076
11077Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
11078===================================================================
11079--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
11080+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
11081@@ -3,7 +3,8 @@
11082
11083 /* { dg-do assemble } */
11084 /* { dg-require-effective-target arm_neon_ok } */
11085-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11086+/* { dg-options "-save-temps -O0" } */
11087+/* { dg-add-options arm_neon } */
11088
11089 #include "arm_neon.h"
11090
11091Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
11092===================================================================
11093--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
11094+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
11095@@ -3,7 +3,8 @@
11096
11097 /* { dg-do assemble } */
11098 /* { dg-require-effective-target arm_neon_ok } */
11099-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11100+/* { dg-options "-save-temps -O0" } */
11101+/* { dg-add-options arm_neon } */
11102
11103 #include "arm_neon.h"
11104
11105Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
11106===================================================================
11107--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
11108+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
11109@@ -3,7 +3,8 @@
11110
11111 /* { dg-do assemble } */
11112 /* { dg-require-effective-target arm_neon_ok } */
11113-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11114+/* { dg-options "-save-temps -O0" } */
11115+/* { dg-add-options arm_neon } */
11116
11117 #include "arm_neon.h"
11118
11119Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
11120===================================================================
11121--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
11122+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
11123@@ -3,7 +3,8 @@
11124
11125 /* { dg-do assemble } */
11126 /* { dg-require-effective-target arm_neon_ok } */
11127-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11128+/* { dg-options "-save-temps -O0" } */
11129+/* { dg-add-options arm_neon } */
11130
11131 #include "arm_neon.h"
11132
11133Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
11134===================================================================
11135--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
11136+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
11137@@ -3,7 +3,8 @@
11138
11139 /* { dg-do assemble } */
11140 /* { dg-require-effective-target arm_neon_ok } */
11141-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11142+/* { dg-options "-save-temps -O0" } */
11143+/* { dg-add-options arm_neon } */
11144
11145 #include "arm_neon.h"
11146
11147Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
11148===================================================================
11149--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
11150+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
11151@@ -3,7 +3,8 @@
11152
11153 /* { dg-do assemble } */
11154 /* { dg-require-effective-target arm_neon_ok } */
11155-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11156+/* { dg-options "-save-temps -O0" } */
11157+/* { dg-add-options arm_neon } */
11158
11159 #include "arm_neon.h"
11160
11161Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
11162===================================================================
11163--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
11164+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
11165@@ -3,7 +3,8 @@
11166
11167 /* { dg-do assemble } */
11168 /* { dg-require-effective-target arm_neon_ok } */
11169-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11170+/* { dg-options "-save-temps -O0" } */
11171+/* { dg-add-options arm_neon } */
11172
11173 #include "arm_neon.h"
11174
11175Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
11176===================================================================
11177--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
11178+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
11179@@ -3,7 +3,8 @@
11180
11181 /* { dg-do assemble } */
11182 /* { dg-require-effective-target arm_neon_ok } */
11183-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11184+/* { dg-options "-save-temps -O0" } */
11185+/* { dg-add-options arm_neon } */
11186
11187 #include "arm_neon.h"
11188
11189Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
11190===================================================================
11191--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
11192+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
11193@@ -3,7 +3,8 @@
11194
11195 /* { dg-do assemble } */
11196 /* { dg-require-effective-target arm_neon_ok } */
11197-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11198+/* { dg-options "-save-temps -O0" } */
11199+/* { dg-add-options arm_neon } */
11200
11201 #include "arm_neon.h"
11202
11203Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
11204===================================================================
11205--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
11206+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
11207@@ -3,7 +3,8 @@
11208
11209 /* { dg-do assemble } */
11210 /* { dg-require-effective-target arm_neon_ok } */
11211-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11212+/* { dg-options "-save-temps -O0" } */
11213+/* { dg-add-options arm_neon } */
11214
11215 #include "arm_neon.h"
11216
11217Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
11218===================================================================
11219--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
11220+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
11221@@ -3,7 +3,8 @@
11222
11223 /* { dg-do assemble } */
11224 /* { dg-require-effective-target arm_neon_ok } */
11225-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11226+/* { dg-options "-save-temps -O0" } */
11227+/* { dg-add-options arm_neon } */
11228
11229 #include "arm_neon.h"
11230
11231Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
11232===================================================================
11233--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
11234+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
11235@@ -3,7 +3,8 @@
11236
11237 /* { dg-do assemble } */
11238 /* { dg-require-effective-target arm_neon_ok } */
11239-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11240+/* { dg-options "-save-temps -O0" } */
11241+/* { dg-add-options arm_neon } */
11242
11243 #include "arm_neon.h"
11244
11245Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
11246===================================================================
11247--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
11248+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
11249@@ -3,7 +3,8 @@
11250
11251 /* { dg-do assemble } */
11252 /* { dg-require-effective-target arm_neon_ok } */
11253-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11254+/* { dg-options "-save-temps -O0" } */
11255+/* { dg-add-options arm_neon } */
11256
11257 #include "arm_neon.h"
11258
11259Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
11260===================================================================
11261--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
11262+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
11263@@ -3,7 +3,8 @@
11264
11265 /* { dg-do assemble } */
11266 /* { dg-require-effective-target arm_neon_ok } */
11267-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11268+/* { dg-options "-save-temps -O0" } */
11269+/* { dg-add-options arm_neon } */
11270
11271 #include "arm_neon.h"
11272
11273Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
11274===================================================================
11275--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
11276+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
11277@@ -3,7 +3,8 @@
11278
11279 /* { dg-do assemble } */
11280 /* { dg-require-effective-target arm_neon_ok } */
11281-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11282+/* { dg-options "-save-temps -O0" } */
11283+/* { dg-add-options arm_neon } */
11284
11285 #include "arm_neon.h"
11286
11287Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
11288===================================================================
11289--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
11290+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
11291@@ -3,7 +3,8 @@
11292
11293 /* { dg-do assemble } */
11294 /* { dg-require-effective-target arm_neon_ok } */
11295-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11296+/* { dg-options "-save-temps -O0" } */
11297+/* { dg-add-options arm_neon } */
11298
11299 #include "arm_neon.h"
11300
11301Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
11302===================================================================
11303--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
11304+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
11305@@ -3,7 +3,8 @@
11306
11307 /* { dg-do assemble } */
11308 /* { dg-require-effective-target arm_neon_ok } */
11309-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11310+/* { dg-options "-save-temps -O0" } */
11311+/* { dg-add-options arm_neon } */
11312
11313 #include "arm_neon.h"
11314
11315Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
11316===================================================================
11317--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
11318+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
11319@@ -3,7 +3,8 @@
11320
11321 /* { dg-do assemble } */
11322 /* { dg-require-effective-target arm_neon_ok } */
11323-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11324+/* { dg-options "-save-temps -O0" } */
11325+/* { dg-add-options arm_neon } */
11326
11327 #include "arm_neon.h"
11328
11329Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
11330===================================================================
11331--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
11332+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
11333@@ -3,7 +3,8 @@
11334
11335 /* { dg-do assemble } */
11336 /* { dg-require-effective-target arm_neon_ok } */
11337-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11338+/* { dg-options "-save-temps -O0" } */
11339+/* { dg-add-options arm_neon } */
11340
11341 #include "arm_neon.h"
11342
11343Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
11344===================================================================
11345--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
11346+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
11347@@ -3,7 +3,8 @@
11348
11349 /* { dg-do assemble } */
11350 /* { dg-require-effective-target arm_neon_ok } */
11351-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11352+/* { dg-options "-save-temps -O0" } */
11353+/* { dg-add-options arm_neon } */
11354
11355 #include "arm_neon.h"
11356
11357Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
11358===================================================================
11359--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
11360+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
11361@@ -3,7 +3,8 @@
11362
11363 /* { dg-do assemble } */
11364 /* { dg-require-effective-target arm_neon_ok } */
11365-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11366+/* { dg-options "-save-temps -O0" } */
11367+/* { dg-add-options arm_neon } */
11368
11369 #include "arm_neon.h"
11370
11371Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
11372===================================================================
11373--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
11374+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
11375@@ -3,7 +3,8 @@
11376
11377 /* { dg-do assemble } */
11378 /* { dg-require-effective-target arm_neon_ok } */
11379-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11380+/* { dg-options "-save-temps -O0" } */
11381+/* { dg-add-options arm_neon } */
11382
11383 #include "arm_neon.h"
11384
11385Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
11386===================================================================
11387--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
11388+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
11389@@ -3,7 +3,8 @@
11390
11391 /* { dg-do assemble } */
11392 /* { dg-require-effective-target arm_neon_ok } */
11393-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11394+/* { dg-options "-save-temps -O0" } */
11395+/* { dg-add-options arm_neon } */
11396
11397 #include "arm_neon.h"
11398
11399Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
11400===================================================================
11401--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
11402+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
11403@@ -3,7 +3,8 @@
11404
11405 /* { dg-do assemble } */
11406 /* { dg-require-effective-target arm_neon_ok } */
11407-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11408+/* { dg-options "-save-temps -O0" } */
11409+/* { dg-add-options arm_neon } */
11410
11411 #include "arm_neon.h"
11412
11413Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
11414===================================================================
11415--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
11416+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
11417@@ -3,7 +3,8 @@
11418
11419 /* { dg-do assemble } */
11420 /* { dg-require-effective-target arm_neon_ok } */
11421-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11422+/* { dg-options "-save-temps -O0" } */
11423+/* { dg-add-options arm_neon } */
11424
11425 #include "arm_neon.h"
11426
11427Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
11428===================================================================
11429--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
11430+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
11431@@ -3,7 +3,8 @@
11432
11433 /* { dg-do assemble } */
11434 /* { dg-require-effective-target arm_neon_ok } */
11435-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11436+/* { dg-options "-save-temps -O0" } */
11437+/* { dg-add-options arm_neon } */
11438
11439 #include "arm_neon.h"
11440
11441Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
11442===================================================================
11443--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
11444+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
11445@@ -3,7 +3,8 @@
11446
11447 /* { dg-do assemble } */
11448 /* { dg-require-effective-target arm_neon_ok } */
11449-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11450+/* { dg-options "-save-temps -O0" } */
11451+/* { dg-add-options arm_neon } */
11452
11453 #include "arm_neon.h"
11454
11455Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
11456===================================================================
11457--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
11458+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
11459@@ -3,7 +3,8 @@
11460
11461 /* { dg-do assemble } */
11462 /* { dg-require-effective-target arm_neon_ok } */
11463-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11464+/* { dg-options "-save-temps -O0" } */
11465+/* { dg-add-options arm_neon } */
11466
11467 #include "arm_neon.h"
11468
11469Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
11470===================================================================
11471--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
11472+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
11473@@ -3,7 +3,8 @@
11474
11475 /* { dg-do assemble } */
11476 /* { dg-require-effective-target arm_neon_ok } */
11477-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11478+/* { dg-options "-save-temps -O0" } */
11479+/* { dg-add-options arm_neon } */
11480
11481 #include "arm_neon.h"
11482
11483Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
11484===================================================================
11485--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
11486+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
11487@@ -3,7 +3,8 @@
11488
11489 /* { dg-do assemble } */
11490 /* { dg-require-effective-target arm_neon_ok } */
11491-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11492+/* { dg-options "-save-temps -O0" } */
11493+/* { dg-add-options arm_neon } */
11494
11495 #include "arm_neon.h"
11496
11497Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
11498===================================================================
11499--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
11500+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
11501@@ -3,7 +3,8 @@
11502
11503 /* { dg-do assemble } */
11504 /* { dg-require-effective-target arm_neon_ok } */
11505-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11506+/* { dg-options "-save-temps -O0" } */
11507+/* { dg-add-options arm_neon } */
11508
11509 #include "arm_neon.h"
11510
11511Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
11512===================================================================
11513--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
11514+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
11515@@ -3,7 +3,8 @@
11516
11517 /* { dg-do assemble } */
11518 /* { dg-require-effective-target arm_neon_ok } */
11519-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11520+/* { dg-options "-save-temps -O0" } */
11521+/* { dg-add-options arm_neon } */
11522
11523 #include "arm_neon.h"
11524
11525Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
11526===================================================================
11527--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
11528+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
11529@@ -3,7 +3,8 @@
11530
11531 /* { dg-do assemble } */
11532 /* { dg-require-effective-target arm_neon_ok } */
11533-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11534+/* { dg-options "-save-temps -O0" } */
11535+/* { dg-add-options arm_neon } */
11536
11537 #include "arm_neon.h"
11538
11539Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
11540===================================================================
11541--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
11542+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
11543@@ -3,7 +3,8 @@
11544
11545 /* { dg-do assemble } */
11546 /* { dg-require-effective-target arm_neon_ok } */
11547-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11548+/* { dg-options "-save-temps -O0" } */
11549+/* { dg-add-options arm_neon } */
11550
11551 #include "arm_neon.h"
11552
11553Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
11554===================================================================
11555--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
11556+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
11557@@ -3,7 +3,8 @@
11558
11559 /* { dg-do assemble } */
11560 /* { dg-require-effective-target arm_neon_ok } */
11561-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11562+/* { dg-options "-save-temps -O0" } */
11563+/* { dg-add-options arm_neon } */
11564
11565 #include "arm_neon.h"
11566
11567Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
11568===================================================================
11569--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
11570+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
11571@@ -3,7 +3,8 @@
11572
11573 /* { dg-do assemble } */
11574 /* { dg-require-effective-target arm_neon_ok } */
11575-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11576+/* { dg-options "-save-temps -O0" } */
11577+/* { dg-add-options arm_neon } */
11578
11579 #include "arm_neon.h"
11580
11581Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
11582===================================================================
11583--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
11584+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
11585@@ -3,7 +3,8 @@
11586
11587 /* { dg-do assemble } */
11588 /* { dg-require-effective-target arm_neon_ok } */
11589-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11590+/* { dg-options "-save-temps -O0" } */
11591+/* { dg-add-options arm_neon } */
11592
11593 #include "arm_neon.h"
11594
11595Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
11596===================================================================
11597--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
11598+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
11599@@ -3,7 +3,8 @@
11600
11601 /* { dg-do assemble } */
11602 /* { dg-require-effective-target arm_neon_ok } */
11603-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11604+/* { dg-options "-save-temps -O0" } */
11605+/* { dg-add-options arm_neon } */
11606
11607 #include "arm_neon.h"
11608
11609Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
11610===================================================================
11611--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
11612+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
11613@@ -3,7 +3,8 @@
11614
11615 /* { dg-do assemble } */
11616 /* { dg-require-effective-target arm_neon_ok } */
11617-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11618+/* { dg-options "-save-temps -O0" } */
11619+/* { dg-add-options arm_neon } */
11620
11621 #include "arm_neon.h"
11622
11623Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
11624===================================================================
11625--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
11626+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
11627@@ -3,7 +3,8 @@
11628
11629 /* { dg-do assemble } */
11630 /* { dg-require-effective-target arm_neon_ok } */
11631-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11632+/* { dg-options "-save-temps -O0" } */
11633+/* { dg-add-options arm_neon } */
11634
11635 #include "arm_neon.h"
11636
11637Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
11638===================================================================
11639--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
11640+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
11641@@ -3,7 +3,8 @@
11642
11643 /* { dg-do assemble } */
11644 /* { dg-require-effective-target arm_neon_ok } */
11645-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11646+/* { dg-options "-save-temps -O0" } */
11647+/* { dg-add-options arm_neon } */
11648
11649 #include "arm_neon.h"
11650
11651Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
11652===================================================================
11653--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
11654+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
11655@@ -3,7 +3,8 @@
11656
11657 /* { dg-do assemble } */
11658 /* { dg-require-effective-target arm_neon_ok } */
11659-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11660+/* { dg-options "-save-temps -O0" } */
11661+/* { dg-add-options arm_neon } */
11662
11663 #include "arm_neon.h"
11664
11665Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
11666===================================================================
11667--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
11668+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
11669@@ -3,7 +3,8 @@
11670
11671 /* { dg-do assemble } */
11672 /* { dg-require-effective-target arm_neon_ok } */
11673-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11674+/* { dg-options "-save-temps -O0" } */
11675+/* { dg-add-options arm_neon } */
11676
11677 #include "arm_neon.h"
11678
11679Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
11680===================================================================
11681--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
11682+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
11683@@ -3,7 +3,8 @@
11684
11685 /* { dg-do assemble } */
11686 /* { dg-require-effective-target arm_neon_ok } */
11687-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11688+/* { dg-options "-save-temps -O0" } */
11689+/* { dg-add-options arm_neon } */
11690
11691 #include "arm_neon.h"
11692
11693Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
11694===================================================================
11695--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
11696+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
11697@@ -3,7 +3,8 @@
11698
11699 /* { dg-do assemble } */
11700 /* { dg-require-effective-target arm_neon_ok } */
11701-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11702+/* { dg-options "-save-temps -O0" } */
11703+/* { dg-add-options arm_neon } */
11704
11705 #include "arm_neon.h"
11706
11707Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
11708===================================================================
11709--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
11710+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
11711@@ -3,7 +3,8 @@
11712
11713 /* { dg-do assemble } */
11714 /* { dg-require-effective-target arm_neon_ok } */
11715-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11716+/* { dg-options "-save-temps -O0" } */
11717+/* { dg-add-options arm_neon } */
11718
11719 #include "arm_neon.h"
11720
11721Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
11722===================================================================
11723--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
11724+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
11725@@ -3,7 +3,8 @@
11726
11727 /* { dg-do assemble } */
11728 /* { dg-require-effective-target arm_neon_ok } */
11729-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11730+/* { dg-options "-save-temps -O0" } */
11731+/* { dg-add-options arm_neon } */
11732
11733 #include "arm_neon.h"
11734
11735Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
11736===================================================================
11737--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
11738+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
11739@@ -3,7 +3,8 @@
11740
11741 /* { dg-do assemble } */
11742 /* { dg-require-effective-target arm_neon_ok } */
11743-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11744+/* { dg-options "-save-temps -O0" } */
11745+/* { dg-add-options arm_neon } */
11746
11747 #include "arm_neon.h"
11748
11749Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
11750===================================================================
11751--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
11752+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
11753@@ -3,7 +3,8 @@
11754
11755 /* { dg-do assemble } */
11756 /* { dg-require-effective-target arm_neon_ok } */
11757-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11758+/* { dg-options "-save-temps -O0" } */
11759+/* { dg-add-options arm_neon } */
11760
11761 #include "arm_neon.h"
11762
11763Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
11764===================================================================
11765--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
11766+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
11767@@ -3,7 +3,8 @@
11768
11769 /* { dg-do assemble } */
11770 /* { dg-require-effective-target arm_neon_ok } */
11771-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11772+/* { dg-options "-save-temps -O0" } */
11773+/* { dg-add-options arm_neon } */
11774
11775 #include "arm_neon.h"
11776
11777Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
11778===================================================================
11779--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
11780+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
11781@@ -3,7 +3,8 @@
11782
11783 /* { dg-do assemble } */
11784 /* { dg-require-effective-target arm_neon_ok } */
11785-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11786+/* { dg-options "-save-temps -O0" } */
11787+/* { dg-add-options arm_neon } */
11788
11789 #include "arm_neon.h"
11790
11791Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
11792===================================================================
11793--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
11794+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
11795@@ -3,7 +3,8 @@
11796
11797 /* { dg-do assemble } */
11798 /* { dg-require-effective-target arm_neon_ok } */
11799-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11800+/* { dg-options "-save-temps -O0" } */
11801+/* { dg-add-options arm_neon } */
11802
11803 #include "arm_neon.h"
11804
11805Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
11806===================================================================
11807--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
11808+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
11809@@ -3,7 +3,8 @@
11810
11811 /* { dg-do assemble } */
11812 /* { dg-require-effective-target arm_neon_ok } */
11813-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11814+/* { dg-options "-save-temps -O0" } */
11815+/* { dg-add-options arm_neon } */
11816
11817 #include "arm_neon.h"
11818
11819Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
11820===================================================================
11821--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
11822+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
11823@@ -3,7 +3,8 @@
11824
11825 /* { dg-do assemble } */
11826 /* { dg-require-effective-target arm_neon_ok } */
11827-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11828+/* { dg-options "-save-temps -O0" } */
11829+/* { dg-add-options arm_neon } */
11830
11831 #include "arm_neon.h"
11832
11833Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
11834===================================================================
11835--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
11836+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
11837@@ -3,7 +3,8 @@
11838
11839 /* { dg-do assemble } */
11840 /* { dg-require-effective-target arm_neon_ok } */
11841-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11842+/* { dg-options "-save-temps -O0" } */
11843+/* { dg-add-options arm_neon } */
11844
11845 #include "arm_neon.h"
11846
11847Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
11848===================================================================
11849--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
11850+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
11851@@ -3,7 +3,8 @@
11852
11853 /* { dg-do assemble } */
11854 /* { dg-require-effective-target arm_neon_ok } */
11855-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11856+/* { dg-options "-save-temps -O0" } */
11857+/* { dg-add-options arm_neon } */
11858
11859 #include "arm_neon.h"
11860
11861Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
11862===================================================================
11863--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
11864+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
11865@@ -3,7 +3,8 @@
11866
11867 /* { dg-do assemble } */
11868 /* { dg-require-effective-target arm_neon_ok } */
11869-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11870+/* { dg-options "-save-temps -O0" } */
11871+/* { dg-add-options arm_neon } */
11872
11873 #include "arm_neon.h"
11874
11875Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
11876===================================================================
11877--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
11878+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
11879@@ -3,7 +3,8 @@
11880
11881 /* { dg-do assemble } */
11882 /* { dg-require-effective-target arm_neon_ok } */
11883-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11884+/* { dg-options "-save-temps -O0" } */
11885+/* { dg-add-options arm_neon } */
11886
11887 #include "arm_neon.h"
11888
11889Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
11890===================================================================
11891--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
11892+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
11893@@ -3,7 +3,8 @@
11894
11895 /* { dg-do assemble } */
11896 /* { dg-require-effective-target arm_neon_ok } */
11897-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11898+/* { dg-options "-save-temps -O0" } */
11899+/* { dg-add-options arm_neon } */
11900
11901 #include "arm_neon.h"
11902
11903Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
11904===================================================================
11905--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
11906+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
11907@@ -3,7 +3,8 @@
11908
11909 /* { dg-do assemble } */
11910 /* { dg-require-effective-target arm_neon_ok } */
11911-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11912+/* { dg-options "-save-temps -O0" } */
11913+/* { dg-add-options arm_neon } */
11914
11915 #include "arm_neon.h"
11916
11917Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
11918===================================================================
11919--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
11920+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
11921@@ -3,7 +3,8 @@
11922
11923 /* { dg-do assemble } */
11924 /* { dg-require-effective-target arm_neon_ok } */
11925-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11926+/* { dg-options "-save-temps -O0" } */
11927+/* { dg-add-options arm_neon } */
11928
11929 #include "arm_neon.h"
11930
11931Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
11932===================================================================
11933--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
11934+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
11935@@ -3,7 +3,8 @@
11936
11937 /* { dg-do assemble } */
11938 /* { dg-require-effective-target arm_neon_ok } */
11939-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11940+/* { dg-options "-save-temps -O0" } */
11941+/* { dg-add-options arm_neon } */
11942
11943 #include "arm_neon.h"
11944
11945Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
11946===================================================================
11947--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
11948+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
11949@@ -3,7 +3,8 @@
11950
11951 /* { dg-do assemble } */
11952 /* { dg-require-effective-target arm_neon_ok } */
11953-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11954+/* { dg-options "-save-temps -O0" } */
11955+/* { dg-add-options arm_neon } */
11956
11957 #include "arm_neon.h"
11958
11959Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
11960===================================================================
11961--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
11962+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
11963@@ -3,7 +3,8 @@
11964
11965 /* { dg-do assemble } */
11966 /* { dg-require-effective-target arm_neon_ok } */
11967-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11968+/* { dg-options "-save-temps -O0" } */
11969+/* { dg-add-options arm_neon } */
11970
11971 #include "arm_neon.h"
11972
11973Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
11974===================================================================
11975--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
11976+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
11977@@ -3,7 +3,8 @@
11978
11979 /* { dg-do assemble } */
11980 /* { dg-require-effective-target arm_neon_ok } */
11981-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11982+/* { dg-options "-save-temps -O0" } */
11983+/* { dg-add-options arm_neon } */
11984
11985 #include "arm_neon.h"
11986
11987Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
11988===================================================================
11989--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
11990+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
11991@@ -3,7 +3,8 @@
11992
11993 /* { dg-do assemble } */
11994 /* { dg-require-effective-target arm_neon_ok } */
11995-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
11996+/* { dg-options "-save-temps -O0" } */
11997+/* { dg-add-options arm_neon } */
11998
11999 #include "arm_neon.h"
12000
12001Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
12002===================================================================
12003--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
12004+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
12005@@ -3,7 +3,8 @@
12006
12007 /* { dg-do assemble } */
12008 /* { dg-require-effective-target arm_neon_ok } */
12009-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12010+/* { dg-options "-save-temps -O0" } */
12011+/* { dg-add-options arm_neon } */
12012
12013 #include "arm_neon.h"
12014
12015Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
12016===================================================================
12017--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
12018+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
12019@@ -3,7 +3,8 @@
12020
12021 /* { dg-do assemble } */
12022 /* { dg-require-effective-target arm_neon_ok } */
12023-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12024+/* { dg-options "-save-temps -O0" } */
12025+/* { dg-add-options arm_neon } */
12026
12027 #include "arm_neon.h"
12028
12029Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
12030===================================================================
12031--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
12032+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
12033@@ -3,7 +3,8 @@
12034
12035 /* { dg-do assemble } */
12036 /* { dg-require-effective-target arm_neon_ok } */
12037-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12038+/* { dg-options "-save-temps -O0" } */
12039+/* { dg-add-options arm_neon } */
12040
12041 #include "arm_neon.h"
12042
12043Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
12044===================================================================
12045--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
12046+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
12047@@ -3,7 +3,8 @@
12048
12049 /* { dg-do assemble } */
12050 /* { dg-require-effective-target arm_neon_ok } */
12051-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12052+/* { dg-options "-save-temps -O0" } */
12053+/* { dg-add-options arm_neon } */
12054
12055 #include "arm_neon.h"
12056
12057Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
12058===================================================================
12059--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
12060+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
12061@@ -3,7 +3,8 @@
12062
12063 /* { dg-do assemble } */
12064 /* { dg-require-effective-target arm_neon_ok } */
12065-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12066+/* { dg-options "-save-temps -O0" } */
12067+/* { dg-add-options arm_neon } */
12068
12069 #include "arm_neon.h"
12070
12071Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
12072===================================================================
12073--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
12074+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
12075@@ -3,7 +3,8 @@
12076
12077 /* { dg-do assemble } */
12078 /* { dg-require-effective-target arm_neon_ok } */
12079-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12080+/* { dg-options "-save-temps -O0" } */
12081+/* { dg-add-options arm_neon } */
12082
12083 #include "arm_neon.h"
12084
12085Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
12086===================================================================
12087--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
12088+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
12089@@ -3,7 +3,8 @@
12090
12091 /* { dg-do assemble } */
12092 /* { dg-require-effective-target arm_neon_ok } */
12093-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12094+/* { dg-options "-save-temps -O0" } */
12095+/* { dg-add-options arm_neon } */
12096
12097 #include "arm_neon.h"
12098
12099Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
12100===================================================================
12101--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
12102+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
12103@@ -3,7 +3,8 @@
12104
12105 /* { dg-do assemble } */
12106 /* { dg-require-effective-target arm_neon_ok } */
12107-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12108+/* { dg-options "-save-temps -O0" } */
12109+/* { dg-add-options arm_neon } */
12110
12111 #include "arm_neon.h"
12112
12113Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
12114===================================================================
12115--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
12116+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
12117@@ -3,7 +3,8 @@
12118
12119 /* { dg-do assemble } */
12120 /* { dg-require-effective-target arm_neon_ok } */
12121-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12122+/* { dg-options "-save-temps -O0" } */
12123+/* { dg-add-options arm_neon } */
12124
12125 #include "arm_neon.h"
12126
12127Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
12128===================================================================
12129--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
12130+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
12131@@ -3,7 +3,8 @@
12132
12133 /* { dg-do assemble } */
12134 /* { dg-require-effective-target arm_neon_ok } */
12135-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12136+/* { dg-options "-save-temps -O0" } */
12137+/* { dg-add-options arm_neon } */
12138
12139 #include "arm_neon.h"
12140
12141Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
12142===================================================================
12143--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
12144+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
12145@@ -3,7 +3,8 @@
12146
12147 /* { dg-do assemble } */
12148 /* { dg-require-effective-target arm_neon_ok } */
12149-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12150+/* { dg-options "-save-temps -O0" } */
12151+/* { dg-add-options arm_neon } */
12152
12153 #include "arm_neon.h"
12154
12155Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
12156===================================================================
12157--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
12158+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
12159@@ -3,7 +3,8 @@
12160
12161 /* { dg-do assemble } */
12162 /* { dg-require-effective-target arm_neon_ok } */
12163-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12164+/* { dg-options "-save-temps -O0" } */
12165+/* { dg-add-options arm_neon } */
12166
12167 #include "arm_neon.h"
12168
12169Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
12170===================================================================
12171--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
12172+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
12173@@ -3,7 +3,8 @@
12174
12175 /* { dg-do assemble } */
12176 /* { dg-require-effective-target arm_neon_ok } */
12177-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12178+/* { dg-options "-save-temps -O0" } */
12179+/* { dg-add-options arm_neon } */
12180
12181 #include "arm_neon.h"
12182
12183Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
12184===================================================================
12185--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
12186+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
12187@@ -3,7 +3,8 @@
12188
12189 /* { dg-do assemble } */
12190 /* { dg-require-effective-target arm_neon_ok } */
12191-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12192+/* { dg-options "-save-temps -O0" } */
12193+/* { dg-add-options arm_neon } */
12194
12195 #include "arm_neon.h"
12196
12197Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
12198===================================================================
12199--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
12200+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
12201@@ -3,7 +3,8 @@
12202
12203 /* { dg-do assemble } */
12204 /* { dg-require-effective-target arm_neon_ok } */
12205-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12206+/* { dg-options "-save-temps -O0" } */
12207+/* { dg-add-options arm_neon } */
12208
12209 #include "arm_neon.h"
12210
12211Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
12212===================================================================
12213--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
12214+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
12215@@ -3,7 +3,8 @@
12216
12217 /* { dg-do assemble } */
12218 /* { dg-require-effective-target arm_neon_ok } */
12219-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12220+/* { dg-options "-save-temps -O0" } */
12221+/* { dg-add-options arm_neon } */
12222
12223 #include "arm_neon.h"
12224
12225Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
12226===================================================================
12227--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
12228+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
12229@@ -3,7 +3,8 @@
12230
12231 /* { dg-do assemble } */
12232 /* { dg-require-effective-target arm_neon_ok } */
12233-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12234+/* { dg-options "-save-temps -O0" } */
12235+/* { dg-add-options arm_neon } */
12236
12237 #include "arm_neon.h"
12238
12239Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
12240===================================================================
12241--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
12242+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
12243@@ -3,7 +3,8 @@
12244
12245 /* { dg-do assemble } */
12246 /* { dg-require-effective-target arm_neon_ok } */
12247-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12248+/* { dg-options "-save-temps -O0" } */
12249+/* { dg-add-options arm_neon } */
12250
12251 #include "arm_neon.h"
12252
12253Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
12254===================================================================
12255--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
12256+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
12257@@ -3,7 +3,8 @@
12258
12259 /* { dg-do assemble } */
12260 /* { dg-require-effective-target arm_neon_ok } */
12261-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12262+/* { dg-options "-save-temps -O0" } */
12263+/* { dg-add-options arm_neon } */
12264
12265 #include "arm_neon.h"
12266
12267Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
12268===================================================================
12269--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
12270+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
12271@@ -3,7 +3,8 @@
12272
12273 /* { dg-do assemble } */
12274 /* { dg-require-effective-target arm_neon_ok } */
12275-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12276+/* { dg-options "-save-temps -O0" } */
12277+/* { dg-add-options arm_neon } */
12278
12279 #include "arm_neon.h"
12280
12281Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
12282===================================================================
12283--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
12284+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
12285@@ -3,7 +3,8 @@
12286
12287 /* { dg-do assemble } */
12288 /* { dg-require-effective-target arm_neon_ok } */
12289-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12290+/* { dg-options "-save-temps -O0" } */
12291+/* { dg-add-options arm_neon } */
12292
12293 #include "arm_neon.h"
12294
12295Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
12296===================================================================
12297--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
12298+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
12299@@ -3,7 +3,8 @@
12300
12301 /* { dg-do assemble } */
12302 /* { dg-require-effective-target arm_neon_ok } */
12303-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12304+/* { dg-options "-save-temps -O0" } */
12305+/* { dg-add-options arm_neon } */
12306
12307 #include "arm_neon.h"
12308
12309Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
12310===================================================================
12311--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
12312+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
12313@@ -3,7 +3,8 @@
12314
12315 /* { dg-do assemble } */
12316 /* { dg-require-effective-target arm_neon_ok } */
12317-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12318+/* { dg-options "-save-temps -O0" } */
12319+/* { dg-add-options arm_neon } */
12320
12321 #include "arm_neon.h"
12322
12323Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
12324===================================================================
12325--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
12326+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
12327@@ -3,7 +3,8 @@
12328
12329 /* { dg-do assemble } */
12330 /* { dg-require-effective-target arm_neon_ok } */
12331-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12332+/* { dg-options "-save-temps -O0" } */
12333+/* { dg-add-options arm_neon } */
12334
12335 #include "arm_neon.h"
12336
12337Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
12338===================================================================
12339--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
12340+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
12341@@ -3,7 +3,8 @@
12342
12343 /* { dg-do assemble } */
12344 /* { dg-require-effective-target arm_neon_ok } */
12345-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12346+/* { dg-options "-save-temps -O0" } */
12347+/* { dg-add-options arm_neon } */
12348
12349 #include "arm_neon.h"
12350
12351Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
12352===================================================================
12353--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
12354+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
12355@@ -3,7 +3,8 @@
12356
12357 /* { dg-do assemble } */
12358 /* { dg-require-effective-target arm_neon_ok } */
12359-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12360+/* { dg-options "-save-temps -O0" } */
12361+/* { dg-add-options arm_neon } */
12362
12363 #include "arm_neon.h"
12364
12365Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
12366===================================================================
12367--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
12368+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
12369@@ -3,7 +3,8 @@
12370
12371 /* { dg-do assemble } */
12372 /* { dg-require-effective-target arm_neon_ok } */
12373-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12374+/* { dg-options "-save-temps -O0" } */
12375+/* { dg-add-options arm_neon } */
12376
12377 #include "arm_neon.h"
12378
12379Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
12380===================================================================
12381--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
12382+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
12383@@ -3,7 +3,8 @@
12384
12385 /* { dg-do assemble } */
12386 /* { dg-require-effective-target arm_neon_ok } */
12387-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12388+/* { dg-options "-save-temps -O0" } */
12389+/* { dg-add-options arm_neon } */
12390
12391 #include "arm_neon.h"
12392
12393Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
12394===================================================================
12395--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
12396+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
12397@@ -3,7 +3,8 @@
12398
12399 /* { dg-do assemble } */
12400 /* { dg-require-effective-target arm_neon_ok } */
12401-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12402+/* { dg-options "-save-temps -O0" } */
12403+/* { dg-add-options arm_neon } */
12404
12405 #include "arm_neon.h"
12406
12407Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
12408===================================================================
12409--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
12410+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
12411@@ -3,7 +3,8 @@
12412
12413 /* { dg-do assemble } */
12414 /* { dg-require-effective-target arm_neon_ok } */
12415-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12416+/* { dg-options "-save-temps -O0" } */
12417+/* { dg-add-options arm_neon } */
12418
12419 #include "arm_neon.h"
12420
12421Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
12422===================================================================
12423--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
12424+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
12425@@ -3,7 +3,8 @@
12426
12427 /* { dg-do assemble } */
12428 /* { dg-require-effective-target arm_neon_ok } */
12429-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12430+/* { dg-options "-save-temps -O0" } */
12431+/* { dg-add-options arm_neon } */
12432
12433 #include "arm_neon.h"
12434
12435Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
12436===================================================================
12437--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
12438+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
12439@@ -3,7 +3,8 @@
12440
12441 /* { dg-do assemble } */
12442 /* { dg-require-effective-target arm_neon_ok } */
12443-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12444+/* { dg-options "-save-temps -O0" } */
12445+/* { dg-add-options arm_neon } */
12446
12447 #include "arm_neon.h"
12448
12449Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
12450===================================================================
12451--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
12452+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
12453@@ -3,7 +3,8 @@
12454
12455 /* { dg-do assemble } */
12456 /* { dg-require-effective-target arm_neon_ok } */
12457-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12458+/* { dg-options "-save-temps -O0" } */
12459+/* { dg-add-options arm_neon } */
12460
12461 #include "arm_neon.h"
12462
12463Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
12464===================================================================
12465--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
12466+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
12467@@ -3,7 +3,8 @@
12468
12469 /* { dg-do assemble } */
12470 /* { dg-require-effective-target arm_neon_ok } */
12471-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12472+/* { dg-options "-save-temps -O0" } */
12473+/* { dg-add-options arm_neon } */
12474
12475 #include "arm_neon.h"
12476
12477Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
12478===================================================================
12479--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
12480+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
12481@@ -3,7 +3,8 @@
12482
12483 /* { dg-do assemble } */
12484 /* { dg-require-effective-target arm_neon_ok } */
12485-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12486+/* { dg-options "-save-temps -O0" } */
12487+/* { dg-add-options arm_neon } */
12488
12489 #include "arm_neon.h"
12490
12491Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
12492===================================================================
12493--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
12494+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
12495@@ -3,7 +3,8 @@
12496
12497 /* { dg-do assemble } */
12498 /* { dg-require-effective-target arm_neon_ok } */
12499-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12500+/* { dg-options "-save-temps -O0" } */
12501+/* { dg-add-options arm_neon } */
12502
12503 #include "arm_neon.h"
12504
12505Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
12506===================================================================
12507--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
12508+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
12509@@ -3,7 +3,8 @@
12510
12511 /* { dg-do assemble } */
12512 /* { dg-require-effective-target arm_neon_ok } */
12513-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12514+/* { dg-options "-save-temps -O0" } */
12515+/* { dg-add-options arm_neon } */
12516
12517 #include "arm_neon.h"
12518
12519Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
12520===================================================================
12521--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
12522+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
12523@@ -3,7 +3,8 @@
12524
12525 /* { dg-do assemble } */
12526 /* { dg-require-effective-target arm_neon_ok } */
12527-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12528+/* { dg-options "-save-temps -O0" } */
12529+/* { dg-add-options arm_neon } */
12530
12531 #include "arm_neon.h"
12532
12533Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
12534===================================================================
12535--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
12536+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
12537@@ -3,7 +3,8 @@
12538
12539 /* { dg-do assemble } */
12540 /* { dg-require-effective-target arm_neon_ok } */
12541-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12542+/* { dg-options "-save-temps -O0" } */
12543+/* { dg-add-options arm_neon } */
12544
12545 #include "arm_neon.h"
12546
12547Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
12548===================================================================
12549--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
12550+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
12551@@ -3,7 +3,8 @@
12552
12553 /* { dg-do assemble } */
12554 /* { dg-require-effective-target arm_neon_ok } */
12555-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12556+/* { dg-options "-save-temps -O0" } */
12557+/* { dg-add-options arm_neon } */
12558
12559 #include "arm_neon.h"
12560
12561Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
12562===================================================================
12563--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
12564+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
12565@@ -3,7 +3,8 @@
12566
12567 /* { dg-do assemble } */
12568 /* { dg-require-effective-target arm_neon_ok } */
12569-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12570+/* { dg-options "-save-temps -O0" } */
12571+/* { dg-add-options arm_neon } */
12572
12573 #include "arm_neon.h"
12574
12575Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
12576===================================================================
12577--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
12578+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
12579@@ -3,7 +3,8 @@
12580
12581 /* { dg-do assemble } */
12582 /* { dg-require-effective-target arm_neon_ok } */
12583-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12584+/* { dg-options "-save-temps -O0" } */
12585+/* { dg-add-options arm_neon } */
12586
12587 #include "arm_neon.h"
12588
12589Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
12590===================================================================
12591--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
12592+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
12593@@ -3,7 +3,8 @@
12594
12595 /* { dg-do assemble } */
12596 /* { dg-require-effective-target arm_neon_ok } */
12597-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12598+/* { dg-options "-save-temps -O0" } */
12599+/* { dg-add-options arm_neon } */
12600
12601 #include "arm_neon.h"
12602
12603Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
12604===================================================================
12605--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
12606+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
12607@@ -3,7 +3,8 @@
12608
12609 /* { dg-do assemble } */
12610 /* { dg-require-effective-target arm_neon_ok } */
12611-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12612+/* { dg-options "-save-temps -O0" } */
12613+/* { dg-add-options arm_neon } */
12614
12615 #include "arm_neon.h"
12616
12617Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
12618===================================================================
12619--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
12620+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
12621@@ -3,7 +3,8 @@
12622
12623 /* { dg-do assemble } */
12624 /* { dg-require-effective-target arm_neon_ok } */
12625-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12626+/* { dg-options "-save-temps -O0" } */
12627+/* { dg-add-options arm_neon } */
12628
12629 #include "arm_neon.h"
12630
12631Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
12632===================================================================
12633--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
12634+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
12635@@ -3,7 +3,8 @@
12636
12637 /* { dg-do assemble } */
12638 /* { dg-require-effective-target arm_neon_ok } */
12639-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12640+/* { dg-options "-save-temps -O0" } */
12641+/* { dg-add-options arm_neon } */
12642
12643 #include "arm_neon.h"
12644
12645Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
12646===================================================================
12647--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
12648+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
12649@@ -3,7 +3,8 @@
12650
12651 /* { dg-do assemble } */
12652 /* { dg-require-effective-target arm_neon_ok } */
12653-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12654+/* { dg-options "-save-temps -O0" } */
12655+/* { dg-add-options arm_neon } */
12656
12657 #include "arm_neon.h"
12658
12659Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
12660===================================================================
12661--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
12662+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
12663@@ -3,7 +3,8 @@
12664
12665 /* { dg-do assemble } */
12666 /* { dg-require-effective-target arm_neon_ok } */
12667-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12668+/* { dg-options "-save-temps -O0" } */
12669+/* { dg-add-options arm_neon } */
12670
12671 #include "arm_neon.h"
12672
12673Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
12674===================================================================
12675--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
12676+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
12677@@ -3,7 +3,8 @@
12678
12679 /* { dg-do assemble } */
12680 /* { dg-require-effective-target arm_neon_ok } */
12681-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12682+/* { dg-options "-save-temps -O0" } */
12683+/* { dg-add-options arm_neon } */
12684
12685 #include "arm_neon.h"
12686
12687Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
12688===================================================================
12689--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
12690+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
12691@@ -3,7 +3,8 @@
12692
12693 /* { dg-do assemble } */
12694 /* { dg-require-effective-target arm_neon_ok } */
12695-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12696+/* { dg-options "-save-temps -O0" } */
12697+/* { dg-add-options arm_neon } */
12698
12699 #include "arm_neon.h"
12700
12701Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
12702===================================================================
12703--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
12704+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
12705@@ -3,7 +3,8 @@
12706
12707 /* { dg-do assemble } */
12708 /* { dg-require-effective-target arm_neon_ok } */
12709-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12710+/* { dg-options "-save-temps -O0" } */
12711+/* { dg-add-options arm_neon } */
12712
12713 #include "arm_neon.h"
12714
12715Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
12716===================================================================
12717--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
12718+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
12719@@ -3,7 +3,8 @@
12720
12721 /* { dg-do assemble } */
12722 /* { dg-require-effective-target arm_neon_ok } */
12723-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12724+/* { dg-options "-save-temps -O0" } */
12725+/* { dg-add-options arm_neon } */
12726
12727 #include "arm_neon.h"
12728
12729Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
12730===================================================================
12731--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
12732+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
12733@@ -3,7 +3,8 @@
12734
12735 /* { dg-do assemble } */
12736 /* { dg-require-effective-target arm_neon_ok } */
12737-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12738+/* { dg-options "-save-temps -O0" } */
12739+/* { dg-add-options arm_neon } */
12740
12741 #include "arm_neon.h"
12742
12743Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
12744===================================================================
12745--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
12746+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
12747@@ -3,7 +3,8 @@
12748
12749 /* { dg-do assemble } */
12750 /* { dg-require-effective-target arm_neon_ok } */
12751-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12752+/* { dg-options "-save-temps -O0" } */
12753+/* { dg-add-options arm_neon } */
12754
12755 #include "arm_neon.h"
12756
12757Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
12758===================================================================
12759--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
12760+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
12761@@ -3,7 +3,8 @@
12762
12763 /* { dg-do assemble } */
12764 /* { dg-require-effective-target arm_neon_ok } */
12765-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12766+/* { dg-options "-save-temps -O0" } */
12767+/* { dg-add-options arm_neon } */
12768
12769 #include "arm_neon.h"
12770
12771Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
12772===================================================================
12773--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
12774+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
12775@@ -3,7 +3,8 @@
12776
12777 /* { dg-do assemble } */
12778 /* { dg-require-effective-target arm_neon_ok } */
12779-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12780+/* { dg-options "-save-temps -O0" } */
12781+/* { dg-add-options arm_neon } */
12782
12783 #include "arm_neon.h"
12784
12785Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
12786===================================================================
12787--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
12788+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
12789@@ -3,7 +3,8 @@
12790
12791 /* { dg-do assemble } */
12792 /* { dg-require-effective-target arm_neon_ok } */
12793-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12794+/* { dg-options "-save-temps -O0" } */
12795+/* { dg-add-options arm_neon } */
12796
12797 #include "arm_neon.h"
12798
12799Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
12800===================================================================
12801--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
12802+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
12803@@ -3,7 +3,8 @@
12804
12805 /* { dg-do assemble } */
12806 /* { dg-require-effective-target arm_neon_ok } */
12807-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12808+/* { dg-options "-save-temps -O0" } */
12809+/* { dg-add-options arm_neon } */
12810
12811 #include "arm_neon.h"
12812
12813Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
12814===================================================================
12815--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
12816+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
12817@@ -3,7 +3,8 @@
12818
12819 /* { dg-do assemble } */
12820 /* { dg-require-effective-target arm_neon_ok } */
12821-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12822+/* { dg-options "-save-temps -O0" } */
12823+/* { dg-add-options arm_neon } */
12824
12825 #include "arm_neon.h"
12826
12827Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
12828===================================================================
12829--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
12830+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
12831@@ -3,7 +3,8 @@
12832
12833 /* { dg-do assemble } */
12834 /* { dg-require-effective-target arm_neon_ok } */
12835-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12836+/* { dg-options "-save-temps -O0" } */
12837+/* { dg-add-options arm_neon } */
12838
12839 #include "arm_neon.h"
12840
12841Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
12842===================================================================
12843--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
12844+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
12845@@ -3,7 +3,8 @@
12846
12847 /* { dg-do assemble } */
12848 /* { dg-require-effective-target arm_neon_ok } */
12849-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12850+/* { dg-options "-save-temps -O0" } */
12851+/* { dg-add-options arm_neon } */
12852
12853 #include "arm_neon.h"
12854
12855Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
12856===================================================================
12857--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
12858+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
12859@@ -3,7 +3,8 @@
12860
12861 /* { dg-do assemble } */
12862 /* { dg-require-effective-target arm_neon_ok } */
12863-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12864+/* { dg-options "-save-temps -O0" } */
12865+/* { dg-add-options arm_neon } */
12866
12867 #include "arm_neon.h"
12868
12869Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
12870===================================================================
12871--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
12872+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
12873@@ -3,7 +3,8 @@
12874
12875 /* { dg-do assemble } */
12876 /* { dg-require-effective-target arm_neon_ok } */
12877-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12878+/* { dg-options "-save-temps -O0" } */
12879+/* { dg-add-options arm_neon } */
12880
12881 #include "arm_neon.h"
12882
12883Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
12884===================================================================
12885--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
12886+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
12887@@ -3,7 +3,8 @@
12888
12889 /* { dg-do assemble } */
12890 /* { dg-require-effective-target arm_neon_ok } */
12891-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12892+/* { dg-options "-save-temps -O0" } */
12893+/* { dg-add-options arm_neon } */
12894
12895 #include "arm_neon.h"
12896
12897Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
12898===================================================================
12899--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
12900+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
12901@@ -3,7 +3,8 @@
12902
12903 /* { dg-do assemble } */
12904 /* { dg-require-effective-target arm_neon_ok } */
12905-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12906+/* { dg-options "-save-temps -O0" } */
12907+/* { dg-add-options arm_neon } */
12908
12909 #include "arm_neon.h"
12910
12911Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
12912===================================================================
12913--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
12914+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
12915@@ -3,7 +3,8 @@
12916
12917 /* { dg-do assemble } */
12918 /* { dg-require-effective-target arm_neon_ok } */
12919-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12920+/* { dg-options "-save-temps -O0" } */
12921+/* { dg-add-options arm_neon } */
12922
12923 #include "arm_neon.h"
12924
12925Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
12926===================================================================
12927--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
12928+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
12929@@ -3,7 +3,8 @@
12930
12931 /* { dg-do assemble } */
12932 /* { dg-require-effective-target arm_neon_ok } */
12933-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12934+/* { dg-options "-save-temps -O0" } */
12935+/* { dg-add-options arm_neon } */
12936
12937 #include "arm_neon.h"
12938
12939Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
12940===================================================================
12941--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
12942+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
12943@@ -3,7 +3,8 @@
12944
12945 /* { dg-do assemble } */
12946 /* { dg-require-effective-target arm_neon_ok } */
12947-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12948+/* { dg-options "-save-temps -O0" } */
12949+/* { dg-add-options arm_neon } */
12950
12951 #include "arm_neon.h"
12952
12953Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
12954===================================================================
12955--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
12956+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
12957@@ -3,7 +3,8 @@
12958
12959 /* { dg-do assemble } */
12960 /* { dg-require-effective-target arm_neon_ok } */
12961-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12962+/* { dg-options "-save-temps -O0" } */
12963+/* { dg-add-options arm_neon } */
12964
12965 #include "arm_neon.h"
12966
12967Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
12968===================================================================
12969--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
12970+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
12971@@ -3,7 +3,8 @@
12972
12973 /* { dg-do assemble } */
12974 /* { dg-require-effective-target arm_neon_ok } */
12975-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12976+/* { dg-options "-save-temps -O0" } */
12977+/* { dg-add-options arm_neon } */
12978
12979 #include "arm_neon.h"
12980
12981Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
12982===================================================================
12983--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
12984+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
12985@@ -3,7 +3,8 @@
12986
12987 /* { dg-do assemble } */
12988 /* { dg-require-effective-target arm_neon_ok } */
12989-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
12990+/* { dg-options "-save-temps -O0" } */
12991+/* { dg-add-options arm_neon } */
12992
12993 #include "arm_neon.h"
12994
12995Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
12996===================================================================
12997--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
12998+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
12999@@ -3,7 +3,8 @@
13000
13001 /* { dg-do assemble } */
13002 /* { dg-require-effective-target arm_neon_ok } */
13003-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13004+/* { dg-options "-save-temps -O0" } */
13005+/* { dg-add-options arm_neon } */
13006
13007 #include "arm_neon.h"
13008
13009Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
13010===================================================================
13011--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
13012+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
13013@@ -3,7 +3,8 @@
13014
13015 /* { dg-do assemble } */
13016 /* { dg-require-effective-target arm_neon_ok } */
13017-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13018+/* { dg-options "-save-temps -O0" } */
13019+/* { dg-add-options arm_neon } */
13020
13021 #include "arm_neon.h"
13022
13023Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
13024===================================================================
13025--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
13026+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
13027@@ -3,7 +3,8 @@
13028
13029 /* { dg-do assemble } */
13030 /* { dg-require-effective-target arm_neon_ok } */
13031-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13032+/* { dg-options "-save-temps -O0" } */
13033+/* { dg-add-options arm_neon } */
13034
13035 #include "arm_neon.h"
13036
13037Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
13038===================================================================
13039--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
13040+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
13041@@ -3,7 +3,8 @@
13042
13043 /* { dg-do assemble } */
13044 /* { dg-require-effective-target arm_neon_ok } */
13045-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13046+/* { dg-options "-save-temps -O0" } */
13047+/* { dg-add-options arm_neon } */
13048
13049 #include "arm_neon.h"
13050
13051Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
13052===================================================================
13053--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
13054+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
13055@@ -3,7 +3,8 @@
13056
13057 /* { dg-do assemble } */
13058 /* { dg-require-effective-target arm_neon_ok } */
13059-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13060+/* { dg-options "-save-temps -O0" } */
13061+/* { dg-add-options arm_neon } */
13062
13063 #include "arm_neon.h"
13064
13065Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
13066===================================================================
13067--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
13068+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
13069@@ -3,7 +3,8 @@
13070
13071 /* { dg-do assemble } */
13072 /* { dg-require-effective-target arm_neon_ok } */
13073-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13074+/* { dg-options "-save-temps -O0" } */
13075+/* { dg-add-options arm_neon } */
13076
13077 #include "arm_neon.h"
13078
13079Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
13080===================================================================
13081--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
13082+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
13083@@ -3,7 +3,8 @@
13084
13085 /* { dg-do assemble } */
13086 /* { dg-require-effective-target arm_neon_ok } */
13087-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13088+/* { dg-options "-save-temps -O0" } */
13089+/* { dg-add-options arm_neon } */
13090
13091 #include "arm_neon.h"
13092
13093Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
13094===================================================================
13095--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
13096+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
13097@@ -3,7 +3,8 @@
13098
13099 /* { dg-do assemble } */
13100 /* { dg-require-effective-target arm_neon_ok } */
13101-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13102+/* { dg-options "-save-temps -O0" } */
13103+/* { dg-add-options arm_neon } */
13104
13105 #include "arm_neon.h"
13106
13107Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
13108===================================================================
13109--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
13110+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
13111@@ -3,7 +3,8 @@
13112
13113 /* { dg-do assemble } */
13114 /* { dg-require-effective-target arm_neon_ok } */
13115-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13116+/* { dg-options "-save-temps -O0" } */
13117+/* { dg-add-options arm_neon } */
13118
13119 #include "arm_neon.h"
13120
13121Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
13122===================================================================
13123--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
13124+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
13125@@ -3,7 +3,8 @@
13126
13127 /* { dg-do assemble } */
13128 /* { dg-require-effective-target arm_neon_ok } */
13129-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13130+/* { dg-options "-save-temps -O0" } */
13131+/* { dg-add-options arm_neon } */
13132
13133 #include "arm_neon.h"
13134
13135Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
13136===================================================================
13137--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
13138+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
13139@@ -3,7 +3,8 @@
13140
13141 /* { dg-do assemble } */
13142 /* { dg-require-effective-target arm_neon_ok } */
13143-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13144+/* { dg-options "-save-temps -O0" } */
13145+/* { dg-add-options arm_neon } */
13146
13147 #include "arm_neon.h"
13148
13149Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
13150===================================================================
13151--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
13152+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
13153@@ -3,7 +3,8 @@
13154
13155 /* { dg-do assemble } */
13156 /* { dg-require-effective-target arm_neon_ok } */
13157-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13158+/* { dg-options "-save-temps -O0" } */
13159+/* { dg-add-options arm_neon } */
13160
13161 #include "arm_neon.h"
13162
13163Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
13164===================================================================
13165--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
13166+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
13167@@ -3,7 +3,8 @@
13168
13169 /* { dg-do assemble } */
13170 /* { dg-require-effective-target arm_neon_ok } */
13171-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13172+/* { dg-options "-save-temps -O0" } */
13173+/* { dg-add-options arm_neon } */
13174
13175 #include "arm_neon.h"
13176
13177Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
13178===================================================================
13179--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
13180+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
13181@@ -3,7 +3,8 @@
13182
13183 /* { dg-do assemble } */
13184 /* { dg-require-effective-target arm_neon_ok } */
13185-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13186+/* { dg-options "-save-temps -O0" } */
13187+/* { dg-add-options arm_neon } */
13188
13189 #include "arm_neon.h"
13190
13191Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
13192===================================================================
13193--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
13194+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
13195@@ -3,7 +3,8 @@
13196
13197 /* { dg-do assemble } */
13198 /* { dg-require-effective-target arm_neon_ok } */
13199-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13200+/* { dg-options "-save-temps -O0" } */
13201+/* { dg-add-options arm_neon } */
13202
13203 #include "arm_neon.h"
13204
13205Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
13206===================================================================
13207--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
13208+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
13209@@ -3,7 +3,8 @@
13210
13211 /* { dg-do assemble } */
13212 /* { dg-require-effective-target arm_neon_ok } */
13213-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13214+/* { dg-options "-save-temps -O0" } */
13215+/* { dg-add-options arm_neon } */
13216
13217 #include "arm_neon.h"
13218
13219Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
13220===================================================================
13221--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
13222+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
13223@@ -3,7 +3,8 @@
13224
13225 /* { dg-do assemble } */
13226 /* { dg-require-effective-target arm_neon_ok } */
13227-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13228+/* { dg-options "-save-temps -O0" } */
13229+/* { dg-add-options arm_neon } */
13230
13231 #include "arm_neon.h"
13232
13233Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
13234===================================================================
13235--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
13236+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
13237@@ -3,7 +3,8 @@
13238
13239 /* { dg-do assemble } */
13240 /* { dg-require-effective-target arm_neon_ok } */
13241-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13242+/* { dg-options "-save-temps -O0" } */
13243+/* { dg-add-options arm_neon } */
13244
13245 #include "arm_neon.h"
13246
13247Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
13248===================================================================
13249--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
13250+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
13251@@ -3,7 +3,8 @@
13252
13253 /* { dg-do assemble } */
13254 /* { dg-require-effective-target arm_neon_ok } */
13255-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13256+/* { dg-options "-save-temps -O0" } */
13257+/* { dg-add-options arm_neon } */
13258
13259 #include "arm_neon.h"
13260
13261Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
13262===================================================================
13263--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
13264+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
13265@@ -3,7 +3,8 @@
13266
13267 /* { dg-do assemble } */
13268 /* { dg-require-effective-target arm_neon_ok } */
13269-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13270+/* { dg-options "-save-temps -O0" } */
13271+/* { dg-add-options arm_neon } */
13272
13273 #include "arm_neon.h"
13274
13275Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
13276===================================================================
13277--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
13278+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
13279@@ -3,7 +3,8 @@
13280
13281 /* { dg-do assemble } */
13282 /* { dg-require-effective-target arm_neon_ok } */
13283-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13284+/* { dg-options "-save-temps -O0" } */
13285+/* { dg-add-options arm_neon } */
13286
13287 #include "arm_neon.h"
13288
13289Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
13290===================================================================
13291--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
13292+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
13293@@ -3,7 +3,8 @@
13294
13295 /* { dg-do assemble } */
13296 /* { dg-require-effective-target arm_neon_ok } */
13297-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13298+/* { dg-options "-save-temps -O0" } */
13299+/* { dg-add-options arm_neon } */
13300
13301 #include "arm_neon.h"
13302
13303Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
13304===================================================================
13305--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
13306+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
13307@@ -3,7 +3,8 @@
13308
13309 /* { dg-do assemble } */
13310 /* { dg-require-effective-target arm_neon_ok } */
13311-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13312+/* { dg-options "-save-temps -O0" } */
13313+/* { dg-add-options arm_neon } */
13314
13315 #include "arm_neon.h"
13316
13317Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
13318===================================================================
13319--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
13320+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
13321@@ -3,7 +3,8 @@
13322
13323 /* { dg-do assemble } */
13324 /* { dg-require-effective-target arm_neon_ok } */
13325-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13326+/* { dg-options "-save-temps -O0" } */
13327+/* { dg-add-options arm_neon } */
13328
13329 #include "arm_neon.h"
13330
13331Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
13332===================================================================
13333--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
13334+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
13335@@ -3,7 +3,8 @@
13336
13337 /* { dg-do assemble } */
13338 /* { dg-require-effective-target arm_neon_ok } */
13339-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13340+/* { dg-options "-save-temps -O0" } */
13341+/* { dg-add-options arm_neon } */
13342
13343 #include "arm_neon.h"
13344
13345Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
13346===================================================================
13347--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
13348+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
13349@@ -3,7 +3,8 @@
13350
13351 /* { dg-do assemble } */
13352 /* { dg-require-effective-target arm_neon_ok } */
13353-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13354+/* { dg-options "-save-temps -O0" } */
13355+/* { dg-add-options arm_neon } */
13356
13357 #include "arm_neon.h"
13358
13359Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
13360===================================================================
13361--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
13362+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
13363@@ -3,7 +3,8 @@
13364
13365 /* { dg-do assemble } */
13366 /* { dg-require-effective-target arm_neon_ok } */
13367-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13368+/* { dg-options "-save-temps -O0" } */
13369+/* { dg-add-options arm_neon } */
13370
13371 #include "arm_neon.h"
13372
13373Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
13374===================================================================
13375--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
13376+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
13377@@ -3,7 +3,8 @@
13378
13379 /* { dg-do assemble } */
13380 /* { dg-require-effective-target arm_neon_ok } */
13381-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13382+/* { dg-options "-save-temps -O0" } */
13383+/* { dg-add-options arm_neon } */
13384
13385 #include "arm_neon.h"
13386
13387Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
13388===================================================================
13389--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
13390+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
13391@@ -3,7 +3,8 @@
13392
13393 /* { dg-do assemble } */
13394 /* { dg-require-effective-target arm_neon_ok } */
13395-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13396+/* { dg-options "-save-temps -O0" } */
13397+/* { dg-add-options arm_neon } */
13398
13399 #include "arm_neon.h"
13400
13401Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
13402===================================================================
13403--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
13404+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
13405@@ -3,7 +3,8 @@
13406
13407 /* { dg-do assemble } */
13408 /* { dg-require-effective-target arm_neon_ok } */
13409-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13410+/* { dg-options "-save-temps -O0" } */
13411+/* { dg-add-options arm_neon } */
13412
13413 #include "arm_neon.h"
13414
13415Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
13416===================================================================
13417--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
13418+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
13419@@ -3,7 +3,8 @@
13420
13421 /* { dg-do assemble } */
13422 /* { dg-require-effective-target arm_neon_ok } */
13423-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13424+/* { dg-options "-save-temps -O0" } */
13425+/* { dg-add-options arm_neon } */
13426
13427 #include "arm_neon.h"
13428
13429Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
13430===================================================================
13431--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
13432+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
13433@@ -3,7 +3,8 @@
13434
13435 /* { dg-do assemble } */
13436 /* { dg-require-effective-target arm_neon_ok } */
13437-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13438+/* { dg-options "-save-temps -O0" } */
13439+/* { dg-add-options arm_neon } */
13440
13441 #include "arm_neon.h"
13442
13443Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
13444===================================================================
13445--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
13446+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
13447@@ -3,7 +3,8 @@
13448
13449 /* { dg-do assemble } */
13450 /* { dg-require-effective-target arm_neon_ok } */
13451-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13452+/* { dg-options "-save-temps -O0" } */
13453+/* { dg-add-options arm_neon } */
13454
13455 #include "arm_neon.h"
13456
13457Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
13458===================================================================
13459--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
13460+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
13461@@ -3,7 +3,8 @@
13462
13463 /* { dg-do assemble } */
13464 /* { dg-require-effective-target arm_neon_ok } */
13465-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13466+/* { dg-options "-save-temps -O0" } */
13467+/* { dg-add-options arm_neon } */
13468
13469 #include "arm_neon.h"
13470
13471Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
13472===================================================================
13473--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
13474+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
13475@@ -3,7 +3,8 @@
13476
13477 /* { dg-do assemble } */
13478 /* { dg-require-effective-target arm_neon_ok } */
13479-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13480+/* { dg-options "-save-temps -O0" } */
13481+/* { dg-add-options arm_neon } */
13482
13483 #include "arm_neon.h"
13484
13485Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
13486===================================================================
13487--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
13488+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
13489@@ -3,7 +3,8 @@
13490
13491 /* { dg-do assemble } */
13492 /* { dg-require-effective-target arm_neon_ok } */
13493-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13494+/* { dg-options "-save-temps -O0" } */
13495+/* { dg-add-options arm_neon } */
13496
13497 #include "arm_neon.h"
13498
13499Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
13500===================================================================
13501--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
13502+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
13503@@ -3,7 +3,8 @@
13504
13505 /* { dg-do assemble } */
13506 /* { dg-require-effective-target arm_neon_ok } */
13507-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13508+/* { dg-options "-save-temps -O0" } */
13509+/* { dg-add-options arm_neon } */
13510
13511 #include "arm_neon.h"
13512
13513Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
13514===================================================================
13515--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
13516+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
13517@@ -3,7 +3,8 @@
13518
13519 /* { dg-do assemble } */
13520 /* { dg-require-effective-target arm_neon_ok } */
13521-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13522+/* { dg-options "-save-temps -O0" } */
13523+/* { dg-add-options arm_neon } */
13524
13525 #include "arm_neon.h"
13526
13527Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
13528===================================================================
13529--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
13530+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
13531@@ -3,7 +3,8 @@
13532
13533 /* { dg-do assemble } */
13534 /* { dg-require-effective-target arm_neon_ok } */
13535-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13536+/* { dg-options "-save-temps -O0" } */
13537+/* { dg-add-options arm_neon } */
13538
13539 #include "arm_neon.h"
13540
13541Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
13542===================================================================
13543--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
13544+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
13545@@ -3,7 +3,8 @@
13546
13547 /* { dg-do assemble } */
13548 /* { dg-require-effective-target arm_neon_ok } */
13549-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13550+/* { dg-options "-save-temps -O0" } */
13551+/* { dg-add-options arm_neon } */
13552
13553 #include "arm_neon.h"
13554
13555Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
13556===================================================================
13557--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
13558+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
13559@@ -3,7 +3,8 @@
13560
13561 /* { dg-do assemble } */
13562 /* { dg-require-effective-target arm_neon_ok } */
13563-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13564+/* { dg-options "-save-temps -O0" } */
13565+/* { dg-add-options arm_neon } */
13566
13567 #include "arm_neon.h"
13568
13569Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
13570===================================================================
13571--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
13572+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
13573@@ -3,7 +3,8 @@
13574
13575 /* { dg-do assemble } */
13576 /* { dg-require-effective-target arm_neon_ok } */
13577-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13578+/* { dg-options "-save-temps -O0" } */
13579+/* { dg-add-options arm_neon } */
13580
13581 #include "arm_neon.h"
13582
13583Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
13584===================================================================
13585--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
13586+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
13587@@ -3,7 +3,8 @@
13588
13589 /* { dg-do assemble } */
13590 /* { dg-require-effective-target arm_neon_ok } */
13591-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13592+/* { dg-options "-save-temps -O0" } */
13593+/* { dg-add-options arm_neon } */
13594
13595 #include "arm_neon.h"
13596
13597Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
13598===================================================================
13599--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
13600+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
13601@@ -3,7 +3,8 @@
13602
13603 /* { dg-do assemble } */
13604 /* { dg-require-effective-target arm_neon_ok } */
13605-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13606+/* { dg-options "-save-temps -O0" } */
13607+/* { dg-add-options arm_neon } */
13608
13609 #include "arm_neon.h"
13610
13611Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
13612===================================================================
13613--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
13614+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
13615@@ -3,7 +3,8 @@
13616
13617 /* { dg-do assemble } */
13618 /* { dg-require-effective-target arm_neon_ok } */
13619-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13620+/* { dg-options "-save-temps -O0" } */
13621+/* { dg-add-options arm_neon } */
13622
13623 #include "arm_neon.h"
13624
13625Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
13626===================================================================
13627--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
13628+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
13629@@ -3,7 +3,8 @@
13630
13631 /* { dg-do assemble } */
13632 /* { dg-require-effective-target arm_neon_ok } */
13633-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13634+/* { dg-options "-save-temps -O0" } */
13635+/* { dg-add-options arm_neon } */
13636
13637 #include "arm_neon.h"
13638
13639Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns16.c
13640===================================================================
13641--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorns16.c
13642+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns16.c
13643@@ -3,7 +3,8 @@
13644
13645 /* { dg-do assemble } */
13646 /* { dg-require-effective-target arm_neon_ok } */
13647-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13648+/* { dg-options "-save-temps -O0" } */
13649+/* { dg-add-options arm_neon } */
13650
13651 #include "arm_neon.h"
13652
13653Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns32.c
13654===================================================================
13655--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorns32.c
13656+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns32.c
13657@@ -3,7 +3,8 @@
13658
13659 /* { dg-do assemble } */
13660 /* { dg-require-effective-target arm_neon_ok } */
13661-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13662+/* { dg-options "-save-temps -O0" } */
13663+/* { dg-add-options arm_neon } */
13664
13665 #include "arm_neon.h"
13666
13667Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns64.c
13668===================================================================
13669--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorns64.c
13670+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns64.c
13671@@ -3,7 +3,8 @@
13672
13673 /* { dg-do assemble } */
13674 /* { dg-require-effective-target arm_neon_ok } */
13675-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13676+/* { dg-options "-save-temps -O0" } */
13677+/* { dg-add-options arm_neon } */
13678
13679 #include "arm_neon.h"
13680
13681Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns8.c
13682===================================================================
13683--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorns8.c
13684+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorns8.c
13685@@ -3,7 +3,8 @@
13686
13687 /* { dg-do assemble } */
13688 /* { dg-require-effective-target arm_neon_ok } */
13689-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13690+/* { dg-options "-save-temps -O0" } */
13691+/* { dg-add-options arm_neon } */
13692
13693 #include "arm_neon.h"
13694
13695Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu16.c
13696===================================================================
13697--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornu16.c
13698+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu16.c
13699@@ -3,7 +3,8 @@
13700
13701 /* { dg-do assemble } */
13702 /* { dg-require-effective-target arm_neon_ok } */
13703-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13704+/* { dg-options "-save-temps -O0" } */
13705+/* { dg-add-options arm_neon } */
13706
13707 #include "arm_neon.h"
13708
13709Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu32.c
13710===================================================================
13711--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornu32.c
13712+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu32.c
13713@@ -3,7 +3,8 @@
13714
13715 /* { dg-do assemble } */
13716 /* { dg-require-effective-target arm_neon_ok } */
13717-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13718+/* { dg-options "-save-temps -O0" } */
13719+/* { dg-add-options arm_neon } */
13720
13721 #include "arm_neon.h"
13722
13723Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu64.c
13724===================================================================
13725--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornu64.c
13726+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu64.c
13727@@ -3,7 +3,8 @@
13728
13729 /* { dg-do assemble } */
13730 /* { dg-require-effective-target arm_neon_ok } */
13731-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13732+/* { dg-options "-save-temps -O0" } */
13733+/* { dg-add-options arm_neon } */
13734
13735 #include "arm_neon.h"
13736
13737Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu8.c
13738===================================================================
13739--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vornu8.c
13740+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vornu8.c
13741@@ -3,7 +3,8 @@
13742
13743 /* { dg-do assemble } */
13744 /* { dg-require-effective-target arm_neon_ok } */
13745-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13746+/* { dg-options "-save-temps -O0" } */
13747+/* { dg-add-options arm_neon } */
13748
13749 #include "arm_neon.h"
13750
13751Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
13752===================================================================
13753--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
13754+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
13755@@ -3,7 +3,8 @@
13756
13757 /* { dg-do assemble } */
13758 /* { dg-require-effective-target arm_neon_ok } */
13759-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13760+/* { dg-options "-save-temps -O0" } */
13761+/* { dg-add-options arm_neon } */
13762
13763 #include "arm_neon.h"
13764
13765Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
13766===================================================================
13767--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
13768+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
13769@@ -3,7 +3,8 @@
13770
13771 /* { dg-do assemble } */
13772 /* { dg-require-effective-target arm_neon_ok } */
13773-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13774+/* { dg-options "-save-temps -O0" } */
13775+/* { dg-add-options arm_neon } */
13776
13777 #include "arm_neon.h"
13778
13779Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
13780===================================================================
13781--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
13782+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
13783@@ -3,7 +3,8 @@
13784
13785 /* { dg-do assemble } */
13786 /* { dg-require-effective-target arm_neon_ok } */
13787-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13788+/* { dg-options "-save-temps -O0" } */
13789+/* { dg-add-options arm_neon } */
13790
13791 #include "arm_neon.h"
13792
13793Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
13794===================================================================
13795--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
13796+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
13797@@ -3,7 +3,8 @@
13798
13799 /* { dg-do assemble } */
13800 /* { dg-require-effective-target arm_neon_ok } */
13801-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13802+/* { dg-options "-save-temps -O0" } */
13803+/* { dg-add-options arm_neon } */
13804
13805 #include "arm_neon.h"
13806
13807Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
13808===================================================================
13809--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
13810+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
13811@@ -3,7 +3,8 @@
13812
13813 /* { dg-do assemble } */
13814 /* { dg-require-effective-target arm_neon_ok } */
13815-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13816+/* { dg-options "-save-temps -O0" } */
13817+/* { dg-add-options arm_neon } */
13818
13819 #include "arm_neon.h"
13820
13821Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
13822===================================================================
13823--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
13824+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
13825@@ -3,7 +3,8 @@
13826
13827 /* { dg-do assemble } */
13828 /* { dg-require-effective-target arm_neon_ok } */
13829-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13830+/* { dg-options "-save-temps -O0" } */
13831+/* { dg-add-options arm_neon } */
13832
13833 #include "arm_neon.h"
13834
13835Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
13836===================================================================
13837--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
13838+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
13839@@ -3,7 +3,8 @@
13840
13841 /* { dg-do assemble } */
13842 /* { dg-require-effective-target arm_neon_ok } */
13843-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13844+/* { dg-options "-save-temps -O0" } */
13845+/* { dg-add-options arm_neon } */
13846
13847 #include "arm_neon.h"
13848
13849Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
13850===================================================================
13851--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
13852+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
13853@@ -3,7 +3,8 @@
13854
13855 /* { dg-do assemble } */
13856 /* { dg-require-effective-target arm_neon_ok } */
13857-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13858+/* { dg-options "-save-temps -O0" } */
13859+/* { dg-add-options arm_neon } */
13860
13861 #include "arm_neon.h"
13862
13863Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
13864===================================================================
13865--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
13866+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
13867@@ -3,7 +3,8 @@
13868
13869 /* { dg-do assemble } */
13870 /* { dg-require-effective-target arm_neon_ok } */
13871-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13872+/* { dg-options "-save-temps -O0" } */
13873+/* { dg-add-options arm_neon } */
13874
13875 #include "arm_neon.h"
13876
13877Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
13878===================================================================
13879--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
13880+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
13881@@ -3,7 +3,8 @@
13882
13883 /* { dg-do assemble } */
13884 /* { dg-require-effective-target arm_neon_ok } */
13885-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13886+/* { dg-options "-save-temps -O0" } */
13887+/* { dg-add-options arm_neon } */
13888
13889 #include "arm_neon.h"
13890
13891Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
13892===================================================================
13893--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
13894+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
13895@@ -3,7 +3,8 @@
13896
13897 /* { dg-do assemble } */
13898 /* { dg-require-effective-target arm_neon_ok } */
13899-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13900+/* { dg-options "-save-temps -O0" } */
13901+/* { dg-add-options arm_neon } */
13902
13903 #include "arm_neon.h"
13904
13905Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
13906===================================================================
13907--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
13908+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
13909@@ -3,7 +3,8 @@
13910
13911 /* { dg-do assemble } */
13912 /* { dg-require-effective-target arm_neon_ok } */
13913-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13914+/* { dg-options "-save-temps -O0" } */
13915+/* { dg-add-options arm_neon } */
13916
13917 #include "arm_neon.h"
13918
13919Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru16.c
13920===================================================================
13921--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorru16.c
13922+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru16.c
13923@@ -3,7 +3,8 @@
13924
13925 /* { dg-do assemble } */
13926 /* { dg-require-effective-target arm_neon_ok } */
13927-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13928+/* { dg-options "-save-temps -O0" } */
13929+/* { dg-add-options arm_neon } */
13930
13931 #include "arm_neon.h"
13932
13933Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru32.c
13934===================================================================
13935--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorru32.c
13936+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru32.c
13937@@ -3,7 +3,8 @@
13938
13939 /* { dg-do assemble } */
13940 /* { dg-require-effective-target arm_neon_ok } */
13941-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13942+/* { dg-options "-save-temps -O0" } */
13943+/* { dg-add-options arm_neon } */
13944
13945 #include "arm_neon.h"
13946
13947Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru64.c
13948===================================================================
13949--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorru64.c
13950+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru64.c
13951@@ -3,7 +3,8 @@
13952
13953 /* { dg-do assemble } */
13954 /* { dg-require-effective-target arm_neon_ok } */
13955-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13956+/* { dg-options "-save-temps -O0" } */
13957+/* { dg-add-options arm_neon } */
13958
13959 #include "arm_neon.h"
13960
13961Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru8.c
13962===================================================================
13963--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vorru8.c
13964+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vorru8.c
13965@@ -3,7 +3,8 @@
13966
13967 /* { dg-do assemble } */
13968 /* { dg-require-effective-target arm_neon_ok } */
13969-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13970+/* { dg-options "-save-temps -O0" } */
13971+/* { dg-add-options arm_neon } */
13972
13973 #include "arm_neon.h"
13974
13975Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
13976===================================================================
13977--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
13978+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
13979@@ -3,7 +3,8 @@
13980
13981 /* { dg-do assemble } */
13982 /* { dg-require-effective-target arm_neon_ok } */
13983-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13984+/* { dg-options "-save-temps -O0" } */
13985+/* { dg-add-options arm_neon } */
13986
13987 #include "arm_neon.h"
13988
13989Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
13990===================================================================
13991--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
13992+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
13993@@ -3,7 +3,8 @@
13994
13995 /* { dg-do assemble } */
13996 /* { dg-require-effective-target arm_neon_ok } */
13997-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
13998+/* { dg-options "-save-temps -O0" } */
13999+/* { dg-add-options arm_neon } */
14000
14001 #include "arm_neon.h"
14002
14003Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
14004===================================================================
14005--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
14006+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
14007@@ -3,7 +3,8 @@
14008
14009 /* { dg-do assemble } */
14010 /* { dg-require-effective-target arm_neon_ok } */
14011-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14012+/* { dg-options "-save-temps -O0" } */
14013+/* { dg-add-options arm_neon } */
14014
14015 #include "arm_neon.h"
14016
14017Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
14018===================================================================
14019--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
14020+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
14021@@ -3,7 +3,8 @@
14022
14023 /* { dg-do assemble } */
14024 /* { dg-require-effective-target arm_neon_ok } */
14025-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14026+/* { dg-options "-save-temps -O0" } */
14027+/* { dg-add-options arm_neon } */
14028
14029 #include "arm_neon.h"
14030
14031Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
14032===================================================================
14033--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
14034+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
14035@@ -3,7 +3,8 @@
14036
14037 /* { dg-do assemble } */
14038 /* { dg-require-effective-target arm_neon_ok } */
14039-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14040+/* { dg-options "-save-temps -O0" } */
14041+/* { dg-add-options arm_neon } */
14042
14043 #include "arm_neon.h"
14044
14045Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
14046===================================================================
14047--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
14048+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
14049@@ -3,7 +3,8 @@
14050
14051 /* { dg-do assemble } */
14052 /* { dg-require-effective-target arm_neon_ok } */
14053-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14054+/* { dg-options "-save-temps -O0" } */
14055+/* { dg-add-options arm_neon } */
14056
14057 #include "arm_neon.h"
14058
14059Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
14060===================================================================
14061--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
14062+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
14063@@ -3,7 +3,8 @@
14064
14065 /* { dg-do assemble } */
14066 /* { dg-require-effective-target arm_neon_ok } */
14067-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14068+/* { dg-options "-save-temps -O0" } */
14069+/* { dg-add-options arm_neon } */
14070
14071 #include "arm_neon.h"
14072
14073Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
14074===================================================================
14075--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
14076+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
14077@@ -3,7 +3,8 @@
14078
14079 /* { dg-do assemble } */
14080 /* { dg-require-effective-target arm_neon_ok } */
14081-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14082+/* { dg-options "-save-temps -O0" } */
14083+/* { dg-add-options arm_neon } */
14084
14085 #include "arm_neon.h"
14086
14087Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
14088===================================================================
14089--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
14090+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
14091@@ -3,7 +3,8 @@
14092
14093 /* { dg-do assemble } */
14094 /* { dg-require-effective-target arm_neon_ok } */
14095-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14096+/* { dg-options "-save-temps -O0" } */
14097+/* { dg-add-options arm_neon } */
14098
14099 #include "arm_neon.h"
14100
14101Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
14102===================================================================
14103--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
14104+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
14105@@ -3,7 +3,8 @@
14106
14107 /* { dg-do assemble } */
14108 /* { dg-require-effective-target arm_neon_ok } */
14109-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14110+/* { dg-options "-save-temps -O0" } */
14111+/* { dg-add-options arm_neon } */
14112
14113 #include "arm_neon.h"
14114
14115Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
14116===================================================================
14117--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
14118+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
14119@@ -3,7 +3,8 @@
14120
14121 /* { dg-do assemble } */
14122 /* { dg-require-effective-target arm_neon_ok } */
14123-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14124+/* { dg-options "-save-temps -O0" } */
14125+/* { dg-add-options arm_neon } */
14126
14127 #include "arm_neon.h"
14128
14129Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
14130===================================================================
14131--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
14132+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
14133@@ -3,7 +3,8 @@
14134
14135 /* { dg-do assemble } */
14136 /* { dg-require-effective-target arm_neon_ok } */
14137-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14138+/* { dg-options "-save-temps -O0" } */
14139+/* { dg-add-options arm_neon } */
14140
14141 #include "arm_neon.h"
14142
14143Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
14144===================================================================
14145--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
14146+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
14147@@ -3,7 +3,8 @@
14148
14149 /* { dg-do assemble } */
14150 /* { dg-require-effective-target arm_neon_ok } */
14151-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14152+/* { dg-options "-save-temps -O0" } */
14153+/* { dg-add-options arm_neon } */
14154
14155 #include "arm_neon.h"
14156
14157Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
14158===================================================================
14159--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
14160+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
14161@@ -3,7 +3,8 @@
14162
14163 /* { dg-do assemble } */
14164 /* { dg-require-effective-target arm_neon_ok } */
14165-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14166+/* { dg-options "-save-temps -O0" } */
14167+/* { dg-add-options arm_neon } */
14168
14169 #include "arm_neon.h"
14170
14171Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
14172===================================================================
14173--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
14174+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
14175@@ -3,7 +3,8 @@
14176
14177 /* { dg-do assemble } */
14178 /* { dg-require-effective-target arm_neon_ok } */
14179-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14180+/* { dg-options "-save-temps -O0" } */
14181+/* { dg-add-options arm_neon } */
14182
14183 #include "arm_neon.h"
14184
14185Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
14186===================================================================
14187--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
14188+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
14189@@ -3,7 +3,8 @@
14190
14191 /* { dg-do assemble } */
14192 /* { dg-require-effective-target arm_neon_ok } */
14193-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14194+/* { dg-options "-save-temps -O0" } */
14195+/* { dg-add-options arm_neon } */
14196
14197 #include "arm_neon.h"
14198
14199Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
14200===================================================================
14201--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
14202+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
14203@@ -3,7 +3,8 @@
14204
14205 /* { dg-do assemble } */
14206 /* { dg-require-effective-target arm_neon_ok } */
14207-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14208+/* { dg-options "-save-temps -O0" } */
14209+/* { dg-add-options arm_neon } */
14210
14211 #include "arm_neon.h"
14212
14213Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
14214===================================================================
14215--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
14216+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
14217@@ -3,7 +3,8 @@
14218
14219 /* { dg-do assemble } */
14220 /* { dg-require-effective-target arm_neon_ok } */
14221-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14222+/* { dg-options "-save-temps -O0" } */
14223+/* { dg-add-options arm_neon } */
14224
14225 #include "arm_neon.h"
14226
14227Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
14228===================================================================
14229--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
14230+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
14231@@ -3,7 +3,8 @@
14232
14233 /* { dg-do assemble } */
14234 /* { dg-require-effective-target arm_neon_ok } */
14235-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14236+/* { dg-options "-save-temps -O0" } */
14237+/* { dg-add-options arm_neon } */
14238
14239 #include "arm_neon.h"
14240
14241Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
14242===================================================================
14243--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
14244+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
14245@@ -3,7 +3,8 @@
14246
14247 /* { dg-do assemble } */
14248 /* { dg-require-effective-target arm_neon_ok } */
14249-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14250+/* { dg-options "-save-temps -O0" } */
14251+/* { dg-add-options arm_neon } */
14252
14253 #include "arm_neon.h"
14254
14255Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
14256===================================================================
14257--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
14258+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
14259@@ -3,7 +3,8 @@
14260
14261 /* { dg-do assemble } */
14262 /* { dg-require-effective-target arm_neon_ok } */
14263-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14264+/* { dg-options "-save-temps -O0" } */
14265+/* { dg-add-options arm_neon } */
14266
14267 #include "arm_neon.h"
14268
14269Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
14270===================================================================
14271--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
14272+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
14273@@ -3,7 +3,8 @@
14274
14275 /* { dg-do assemble } */
14276 /* { dg-require-effective-target arm_neon_ok } */
14277-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14278+/* { dg-options "-save-temps -O0" } */
14279+/* { dg-add-options arm_neon } */
14280
14281 #include "arm_neon.h"
14282
14283Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
14284===================================================================
14285--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
14286+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
14287@@ -3,7 +3,8 @@
14288
14289 /* { dg-do assemble } */
14290 /* { dg-require-effective-target arm_neon_ok } */
14291-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14292+/* { dg-options "-save-temps -O0" } */
14293+/* { dg-add-options arm_neon } */
14294
14295 #include "arm_neon.h"
14296
14297Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
14298===================================================================
14299--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
14300+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
14301@@ -3,7 +3,8 @@
14302
14303 /* { dg-do assemble } */
14304 /* { dg-require-effective-target arm_neon_ok } */
14305-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14306+/* { dg-options "-save-temps -O0" } */
14307+/* { dg-add-options arm_neon } */
14308
14309 #include "arm_neon.h"
14310
14311Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
14312===================================================================
14313--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
14314+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
14315@@ -3,7 +3,8 @@
14316
14317 /* { dg-do assemble } */
14318 /* { dg-require-effective-target arm_neon_ok } */
14319-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14320+/* { dg-options "-save-temps -O0" } */
14321+/* { dg-add-options arm_neon } */
14322
14323 #include "arm_neon.h"
14324
14325Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
14326===================================================================
14327--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
14328+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
14329@@ -3,7 +3,8 @@
14330
14331 /* { dg-do assemble } */
14332 /* { dg-require-effective-target arm_neon_ok } */
14333-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14334+/* { dg-options "-save-temps -O0" } */
14335+/* { dg-add-options arm_neon } */
14336
14337 #include "arm_neon.h"
14338
14339Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
14340===================================================================
14341--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
14342+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
14343@@ -3,7 +3,8 @@
14344
14345 /* { dg-do assemble } */
14346 /* { dg-require-effective-target arm_neon_ok } */
14347-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14348+/* { dg-options "-save-temps -O0" } */
14349+/* { dg-add-options arm_neon } */
14350
14351 #include "arm_neon.h"
14352
14353Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
14354===================================================================
14355--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
14356+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
14357@@ -3,7 +3,8 @@
14358
14359 /* { dg-do assemble } */
14360 /* { dg-require-effective-target arm_neon_ok } */
14361-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14362+/* { dg-options "-save-temps -O0" } */
14363+/* { dg-add-options arm_neon } */
14364
14365 #include "arm_neon.h"
14366
14367Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
14368===================================================================
14369--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
14370+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
14371@@ -3,7 +3,8 @@
14372
14373 /* { dg-do assemble } */
14374 /* { dg-require-effective-target arm_neon_ok } */
14375-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14376+/* { dg-options "-save-temps -O0" } */
14377+/* { dg-add-options arm_neon } */
14378
14379 #include "arm_neon.h"
14380
14381Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
14382===================================================================
14383--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
14384+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
14385@@ -3,7 +3,8 @@
14386
14387 /* { dg-do assemble } */
14388 /* { dg-require-effective-target arm_neon_ok } */
14389-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14390+/* { dg-options "-save-temps -O0" } */
14391+/* { dg-add-options arm_neon } */
14392
14393 #include "arm_neon.h"
14394
14395Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
14396===================================================================
14397--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
14398+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
14399@@ -3,7 +3,8 @@
14400
14401 /* { dg-do assemble } */
14402 /* { dg-require-effective-target arm_neon_ok } */
14403-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14404+/* { dg-options "-save-temps -O0" } */
14405+/* { dg-add-options arm_neon } */
14406
14407 #include "arm_neon.h"
14408
14409Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
14410===================================================================
14411--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
14412+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
14413@@ -3,7 +3,8 @@
14414
14415 /* { dg-do assemble } */
14416 /* { dg-require-effective-target arm_neon_ok } */
14417-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14418+/* { dg-options "-save-temps -O0" } */
14419+/* { dg-add-options arm_neon } */
14420
14421 #include "arm_neon.h"
14422
14423Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
14424===================================================================
14425--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
14426+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
14427@@ -3,7 +3,8 @@
14428
14429 /* { dg-do assemble } */
14430 /* { dg-require-effective-target arm_neon_ok } */
14431-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14432+/* { dg-options "-save-temps -O0" } */
14433+/* { dg-add-options arm_neon } */
14434
14435 #include "arm_neon.h"
14436
14437Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
14438===================================================================
14439--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
14440+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
14441@@ -3,7 +3,8 @@
14442
14443 /* { dg-do assemble } */
14444 /* { dg-require-effective-target arm_neon_ok } */
14445-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14446+/* { dg-options "-save-temps -O0" } */
14447+/* { dg-add-options arm_neon } */
14448
14449 #include "arm_neon.h"
14450
14451Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
14452===================================================================
14453--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
14454+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
14455@@ -3,7 +3,8 @@
14456
14457 /* { dg-do assemble } */
14458 /* { dg-require-effective-target arm_neon_ok } */
14459-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14460+/* { dg-options "-save-temps -O0" } */
14461+/* { dg-add-options arm_neon } */
14462
14463 #include "arm_neon.h"
14464
14465Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
14466===================================================================
14467--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
14468+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
14469@@ -3,7 +3,8 @@
14470
14471 /* { dg-do assemble } */
14472 /* { dg-require-effective-target arm_neon_ok } */
14473-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14474+/* { dg-options "-save-temps -O0" } */
14475+/* { dg-add-options arm_neon } */
14476
14477 #include "arm_neon.h"
14478
14479Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
14480===================================================================
14481--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
14482+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
14483@@ -3,7 +3,8 @@
14484
14485 /* { dg-do assemble } */
14486 /* { dg-require-effective-target arm_neon_ok } */
14487-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14488+/* { dg-options "-save-temps -O0" } */
14489+/* { dg-add-options arm_neon } */
14490
14491 #include "arm_neon.h"
14492
14493Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
14494===================================================================
14495--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
14496+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
14497@@ -3,7 +3,8 @@
14498
14499 /* { dg-do assemble } */
14500 /* { dg-require-effective-target arm_neon_ok } */
14501-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14502+/* { dg-options "-save-temps -O0" } */
14503+/* { dg-add-options arm_neon } */
14504
14505 #include "arm_neon.h"
14506
14507Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
14508===================================================================
14509--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
14510+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
14511@@ -3,7 +3,8 @@
14512
14513 /* { dg-do assemble } */
14514 /* { dg-require-effective-target arm_neon_ok } */
14515-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14516+/* { dg-options "-save-temps -O0" } */
14517+/* { dg-add-options arm_neon } */
14518
14519 #include "arm_neon.h"
14520
14521Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
14522===================================================================
14523--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
14524+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
14525@@ -3,7 +3,8 @@
14526
14527 /* { dg-do assemble } */
14528 /* { dg-require-effective-target arm_neon_ok } */
14529-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14530+/* { dg-options "-save-temps -O0" } */
14531+/* { dg-add-options arm_neon } */
14532
14533 #include "arm_neon.h"
14534
14535Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
14536===================================================================
14537--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
14538+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
14539@@ -3,7 +3,8 @@
14540
14541 /* { dg-do assemble } */
14542 /* { dg-require-effective-target arm_neon_ok } */
14543-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14544+/* { dg-options "-save-temps -O0" } */
14545+/* { dg-add-options arm_neon } */
14546
14547 #include "arm_neon.h"
14548
14549Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
14550===================================================================
14551--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
14552+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
14553@@ -3,7 +3,8 @@
14554
14555 /* { dg-do assemble } */
14556 /* { dg-require-effective-target arm_neon_ok } */
14557-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14558+/* { dg-options "-save-temps -O0" } */
14559+/* { dg-add-options arm_neon } */
14560
14561 #include "arm_neon.h"
14562
14563Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
14564===================================================================
14565--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
14566+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
14567@@ -3,7 +3,8 @@
14568
14569 /* { dg-do assemble } */
14570 /* { dg-require-effective-target arm_neon_ok } */
14571-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14572+/* { dg-options "-save-temps -O0" } */
14573+/* { dg-add-options arm_neon } */
14574
14575 #include "arm_neon.h"
14576
14577Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
14578===================================================================
14579--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
14580+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
14581@@ -3,7 +3,8 @@
14582
14583 /* { dg-do assemble } */
14584 /* { dg-require-effective-target arm_neon_ok } */
14585-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14586+/* { dg-options "-save-temps -O0" } */
14587+/* { dg-add-options arm_neon } */
14588
14589 #include "arm_neon.h"
14590
14591Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
14592===================================================================
14593--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
14594+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
14595@@ -3,7 +3,8 @@
14596
14597 /* { dg-do assemble } */
14598 /* { dg-require-effective-target arm_neon_ok } */
14599-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14600+/* { dg-options "-save-temps -O0" } */
14601+/* { dg-add-options arm_neon } */
14602
14603 #include "arm_neon.h"
14604
14605Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
14606===================================================================
14607--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
14608+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
14609@@ -3,7 +3,8 @@
14610
14611 /* { dg-do assemble } */
14612 /* { dg-require-effective-target arm_neon_ok } */
14613-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14614+/* { dg-options "-save-temps -O0" } */
14615+/* { dg-add-options arm_neon } */
14616
14617 #include "arm_neon.h"
14618
14619Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
14620===================================================================
14621--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
14622+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
14623@@ -3,7 +3,8 @@
14624
14625 /* { dg-do assemble } */
14626 /* { dg-require-effective-target arm_neon_ok } */
14627-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14628+/* { dg-options "-save-temps -O0" } */
14629+/* { dg-add-options arm_neon } */
14630
14631 #include "arm_neon.h"
14632
14633Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
14634===================================================================
14635--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
14636+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
14637@@ -3,7 +3,8 @@
14638
14639 /* { dg-do assemble } */
14640 /* { dg-require-effective-target arm_neon_ok } */
14641-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14642+/* { dg-options "-save-temps -O0" } */
14643+/* { dg-add-options arm_neon } */
14644
14645 #include "arm_neon.h"
14646
14647Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
14648===================================================================
14649--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
14650+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
14651@@ -3,7 +3,8 @@
14652
14653 /* { dg-do assemble } */
14654 /* { dg-require-effective-target arm_neon_ok } */
14655-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14656+/* { dg-options "-save-temps -O0" } */
14657+/* { dg-add-options arm_neon } */
14658
14659 #include "arm_neon.h"
14660
14661Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
14662===================================================================
14663--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
14664+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
14665@@ -3,7 +3,8 @@
14666
14667 /* { dg-do assemble } */
14668 /* { dg-require-effective-target arm_neon_ok } */
14669-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14670+/* { dg-options "-save-temps -O0" } */
14671+/* { dg-add-options arm_neon } */
14672
14673 #include "arm_neon.h"
14674
14675Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
14676===================================================================
14677--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
14678+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
14679@@ -3,7 +3,8 @@
14680
14681 /* { dg-do assemble } */
14682 /* { dg-require-effective-target arm_neon_ok } */
14683-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14684+/* { dg-options "-save-temps -O0" } */
14685+/* { dg-add-options arm_neon } */
14686
14687 #include "arm_neon.h"
14688
14689Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
14690===================================================================
14691--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
14692+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
14693@@ -3,7 +3,8 @@
14694
14695 /* { dg-do assemble } */
14696 /* { dg-require-effective-target arm_neon_ok } */
14697-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14698+/* { dg-options "-save-temps -O0" } */
14699+/* { dg-add-options arm_neon } */
14700
14701 #include "arm_neon.h"
14702
14703Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
14704===================================================================
14705--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
14706+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
14707@@ -3,7 +3,8 @@
14708
14709 /* { dg-do assemble } */
14710 /* { dg-require-effective-target arm_neon_ok } */
14711-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14712+/* { dg-options "-save-temps -O0" } */
14713+/* { dg-add-options arm_neon } */
14714
14715 #include "arm_neon.h"
14716
14717Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
14718===================================================================
14719--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
14720+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
14721@@ -3,7 +3,8 @@
14722
14723 /* { dg-do assemble } */
14724 /* { dg-require-effective-target arm_neon_ok } */
14725-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14726+/* { dg-options "-save-temps -O0" } */
14727+/* { dg-add-options arm_neon } */
14728
14729 #include "arm_neon.h"
14730
14731Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
14732===================================================================
14733--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
14734+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
14735@@ -3,7 +3,8 @@
14736
14737 /* { dg-do assemble } */
14738 /* { dg-require-effective-target arm_neon_ok } */
14739-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14740+/* { dg-options "-save-temps -O0" } */
14741+/* { dg-add-options arm_neon } */
14742
14743 #include "arm_neon.h"
14744
14745Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
14746===================================================================
14747--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
14748+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
14749@@ -3,7 +3,8 @@
14750
14751 /* { dg-do assemble } */
14752 /* { dg-require-effective-target arm_neon_ok } */
14753-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14754+/* { dg-options "-save-temps -O0" } */
14755+/* { dg-add-options arm_neon } */
14756
14757 #include "arm_neon.h"
14758
14759Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
14760===================================================================
14761--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
14762+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
14763@@ -3,7 +3,8 @@
14764
14765 /* { dg-do assemble } */
14766 /* { dg-require-effective-target arm_neon_ok } */
14767-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14768+/* { dg-options "-save-temps -O0" } */
14769+/* { dg-add-options arm_neon } */
14770
14771 #include "arm_neon.h"
14772
14773Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
14774===================================================================
14775--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
14776+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
14777@@ -3,7 +3,8 @@
14778
14779 /* { dg-do assemble } */
14780 /* { dg-require-effective-target arm_neon_ok } */
14781-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14782+/* { dg-options "-save-temps -O0" } */
14783+/* { dg-add-options arm_neon } */
14784
14785 #include "arm_neon.h"
14786
14787Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
14788===================================================================
14789--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
14790+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
14791@@ -3,7 +3,8 @@
14792
14793 /* { dg-do assemble } */
14794 /* { dg-require-effective-target arm_neon_ok } */
14795-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14796+/* { dg-options "-save-temps -O0" } */
14797+/* { dg-add-options arm_neon } */
14798
14799 #include "arm_neon.h"
14800
14801Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
14802===================================================================
14803--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
14804+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
14805@@ -3,7 +3,8 @@
14806
14807 /* { dg-do assemble } */
14808 /* { dg-require-effective-target arm_neon_ok } */
14809-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14810+/* { dg-options "-save-temps -O0" } */
14811+/* { dg-add-options arm_neon } */
14812
14813 #include "arm_neon.h"
14814
14815Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
14816===================================================================
14817--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
14818+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
14819@@ -3,7 +3,8 @@
14820
14821 /* { dg-do assemble } */
14822 /* { dg-require-effective-target arm_neon_ok } */
14823-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14824+/* { dg-options "-save-temps -O0" } */
14825+/* { dg-add-options arm_neon } */
14826
14827 #include "arm_neon.h"
14828
14829Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
14830===================================================================
14831--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
14832+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
14833@@ -3,7 +3,8 @@
14834
14835 /* { dg-do assemble } */
14836 /* { dg-require-effective-target arm_neon_ok } */
14837-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14838+/* { dg-options "-save-temps -O0" } */
14839+/* { dg-add-options arm_neon } */
14840
14841 #include "arm_neon.h"
14842
14843Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
14844===================================================================
14845--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
14846+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
14847@@ -3,7 +3,8 @@
14848
14849 /* { dg-do assemble } */
14850 /* { dg-require-effective-target arm_neon_ok } */
14851-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14852+/* { dg-options "-save-temps -O0" } */
14853+/* { dg-add-options arm_neon } */
14854
14855 #include "arm_neon.h"
14856
14857Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
14858===================================================================
14859--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
14860+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
14861@@ -3,7 +3,8 @@
14862
14863 /* { dg-do assemble } */
14864 /* { dg-require-effective-target arm_neon_ok } */
14865-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14866+/* { dg-options "-save-temps -O0" } */
14867+/* { dg-add-options arm_neon } */
14868
14869 #include "arm_neon.h"
14870
14871Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
14872===================================================================
14873--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
14874+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
14875@@ -3,7 +3,8 @@
14876
14877 /* { dg-do assemble } */
14878 /* { dg-require-effective-target arm_neon_ok } */
14879-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14880+/* { dg-options "-save-temps -O0" } */
14881+/* { dg-add-options arm_neon } */
14882
14883 #include "arm_neon.h"
14884
14885Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
14886===================================================================
14887--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
14888+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
14889@@ -3,7 +3,8 @@
14890
14891 /* { dg-do assemble } */
14892 /* { dg-require-effective-target arm_neon_ok } */
14893-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14894+/* { dg-options "-save-temps -O0" } */
14895+/* { dg-add-options arm_neon } */
14896
14897 #include "arm_neon.h"
14898
14899Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
14900===================================================================
14901--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
14902+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
14903@@ -3,7 +3,8 @@
14904
14905 /* { dg-do assemble } */
14906 /* { dg-require-effective-target arm_neon_ok } */
14907-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14908+/* { dg-options "-save-temps -O0" } */
14909+/* { dg-add-options arm_neon } */
14910
14911 #include "arm_neon.h"
14912
14913Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
14914===================================================================
14915--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
14916+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
14917@@ -3,7 +3,8 @@
14918
14919 /* { dg-do assemble } */
14920 /* { dg-require-effective-target arm_neon_ok } */
14921-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14922+/* { dg-options "-save-temps -O0" } */
14923+/* { dg-add-options arm_neon } */
14924
14925 #include "arm_neon.h"
14926
14927Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
14928===================================================================
14929--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
14930+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
14931@@ -3,7 +3,8 @@
14932
14933 /* { dg-do assemble } */
14934 /* { dg-require-effective-target arm_neon_ok } */
14935-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14936+/* { dg-options "-save-temps -O0" } */
14937+/* { dg-add-options arm_neon } */
14938
14939 #include "arm_neon.h"
14940
14941Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
14942===================================================================
14943--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
14944+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
14945@@ -3,7 +3,8 @@
14946
14947 /* { dg-do assemble } */
14948 /* { dg-require-effective-target arm_neon_ok } */
14949-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14950+/* { dg-options "-save-temps -O0" } */
14951+/* { dg-add-options arm_neon } */
14952
14953 #include "arm_neon.h"
14954
14955Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
14956===================================================================
14957--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
14958+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
14959@@ -3,7 +3,8 @@
14960
14961 /* { dg-do assemble } */
14962 /* { dg-require-effective-target arm_neon_ok } */
14963-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14964+/* { dg-options "-save-temps -O0" } */
14965+/* { dg-add-options arm_neon } */
14966
14967 #include "arm_neon.h"
14968
14969Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
14970===================================================================
14971--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
14972+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
14973@@ -3,7 +3,8 @@
14974
14975 /* { dg-do assemble } */
14976 /* { dg-require-effective-target arm_neon_ok } */
14977-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14978+/* { dg-options "-save-temps -O0" } */
14979+/* { dg-add-options arm_neon } */
14980
14981 #include "arm_neon.h"
14982
14983Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
14984===================================================================
14985--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
14986+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
14987@@ -3,7 +3,8 @@
14988
14989 /* { dg-do assemble } */
14990 /* { dg-require-effective-target arm_neon_ok } */
14991-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
14992+/* { dg-options "-save-temps -O0" } */
14993+/* { dg-add-options arm_neon } */
14994
14995 #include "arm_neon.h"
14996
14997Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
14998===================================================================
14999--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
15000+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
15001@@ -3,7 +3,8 @@
15002
15003 /* { dg-do assemble } */
15004 /* { dg-require-effective-target arm_neon_ok } */
15005-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15006+/* { dg-options "-save-temps -O0" } */
15007+/* { dg-add-options arm_neon } */
15008
15009 #include "arm_neon.h"
15010
15011Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
15012===================================================================
15013--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
15014+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
15015@@ -3,7 +3,8 @@
15016
15017 /* { dg-do assemble } */
15018 /* { dg-require-effective-target arm_neon_ok } */
15019-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15020+/* { dg-options "-save-temps -O0" } */
15021+/* { dg-add-options arm_neon } */
15022
15023 #include "arm_neon.h"
15024
15025Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
15026===================================================================
15027--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
15028+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
15029@@ -3,7 +3,8 @@
15030
15031 /* { dg-do assemble } */
15032 /* { dg-require-effective-target arm_neon_ok } */
15033-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15034+/* { dg-options "-save-temps -O0" } */
15035+/* { dg-add-options arm_neon } */
15036
15037 #include "arm_neon.h"
15038
15039Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
15040===================================================================
15041--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
15042+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
15043@@ -3,7 +3,8 @@
15044
15045 /* { dg-do assemble } */
15046 /* { dg-require-effective-target arm_neon_ok } */
15047-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15048+/* { dg-options "-save-temps -O0" } */
15049+/* { dg-add-options arm_neon } */
15050
15051 #include "arm_neon.h"
15052
15053Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
15054===================================================================
15055--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
15056+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
15057@@ -3,7 +3,8 @@
15058
15059 /* { dg-do assemble } */
15060 /* { dg-require-effective-target arm_neon_ok } */
15061-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15062+/* { dg-options "-save-temps -O0" } */
15063+/* { dg-add-options arm_neon } */
15064
15065 #include "arm_neon.h"
15066
15067Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
15068===================================================================
15069--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
15070+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
15071@@ -3,7 +3,8 @@
15072
15073 /* { dg-do assemble } */
15074 /* { dg-require-effective-target arm_neon_ok } */
15075-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15076+/* { dg-options "-save-temps -O0" } */
15077+/* { dg-add-options arm_neon } */
15078
15079 #include "arm_neon.h"
15080
15081Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
15082===================================================================
15083--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
15084+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
15085@@ -3,7 +3,8 @@
15086
15087 /* { dg-do assemble } */
15088 /* { dg-require-effective-target arm_neon_ok } */
15089-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15090+/* { dg-options "-save-temps -O0" } */
15091+/* { dg-add-options arm_neon } */
15092
15093 #include "arm_neon.h"
15094
15095Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
15096===================================================================
15097--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
15098+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
15099@@ -3,7 +3,8 @@
15100
15101 /* { dg-do assemble } */
15102 /* { dg-require-effective-target arm_neon_ok } */
15103-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15104+/* { dg-options "-save-temps -O0" } */
15105+/* { dg-add-options arm_neon } */
15106
15107 #include "arm_neon.h"
15108
15109Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
15110===================================================================
15111--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
15112+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
15113@@ -3,7 +3,8 @@
15114
15115 /* { dg-do assemble } */
15116 /* { dg-require-effective-target arm_neon_ok } */
15117-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15118+/* { dg-options "-save-temps -O0" } */
15119+/* { dg-add-options arm_neon } */
15120
15121 #include "arm_neon.h"
15122
15123Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
15124===================================================================
15125--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
15126+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
15127@@ -3,7 +3,8 @@
15128
15129 /* { dg-do assemble } */
15130 /* { dg-require-effective-target arm_neon_ok } */
15131-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15132+/* { dg-options "-save-temps -O0" } */
15133+/* { dg-add-options arm_neon } */
15134
15135 #include "arm_neon.h"
15136
15137Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
15138===================================================================
15139--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
15140+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
15141@@ -3,7 +3,8 @@
15142
15143 /* { dg-do assemble } */
15144 /* { dg-require-effective-target arm_neon_ok } */
15145-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15146+/* { dg-options "-save-temps -O0" } */
15147+/* { dg-add-options arm_neon } */
15148
15149 #include "arm_neon.h"
15150
15151Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
15152===================================================================
15153--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
15154+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
15155@@ -3,7 +3,8 @@
15156
15157 /* { dg-do assemble } */
15158 /* { dg-require-effective-target arm_neon_ok } */
15159-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15160+/* { dg-options "-save-temps -O0" } */
15161+/* { dg-add-options arm_neon } */
15162
15163 #include "arm_neon.h"
15164
15165Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
15166===================================================================
15167--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
15168+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
15169@@ -3,7 +3,8 @@
15170
15171 /* { dg-do assemble } */
15172 /* { dg-require-effective-target arm_neon_ok } */
15173-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15174+/* { dg-options "-save-temps -O0" } */
15175+/* { dg-add-options arm_neon } */
15176
15177 #include "arm_neon.h"
15178
15179Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
15180===================================================================
15181--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
15182+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
15183@@ -3,7 +3,8 @@
15184
15185 /* { dg-do assemble } */
15186 /* { dg-require-effective-target arm_neon_ok } */
15187-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15188+/* { dg-options "-save-temps -O0" } */
15189+/* { dg-add-options arm_neon } */
15190
15191 #include "arm_neon.h"
15192
15193Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
15194===================================================================
15195--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
15196+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
15197@@ -3,7 +3,8 @@
15198
15199 /* { dg-do assemble } */
15200 /* { dg-require-effective-target arm_neon_ok } */
15201-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15202+/* { dg-options "-save-temps -O0" } */
15203+/* { dg-add-options arm_neon } */
15204
15205 #include "arm_neon.h"
15206
15207Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
15208===================================================================
15209--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
15210+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
15211@@ -3,7 +3,8 @@
15212
15213 /* { dg-do assemble } */
15214 /* { dg-require-effective-target arm_neon_ok } */
15215-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15216+/* { dg-options "-save-temps -O0" } */
15217+/* { dg-add-options arm_neon } */
15218
15219 #include "arm_neon.h"
15220
15221Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
15222===================================================================
15223--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
15224+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
15225@@ -3,7 +3,8 @@
15226
15227 /* { dg-do assemble } */
15228 /* { dg-require-effective-target arm_neon_ok } */
15229-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15230+/* { dg-options "-save-temps -O0" } */
15231+/* { dg-add-options arm_neon } */
15232
15233 #include "arm_neon.h"
15234
15235Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
15236===================================================================
15237--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
15238+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
15239@@ -3,7 +3,8 @@
15240
15241 /* { dg-do assemble } */
15242 /* { dg-require-effective-target arm_neon_ok } */
15243-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15244+/* { dg-options "-save-temps -O0" } */
15245+/* { dg-add-options arm_neon } */
15246
15247 #include "arm_neon.h"
15248
15249Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
15250===================================================================
15251--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
15252+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
15253@@ -3,7 +3,8 @@
15254
15255 /* { dg-do assemble } */
15256 /* { dg-require-effective-target arm_neon_ok } */
15257-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15258+/* { dg-options "-save-temps -O0" } */
15259+/* { dg-add-options arm_neon } */
15260
15261 #include "arm_neon.h"
15262
15263Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
15264===================================================================
15265--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
15266+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
15267@@ -3,7 +3,8 @@
15268
15269 /* { dg-do assemble } */
15270 /* { dg-require-effective-target arm_neon_ok } */
15271-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15272+/* { dg-options "-save-temps -O0" } */
15273+/* { dg-add-options arm_neon } */
15274
15275 #include "arm_neon.h"
15276
15277Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
15278===================================================================
15279--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
15280+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
15281@@ -3,7 +3,8 @@
15282
15283 /* { dg-do assemble } */
15284 /* { dg-require-effective-target arm_neon_ok } */
15285-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15286+/* { dg-options "-save-temps -O0" } */
15287+/* { dg-add-options arm_neon } */
15288
15289 #include "arm_neon.h"
15290
15291Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
15292===================================================================
15293--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
15294+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
15295@@ -3,7 +3,8 @@
15296
15297 /* { dg-do assemble } */
15298 /* { dg-require-effective-target arm_neon_ok } */
15299-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15300+/* { dg-options "-save-temps -O0" } */
15301+/* { dg-add-options arm_neon } */
15302
15303 #include "arm_neon.h"
15304
15305Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
15306===================================================================
15307--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
15308+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
15309@@ -3,7 +3,8 @@
15310
15311 /* { dg-do assemble } */
15312 /* { dg-require-effective-target arm_neon_ok } */
15313-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15314+/* { dg-options "-save-temps -O0" } */
15315+/* { dg-add-options arm_neon } */
15316
15317 #include "arm_neon.h"
15318
15319Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
15320===================================================================
15321--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
15322+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
15323@@ -3,7 +3,8 @@
15324
15325 /* { dg-do assemble } */
15326 /* { dg-require-effective-target arm_neon_ok } */
15327-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15328+/* { dg-options "-save-temps -O0" } */
15329+/* { dg-add-options arm_neon } */
15330
15331 #include "arm_neon.h"
15332
15333Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
15334===================================================================
15335--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
15336+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
15337@@ -3,7 +3,8 @@
15338
15339 /* { dg-do assemble } */
15340 /* { dg-require-effective-target arm_neon_ok } */
15341-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15342+/* { dg-options "-save-temps -O0" } */
15343+/* { dg-add-options arm_neon } */
15344
15345 #include "arm_neon.h"
15346
15347Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
15348===================================================================
15349--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
15350+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
15351@@ -3,7 +3,8 @@
15352
15353 /* { dg-do assemble } */
15354 /* { dg-require-effective-target arm_neon_ok } */
15355-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15356+/* { dg-options "-save-temps -O0" } */
15357+/* { dg-add-options arm_neon } */
15358
15359 #include "arm_neon.h"
15360
15361Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
15362===================================================================
15363--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
15364+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
15365@@ -3,7 +3,8 @@
15366
15367 /* { dg-do assemble } */
15368 /* { dg-require-effective-target arm_neon_ok } */
15369-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15370+/* { dg-options "-save-temps -O0" } */
15371+/* { dg-add-options arm_neon } */
15372
15373 #include "arm_neon.h"
15374
15375Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
15376===================================================================
15377--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
15378+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
15379@@ -3,7 +3,8 @@
15380
15381 /* { dg-do assemble } */
15382 /* { dg-require-effective-target arm_neon_ok } */
15383-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15384+/* { dg-options "-save-temps -O0" } */
15385+/* { dg-add-options arm_neon } */
15386
15387 #include "arm_neon.h"
15388
15389Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
15390===================================================================
15391--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
15392+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
15393@@ -3,7 +3,8 @@
15394
15395 /* { dg-do assemble } */
15396 /* { dg-require-effective-target arm_neon_ok } */
15397-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15398+/* { dg-options "-save-temps -O0" } */
15399+/* { dg-add-options arm_neon } */
15400
15401 #include "arm_neon.h"
15402
15403Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
15404===================================================================
15405--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
15406+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
15407@@ -3,7 +3,8 @@
15408
15409 /* { dg-do assemble } */
15410 /* { dg-require-effective-target arm_neon_ok } */
15411-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15412+/* { dg-options "-save-temps -O0" } */
15413+/* { dg-add-options arm_neon } */
15414
15415 #include "arm_neon.h"
15416
15417Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
15418===================================================================
15419--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
15420+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
15421@@ -3,7 +3,8 @@
15422
15423 /* { dg-do assemble } */
15424 /* { dg-require-effective-target arm_neon_ok } */
15425-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15426+/* { dg-options "-save-temps -O0" } */
15427+/* { dg-add-options arm_neon } */
15428
15429 #include "arm_neon.h"
15430
15431Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
15432===================================================================
15433--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
15434+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
15435@@ -3,7 +3,8 @@
15436
15437 /* { dg-do assemble } */
15438 /* { dg-require-effective-target arm_neon_ok } */
15439-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15440+/* { dg-options "-save-temps -O0" } */
15441+/* { dg-add-options arm_neon } */
15442
15443 #include "arm_neon.h"
15444
15445Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
15446===================================================================
15447--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
15448+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
15449@@ -3,7 +3,8 @@
15450
15451 /* { dg-do assemble } */
15452 /* { dg-require-effective-target arm_neon_ok } */
15453-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15454+/* { dg-options "-save-temps -O0" } */
15455+/* { dg-add-options arm_neon } */
15456
15457 #include "arm_neon.h"
15458
15459Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
15460===================================================================
15461--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
15462+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
15463@@ -3,7 +3,8 @@
15464
15465 /* { dg-do assemble } */
15466 /* { dg-require-effective-target arm_neon_ok } */
15467-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15468+/* { dg-options "-save-temps -O0" } */
15469+/* { dg-add-options arm_neon } */
15470
15471 #include "arm_neon.h"
15472
15473Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
15474===================================================================
15475--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
15476+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
15477@@ -3,7 +3,8 @@
15478
15479 /* { dg-do assemble } */
15480 /* { dg-require-effective-target arm_neon_ok } */
15481-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15482+/* { dg-options "-save-temps -O0" } */
15483+/* { dg-add-options arm_neon } */
15484
15485 #include "arm_neon.h"
15486
15487Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
15488===================================================================
15489--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
15490+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
15491@@ -3,7 +3,8 @@
15492
15493 /* { dg-do assemble } */
15494 /* { dg-require-effective-target arm_neon_ok } */
15495-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15496+/* { dg-options "-save-temps -O0" } */
15497+/* { dg-add-options arm_neon } */
15498
15499 #include "arm_neon.h"
15500
15501Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
15502===================================================================
15503--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
15504+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
15505@@ -3,7 +3,8 @@
15506
15507 /* { dg-do assemble } */
15508 /* { dg-require-effective-target arm_neon_ok } */
15509-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15510+/* { dg-options "-save-temps -O0" } */
15511+/* { dg-add-options arm_neon } */
15512
15513 #include "arm_neon.h"
15514
15515Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
15516===================================================================
15517--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
15518+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
15519@@ -3,7 +3,8 @@
15520
15521 /* { dg-do assemble } */
15522 /* { dg-require-effective-target arm_neon_ok } */
15523-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15524+/* { dg-options "-save-temps -O0" } */
15525+/* { dg-add-options arm_neon } */
15526
15527 #include "arm_neon.h"
15528
15529Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
15530===================================================================
15531--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
15532+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
15533@@ -3,7 +3,8 @@
15534
15535 /* { dg-do assemble } */
15536 /* { dg-require-effective-target arm_neon_ok } */
15537-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15538+/* { dg-options "-save-temps -O0" } */
15539+/* { dg-add-options arm_neon } */
15540
15541 #include "arm_neon.h"
15542
15543Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
15544===================================================================
15545--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
15546+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
15547@@ -3,7 +3,8 @@
15548
15549 /* { dg-do assemble } */
15550 /* { dg-require-effective-target arm_neon_ok } */
15551-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15552+/* { dg-options "-save-temps -O0" } */
15553+/* { dg-add-options arm_neon } */
15554
15555 #include "arm_neon.h"
15556
15557Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
15558===================================================================
15559--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
15560+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
15561@@ -3,7 +3,8 @@
15562
15563 /* { dg-do assemble } */
15564 /* { dg-require-effective-target arm_neon_ok } */
15565-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15566+/* { dg-options "-save-temps -O0" } */
15567+/* { dg-add-options arm_neon } */
15568
15569 #include "arm_neon.h"
15570
15571Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
15572===================================================================
15573--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
15574+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
15575@@ -3,7 +3,8 @@
15576
15577 /* { dg-do assemble } */
15578 /* { dg-require-effective-target arm_neon_ok } */
15579-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15580+/* { dg-options "-save-temps -O0" } */
15581+/* { dg-add-options arm_neon } */
15582
15583 #include "arm_neon.h"
15584
15585Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
15586===================================================================
15587--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
15588+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
15589@@ -3,7 +3,8 @@
15590
15591 /* { dg-do assemble } */
15592 /* { dg-require-effective-target arm_neon_ok } */
15593-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15594+/* { dg-options "-save-temps -O0" } */
15595+/* { dg-add-options arm_neon } */
15596
15597 #include "arm_neon.h"
15598
15599Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
15600===================================================================
15601--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
15602+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
15603@@ -3,7 +3,8 @@
15604
15605 /* { dg-do assemble } */
15606 /* { dg-require-effective-target arm_neon_ok } */
15607-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15608+/* { dg-options "-save-temps -O0" } */
15609+/* { dg-add-options arm_neon } */
15610
15611 #include "arm_neon.h"
15612
15613Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
15614===================================================================
15615--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
15616+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
15617@@ -3,7 +3,8 @@
15618
15619 /* { dg-do assemble } */
15620 /* { dg-require-effective-target arm_neon_ok } */
15621-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15622+/* { dg-options "-save-temps -O0" } */
15623+/* { dg-add-options arm_neon } */
15624
15625 #include "arm_neon.h"
15626
15627Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
15628===================================================================
15629--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
15630+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
15631@@ -3,7 +3,8 @@
15632
15633 /* { dg-do assemble } */
15634 /* { dg-require-effective-target arm_neon_ok } */
15635-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15636+/* { dg-options "-save-temps -O0" } */
15637+/* { dg-add-options arm_neon } */
15638
15639 #include "arm_neon.h"
15640
15641Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
15642===================================================================
15643--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
15644+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
15645@@ -3,7 +3,8 @@
15646
15647 /* { dg-do assemble } */
15648 /* { dg-require-effective-target arm_neon_ok } */
15649-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15650+/* { dg-options "-save-temps -O0" } */
15651+/* { dg-add-options arm_neon } */
15652
15653 #include "arm_neon.h"
15654
15655Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
15656===================================================================
15657--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
15658+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
15659@@ -3,7 +3,8 @@
15660
15661 /* { dg-do assemble } */
15662 /* { dg-require-effective-target arm_neon_ok } */
15663-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15664+/* { dg-options "-save-temps -O0" } */
15665+/* { dg-add-options arm_neon } */
15666
15667 #include "arm_neon.h"
15668
15669Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
15670===================================================================
15671--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
15672+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
15673@@ -3,7 +3,8 @@
15674
15675 /* { dg-do assemble } */
15676 /* { dg-require-effective-target arm_neon_ok } */
15677-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15678+/* { dg-options "-save-temps -O0" } */
15679+/* { dg-add-options arm_neon } */
15680
15681 #include "arm_neon.h"
15682
15683Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
15684===================================================================
15685--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
15686+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
15687@@ -3,7 +3,8 @@
15688
15689 /* { dg-do assemble } */
15690 /* { dg-require-effective-target arm_neon_ok } */
15691-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15692+/* { dg-options "-save-temps -O0" } */
15693+/* { dg-add-options arm_neon } */
15694
15695 #include "arm_neon.h"
15696
15697Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
15698===================================================================
15699--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
15700+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
15701@@ -3,7 +3,8 @@
15702
15703 /* { dg-do assemble } */
15704 /* { dg-require-effective-target arm_neon_ok } */
15705-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15706+/* { dg-options "-save-temps -O0" } */
15707+/* { dg-add-options arm_neon } */
15708
15709 #include "arm_neon.h"
15710
15711Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
15712===================================================================
15713--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
15714+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
15715@@ -3,7 +3,8 @@
15716
15717 /* { dg-do assemble } */
15718 /* { dg-require-effective-target arm_neon_ok } */
15719-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15720+/* { dg-options "-save-temps -O0" } */
15721+/* { dg-add-options arm_neon } */
15722
15723 #include "arm_neon.h"
15724
15725Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
15726===================================================================
15727--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
15728+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
15729@@ -3,7 +3,8 @@
15730
15731 /* { dg-do assemble } */
15732 /* { dg-require-effective-target arm_neon_ok } */
15733-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15734+/* { dg-options "-save-temps -O0" } */
15735+/* { dg-add-options arm_neon } */
15736
15737 #include "arm_neon.h"
15738
15739Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
15740===================================================================
15741--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
15742+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
15743@@ -3,7 +3,8 @@
15744
15745 /* { dg-do assemble } */
15746 /* { dg-require-effective-target arm_neon_ok } */
15747-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15748+/* { dg-options "-save-temps -O0" } */
15749+/* { dg-add-options arm_neon } */
15750
15751 #include "arm_neon.h"
15752
15753Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
15754===================================================================
15755--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
15756+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
15757@@ -3,7 +3,8 @@
15758
15759 /* { dg-do assemble } */
15760 /* { dg-require-effective-target arm_neon_ok } */
15761-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15762+/* { dg-options "-save-temps -O0" } */
15763+/* { dg-add-options arm_neon } */
15764
15765 #include "arm_neon.h"
15766
15767Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
15768===================================================================
15769--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
15770+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
15771@@ -3,7 +3,8 @@
15772
15773 /* { dg-do assemble } */
15774 /* { dg-require-effective-target arm_neon_ok } */
15775-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15776+/* { dg-options "-save-temps -O0" } */
15777+/* { dg-add-options arm_neon } */
15778
15779 #include "arm_neon.h"
15780
15781Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
15782===================================================================
15783--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
15784+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
15785@@ -3,7 +3,8 @@
15786
15787 /* { dg-do assemble } */
15788 /* { dg-require-effective-target arm_neon_ok } */
15789-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15790+/* { dg-options "-save-temps -O0" } */
15791+/* { dg-add-options arm_neon } */
15792
15793 #include "arm_neon.h"
15794
15795Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
15796===================================================================
15797--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
15798+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
15799@@ -3,7 +3,8 @@
15800
15801 /* { dg-do assemble } */
15802 /* { dg-require-effective-target arm_neon_ok } */
15803-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15804+/* { dg-options "-save-temps -O0" } */
15805+/* { dg-add-options arm_neon } */
15806
15807 #include "arm_neon.h"
15808
15809Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
15810===================================================================
15811--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
15812+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
15813@@ -3,7 +3,8 @@
15814
15815 /* { dg-do assemble } */
15816 /* { dg-require-effective-target arm_neon_ok } */
15817-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15818+/* { dg-options "-save-temps -O0" } */
15819+/* { dg-add-options arm_neon } */
15820
15821 #include "arm_neon.h"
15822
15823Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
15824===================================================================
15825--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
15826+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
15827@@ -3,7 +3,8 @@
15828
15829 /* { dg-do assemble } */
15830 /* { dg-require-effective-target arm_neon_ok } */
15831-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15832+/* { dg-options "-save-temps -O0" } */
15833+/* { dg-add-options arm_neon } */
15834
15835 #include "arm_neon.h"
15836
15837Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
15838===================================================================
15839--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
15840+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
15841@@ -3,7 +3,8 @@
15842
15843 /* { dg-do assemble } */
15844 /* { dg-require-effective-target arm_neon_ok } */
15845-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15846+/* { dg-options "-save-temps -O0" } */
15847+/* { dg-add-options arm_neon } */
15848
15849 #include "arm_neon.h"
15850
15851Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
15852===================================================================
15853--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
15854+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
15855@@ -3,7 +3,8 @@
15856
15857 /* { dg-do assemble } */
15858 /* { dg-require-effective-target arm_neon_ok } */
15859-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15860+/* { dg-options "-save-temps -O0" } */
15861+/* { dg-add-options arm_neon } */
15862
15863 #include "arm_neon.h"
15864
15865Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
15866===================================================================
15867--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
15868+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
15869@@ -3,7 +3,8 @@
15870
15871 /* { dg-do assemble } */
15872 /* { dg-require-effective-target arm_neon_ok } */
15873-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15874+/* { dg-options "-save-temps -O0" } */
15875+/* { dg-add-options arm_neon } */
15876
15877 #include "arm_neon.h"
15878
15879Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
15880===================================================================
15881--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
15882+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
15883@@ -3,7 +3,8 @@
15884
15885 /* { dg-do assemble } */
15886 /* { dg-require-effective-target arm_neon_ok } */
15887-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15888+/* { dg-options "-save-temps -O0" } */
15889+/* { dg-add-options arm_neon } */
15890
15891 #include "arm_neon.h"
15892
15893Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
15894===================================================================
15895--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
15896+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
15897@@ -3,7 +3,8 @@
15898
15899 /* { dg-do assemble } */
15900 /* { dg-require-effective-target arm_neon_ok } */
15901-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15902+/* { dg-options "-save-temps -O0" } */
15903+/* { dg-add-options arm_neon } */
15904
15905 #include "arm_neon.h"
15906
15907Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
15908===================================================================
15909--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
15910+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
15911@@ -3,7 +3,8 @@
15912
15913 /* { dg-do assemble } */
15914 /* { dg-require-effective-target arm_neon_ok } */
15915-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15916+/* { dg-options "-save-temps -O0" } */
15917+/* { dg-add-options arm_neon } */
15918
15919 #include "arm_neon.h"
15920
15921Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
15922===================================================================
15923--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
15924+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
15925@@ -3,7 +3,8 @@
15926
15927 /* { dg-do assemble } */
15928 /* { dg-require-effective-target arm_neon_ok } */
15929-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15930+/* { dg-options "-save-temps -O0" } */
15931+/* { dg-add-options arm_neon } */
15932
15933 #include "arm_neon.h"
15934
15935Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
15936===================================================================
15937--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
15938+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
15939@@ -3,7 +3,8 @@
15940
15941 /* { dg-do assemble } */
15942 /* { dg-require-effective-target arm_neon_ok } */
15943-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15944+/* { dg-options "-save-temps -O0" } */
15945+/* { dg-add-options arm_neon } */
15946
15947 #include "arm_neon.h"
15948
15949Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
15950===================================================================
15951--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
15952+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
15953@@ -3,7 +3,8 @@
15954
15955 /* { dg-do assemble } */
15956 /* { dg-require-effective-target arm_neon_ok } */
15957-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15958+/* { dg-options "-save-temps -O0" } */
15959+/* { dg-add-options arm_neon } */
15960
15961 #include "arm_neon.h"
15962
15963Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
15964===================================================================
15965--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
15966+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
15967@@ -3,7 +3,8 @@
15968
15969 /* { dg-do assemble } */
15970 /* { dg-require-effective-target arm_neon_ok } */
15971-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15972+/* { dg-options "-save-temps -O0" } */
15973+/* { dg-add-options arm_neon } */
15974
15975 #include "arm_neon.h"
15976
15977Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
15978===================================================================
15979--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
15980+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
15981@@ -3,7 +3,8 @@
15982
15983 /* { dg-do assemble } */
15984 /* { dg-require-effective-target arm_neon_ok } */
15985-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
15986+/* { dg-options "-save-temps -O0" } */
15987+/* { dg-add-options arm_neon } */
15988
15989 #include "arm_neon.h"
15990
15991Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
15992===================================================================
15993--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
15994+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
15995@@ -3,7 +3,8 @@
15996
15997 /* { dg-do assemble } */
15998 /* { dg-require-effective-target arm_neon_ok } */
15999-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16000+/* { dg-options "-save-temps -O0" } */
16001+/* { dg-add-options arm_neon } */
16002
16003 #include "arm_neon.h"
16004
16005Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
16006===================================================================
16007--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
16008+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
16009@@ -3,7 +3,8 @@
16010
16011 /* { dg-do assemble } */
16012 /* { dg-require-effective-target arm_neon_ok } */
16013-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16014+/* { dg-options "-save-temps -O0" } */
16015+/* { dg-add-options arm_neon } */
16016
16017 #include "arm_neon.h"
16018
16019Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
16020===================================================================
16021--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
16022+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
16023@@ -3,7 +3,8 @@
16024
16025 /* { dg-do assemble } */
16026 /* { dg-require-effective-target arm_neon_ok } */
16027-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16028+/* { dg-options "-save-temps -O0" } */
16029+/* { dg-add-options arm_neon } */
16030
16031 #include "arm_neon.h"
16032
16033Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
16034===================================================================
16035--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
16036+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
16037@@ -3,7 +3,8 @@
16038
16039 /* { dg-do assemble } */
16040 /* { dg-require-effective-target arm_neon_ok } */
16041-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16042+/* { dg-options "-save-temps -O0" } */
16043+/* { dg-add-options arm_neon } */
16044
16045 #include "arm_neon.h"
16046
16047Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
16048===================================================================
16049--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
16050+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
16051@@ -3,7 +3,8 @@
16052
16053 /* { dg-do assemble } */
16054 /* { dg-require-effective-target arm_neon_ok } */
16055-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16056+/* { dg-options "-save-temps -O0" } */
16057+/* { dg-add-options arm_neon } */
16058
16059 #include "arm_neon.h"
16060
16061Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
16062===================================================================
16063--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
16064+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
16065@@ -3,7 +3,8 @@
16066
16067 /* { dg-do assemble } */
16068 /* { dg-require-effective-target arm_neon_ok } */
16069-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16070+/* { dg-options "-save-temps -O0" } */
16071+/* { dg-add-options arm_neon } */
16072
16073 #include "arm_neon.h"
16074
16075Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
16076===================================================================
16077--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
16078+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
16079@@ -3,7 +3,8 @@
16080
16081 /* { dg-do assemble } */
16082 /* { dg-require-effective-target arm_neon_ok } */
16083-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16084+/* { dg-options "-save-temps -O0" } */
16085+/* { dg-add-options arm_neon } */
16086
16087 #include "arm_neon.h"
16088
16089Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
16090===================================================================
16091--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
16092+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
16093@@ -3,7 +3,8 @@
16094
16095 /* { dg-do assemble } */
16096 /* { dg-require-effective-target arm_neon_ok } */
16097-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16098+/* { dg-options "-save-temps -O0" } */
16099+/* { dg-add-options arm_neon } */
16100
16101 #include "arm_neon.h"
16102
16103Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
16104===================================================================
16105--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
16106+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
16107@@ -3,7 +3,8 @@
16108
16109 /* { dg-do assemble } */
16110 /* { dg-require-effective-target arm_neon_ok } */
16111-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16112+/* { dg-options "-save-temps -O0" } */
16113+/* { dg-add-options arm_neon } */
16114
16115 #include "arm_neon.h"
16116
16117Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
16118===================================================================
16119--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
16120+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
16121@@ -3,7 +3,8 @@
16122
16123 /* { dg-do assemble } */
16124 /* { dg-require-effective-target arm_neon_ok } */
16125-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16126+/* { dg-options "-save-temps -O0" } */
16127+/* { dg-add-options arm_neon } */
16128
16129 #include "arm_neon.h"
16130
16131Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
16132===================================================================
16133--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
16134+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
16135@@ -3,7 +3,8 @@
16136
16137 /* { dg-do assemble } */
16138 /* { dg-require-effective-target arm_neon_ok } */
16139-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16140+/* { dg-options "-save-temps -O0" } */
16141+/* { dg-add-options arm_neon } */
16142
16143 #include "arm_neon.h"
16144
16145Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
16146===================================================================
16147--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
16148+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
16149@@ -3,7 +3,8 @@
16150
16151 /* { dg-do assemble } */
16152 /* { dg-require-effective-target arm_neon_ok } */
16153-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16154+/* { dg-options "-save-temps -O0" } */
16155+/* { dg-add-options arm_neon } */
16156
16157 #include "arm_neon.h"
16158
16159Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
16160===================================================================
16161--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
16162+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
16163@@ -3,7 +3,8 @@
16164
16165 /* { dg-do assemble } */
16166 /* { dg-require-effective-target arm_neon_ok } */
16167-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16168+/* { dg-options "-save-temps -O0" } */
16169+/* { dg-add-options arm_neon } */
16170
16171 #include "arm_neon.h"
16172
16173Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
16174===================================================================
16175--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
16176+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
16177@@ -3,7 +3,8 @@
16178
16179 /* { dg-do assemble } */
16180 /* { dg-require-effective-target arm_neon_ok } */
16181-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16182+/* { dg-options "-save-temps -O0" } */
16183+/* { dg-add-options arm_neon } */
16184
16185 #include "arm_neon.h"
16186
16187Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
16188===================================================================
16189--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
16190+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
16191@@ -3,7 +3,8 @@
16192
16193 /* { dg-do assemble } */
16194 /* { dg-require-effective-target arm_neon_ok } */
16195-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16196+/* { dg-options "-save-temps -O0" } */
16197+/* { dg-add-options arm_neon } */
16198
16199 #include "arm_neon.h"
16200
16201Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
16202===================================================================
16203--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
16204+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
16205@@ -3,7 +3,8 @@
16206
16207 /* { dg-do assemble } */
16208 /* { dg-require-effective-target arm_neon_ok } */
16209-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16210+/* { dg-options "-save-temps -O0" } */
16211+/* { dg-add-options arm_neon } */
16212
16213 #include "arm_neon.h"
16214
16215Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
16216===================================================================
16217--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
16218+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
16219@@ -3,7 +3,8 @@
16220
16221 /* { dg-do assemble } */
16222 /* { dg-require-effective-target arm_neon_ok } */
16223-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16224+/* { dg-options "-save-temps -O0" } */
16225+/* { dg-add-options arm_neon } */
16226
16227 #include "arm_neon.h"
16228
16229Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
16230===================================================================
16231--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
16232+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
16233@@ -3,7 +3,8 @@
16234
16235 /* { dg-do assemble } */
16236 /* { dg-require-effective-target arm_neon_ok } */
16237-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16238+/* { dg-options "-save-temps -O0" } */
16239+/* { dg-add-options arm_neon } */
16240
16241 #include "arm_neon.h"
16242
16243Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
16244===================================================================
16245--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
16246+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
16247@@ -3,7 +3,8 @@
16248
16249 /* { dg-do assemble } */
16250 /* { dg-require-effective-target arm_neon_ok } */
16251-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16252+/* { dg-options "-save-temps -O0" } */
16253+/* { dg-add-options arm_neon } */
16254
16255 #include "arm_neon.h"
16256
16257Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
16258===================================================================
16259--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
16260+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
16261@@ -3,7 +3,8 @@
16262
16263 /* { dg-do assemble } */
16264 /* { dg-require-effective-target arm_neon_ok } */
16265-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16266+/* { dg-options "-save-temps -O0" } */
16267+/* { dg-add-options arm_neon } */
16268
16269 #include "arm_neon.h"
16270
16271Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
16272===================================================================
16273--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
16274+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
16275@@ -3,7 +3,8 @@
16276
16277 /* { dg-do assemble } */
16278 /* { dg-require-effective-target arm_neon_ok } */
16279-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16280+/* { dg-options "-save-temps -O0" } */
16281+/* { dg-add-options arm_neon } */
16282
16283 #include "arm_neon.h"
16284
16285Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
16286===================================================================
16287--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
16288+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
16289@@ -3,7 +3,8 @@
16290
16291 /* { dg-do assemble } */
16292 /* { dg-require-effective-target arm_neon_ok } */
16293-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16294+/* { dg-options "-save-temps -O0" } */
16295+/* { dg-add-options arm_neon } */
16296
16297 #include "arm_neon.h"
16298
16299Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
16300===================================================================
16301--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
16302+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
16303@@ -3,7 +3,8 @@
16304
16305 /* { dg-do assemble } */
16306 /* { dg-require-effective-target arm_neon_ok } */
16307-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16308+/* { dg-options "-save-temps -O0" } */
16309+/* { dg-add-options arm_neon } */
16310
16311 #include "arm_neon.h"
16312
16313Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
16314===================================================================
16315--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
16316+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
16317@@ -3,7 +3,8 @@
16318
16319 /* { dg-do assemble } */
16320 /* { dg-require-effective-target arm_neon_ok } */
16321-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16322+/* { dg-options "-save-temps -O0" } */
16323+/* { dg-add-options arm_neon } */
16324
16325 #include "arm_neon.h"
16326
16327Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
16328===================================================================
16329--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
16330+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
16331@@ -3,7 +3,8 @@
16332
16333 /* { dg-do assemble } */
16334 /* { dg-require-effective-target arm_neon_ok } */
16335-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16336+/* { dg-options "-save-temps -O0" } */
16337+/* { dg-add-options arm_neon } */
16338
16339 #include "arm_neon.h"
16340
16341Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
16342===================================================================
16343--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
16344+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
16345@@ -3,7 +3,8 @@
16346
16347 /* { dg-do assemble } */
16348 /* { dg-require-effective-target arm_neon_ok } */
16349-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16350+/* { dg-options "-save-temps -O0" } */
16351+/* { dg-add-options arm_neon } */
16352
16353 #include "arm_neon.h"
16354
16355Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
16356===================================================================
16357--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
16358+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
16359@@ -3,7 +3,8 @@
16360
16361 /* { dg-do assemble } */
16362 /* { dg-require-effective-target arm_neon_ok } */
16363-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16364+/* { dg-options "-save-temps -O0" } */
16365+/* { dg-add-options arm_neon } */
16366
16367 #include "arm_neon.h"
16368
16369Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
16370===================================================================
16371--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
16372+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
16373@@ -3,7 +3,8 @@
16374
16375 /* { dg-do assemble } */
16376 /* { dg-require-effective-target arm_neon_ok } */
16377-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16378+/* { dg-options "-save-temps -O0" } */
16379+/* { dg-add-options arm_neon } */
16380
16381 #include "arm_neon.h"
16382
16383Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
16384===================================================================
16385--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
16386+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
16387@@ -3,7 +3,8 @@
16388
16389 /* { dg-do assemble } */
16390 /* { dg-require-effective-target arm_neon_ok } */
16391-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16392+/* { dg-options "-save-temps -O0" } */
16393+/* { dg-add-options arm_neon } */
16394
16395 #include "arm_neon.h"
16396
16397Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
16398===================================================================
16399--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
16400+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
16401@@ -3,7 +3,8 @@
16402
16403 /* { dg-do assemble } */
16404 /* { dg-require-effective-target arm_neon_ok } */
16405-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16406+/* { dg-options "-save-temps -O0" } */
16407+/* { dg-add-options arm_neon } */
16408
16409 #include "arm_neon.h"
16410
16411Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
16412===================================================================
16413--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
16414+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
16415@@ -3,7 +3,8 @@
16416
16417 /* { dg-do assemble } */
16418 /* { dg-require-effective-target arm_neon_ok } */
16419-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16420+/* { dg-options "-save-temps -O0" } */
16421+/* { dg-add-options arm_neon } */
16422
16423 #include "arm_neon.h"
16424
16425Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
16426===================================================================
16427--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
16428+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
16429@@ -3,7 +3,8 @@
16430
16431 /* { dg-do assemble } */
16432 /* { dg-require-effective-target arm_neon_ok } */
16433-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16434+/* { dg-options "-save-temps -O0" } */
16435+/* { dg-add-options arm_neon } */
16436
16437 #include "arm_neon.h"
16438
16439Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
16440===================================================================
16441--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
16442+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
16443@@ -3,7 +3,8 @@
16444
16445 /* { dg-do assemble } */
16446 /* { dg-require-effective-target arm_neon_ok } */
16447-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16448+/* { dg-options "-save-temps -O0" } */
16449+/* { dg-add-options arm_neon } */
16450
16451 #include "arm_neon.h"
16452
16453Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
16454===================================================================
16455--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
16456+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
16457@@ -3,7 +3,8 @@
16458
16459 /* { dg-do assemble } */
16460 /* { dg-require-effective-target arm_neon_ok } */
16461-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16462+/* { dg-options "-save-temps -O0" } */
16463+/* { dg-add-options arm_neon } */
16464
16465 #include "arm_neon.h"
16466
16467Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
16468===================================================================
16469--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
16470+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
16471@@ -3,7 +3,8 @@
16472
16473 /* { dg-do assemble } */
16474 /* { dg-require-effective-target arm_neon_ok } */
16475-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16476+/* { dg-options "-save-temps -O0" } */
16477+/* { dg-add-options arm_neon } */
16478
16479 #include "arm_neon.h"
16480
16481Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
16482===================================================================
16483--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
16484+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
16485@@ -3,7 +3,8 @@
16486
16487 /* { dg-do assemble } */
16488 /* { dg-require-effective-target arm_neon_ok } */
16489-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16490+/* { dg-options "-save-temps -O0" } */
16491+/* { dg-add-options arm_neon } */
16492
16493 #include "arm_neon.h"
16494
16495Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
16496===================================================================
16497--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
16498+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
16499@@ -3,7 +3,8 @@
16500
16501 /* { dg-do assemble } */
16502 /* { dg-require-effective-target arm_neon_ok } */
16503-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16504+/* { dg-options "-save-temps -O0" } */
16505+/* { dg-add-options arm_neon } */
16506
16507 #include "arm_neon.h"
16508
16509Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
16510===================================================================
16511--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
16512+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
16513@@ -3,7 +3,8 @@
16514
16515 /* { dg-do assemble } */
16516 /* { dg-require-effective-target arm_neon_ok } */
16517-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16518+/* { dg-options "-save-temps -O0" } */
16519+/* { dg-add-options arm_neon } */
16520
16521 #include "arm_neon.h"
16522
16523Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
16524===================================================================
16525--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
16526+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
16527@@ -3,7 +3,8 @@
16528
16529 /* { dg-do assemble } */
16530 /* { dg-require-effective-target arm_neon_ok } */
16531-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16532+/* { dg-options "-save-temps -O0" } */
16533+/* { dg-add-options arm_neon } */
16534
16535 #include "arm_neon.h"
16536
16537Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
16538===================================================================
16539--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
16540+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
16541@@ -3,7 +3,8 @@
16542
16543 /* { dg-do assemble } */
16544 /* { dg-require-effective-target arm_neon_ok } */
16545-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16546+/* { dg-options "-save-temps -O0" } */
16547+/* { dg-add-options arm_neon } */
16548
16549 #include "arm_neon.h"
16550
16551Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
16552===================================================================
16553--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
16554+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
16555@@ -3,7 +3,8 @@
16556
16557 /* { dg-do assemble } */
16558 /* { dg-require-effective-target arm_neon_ok } */
16559-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16560+/* { dg-options "-save-temps -O0" } */
16561+/* { dg-add-options arm_neon } */
16562
16563 #include "arm_neon.h"
16564
16565Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
16566===================================================================
16567--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
16568+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
16569@@ -3,7 +3,8 @@
16570
16571 /* { dg-do assemble } */
16572 /* { dg-require-effective-target arm_neon_ok } */
16573-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16574+/* { dg-options "-save-temps -O0" } */
16575+/* { dg-add-options arm_neon } */
16576
16577 #include "arm_neon.h"
16578
16579Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
16580===================================================================
16581--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
16582+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
16583@@ -3,7 +3,8 @@
16584
16585 /* { dg-do assemble } */
16586 /* { dg-require-effective-target arm_neon_ok } */
16587-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16588+/* { dg-options "-save-temps -O0" } */
16589+/* { dg-add-options arm_neon } */
16590
16591 #include "arm_neon.h"
16592
16593Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
16594===================================================================
16595--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
16596+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
16597@@ -3,7 +3,8 @@
16598
16599 /* { dg-do assemble } */
16600 /* { dg-require-effective-target arm_neon_ok } */
16601-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16602+/* { dg-options "-save-temps -O0" } */
16603+/* { dg-add-options arm_neon } */
16604
16605 #include "arm_neon.h"
16606
16607Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
16608===================================================================
16609--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
16610+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
16611@@ -3,7 +3,8 @@
16612
16613 /* { dg-do assemble } */
16614 /* { dg-require-effective-target arm_neon_ok } */
16615-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16616+/* { dg-options "-save-temps -O0" } */
16617+/* { dg-add-options arm_neon } */
16618
16619 #include "arm_neon.h"
16620
16621Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
16622===================================================================
16623--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
16624+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
16625@@ -3,7 +3,8 @@
16626
16627 /* { dg-do assemble } */
16628 /* { dg-require-effective-target arm_neon_ok } */
16629-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16630+/* { dg-options "-save-temps -O0" } */
16631+/* { dg-add-options arm_neon } */
16632
16633 #include "arm_neon.h"
16634
16635Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
16636===================================================================
16637--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
16638+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
16639@@ -3,7 +3,8 @@
16640
16641 /* { dg-do assemble } */
16642 /* { dg-require-effective-target arm_neon_ok } */
16643-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16644+/* { dg-options "-save-temps -O0" } */
16645+/* { dg-add-options arm_neon } */
16646
16647 #include "arm_neon.h"
16648
16649Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
16650===================================================================
16651--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
16652+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
16653@@ -3,7 +3,8 @@
16654
16655 /* { dg-do assemble } */
16656 /* { dg-require-effective-target arm_neon_ok } */
16657-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16658+/* { dg-options "-save-temps -O0" } */
16659+/* { dg-add-options arm_neon } */
16660
16661 #include "arm_neon.h"
16662
16663Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
16664===================================================================
16665--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
16666+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
16667@@ -3,7 +3,8 @@
16668
16669 /* { dg-do assemble } */
16670 /* { dg-require-effective-target arm_neon_ok } */
16671-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16672+/* { dg-options "-save-temps -O0" } */
16673+/* { dg-add-options arm_neon } */
16674
16675 #include "arm_neon.h"
16676
16677Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
16678===================================================================
16679--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
16680+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
16681@@ -3,7 +3,8 @@
16682
16683 /* { dg-do assemble } */
16684 /* { dg-require-effective-target arm_neon_ok } */
16685-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16686+/* { dg-options "-save-temps -O0" } */
16687+/* { dg-add-options arm_neon } */
16688
16689 #include "arm_neon.h"
16690
16691Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
16692===================================================================
16693--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
16694+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
16695@@ -3,7 +3,8 @@
16696
16697 /* { dg-do assemble } */
16698 /* { dg-require-effective-target arm_neon_ok } */
16699-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16700+/* { dg-options "-save-temps -O0" } */
16701+/* { dg-add-options arm_neon } */
16702
16703 #include "arm_neon.h"
16704
16705Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
16706===================================================================
16707--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
16708+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
16709@@ -3,7 +3,8 @@
16710
16711 /* { dg-do assemble } */
16712 /* { dg-require-effective-target arm_neon_ok } */
16713-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16714+/* { dg-options "-save-temps -O0" } */
16715+/* { dg-add-options arm_neon } */
16716
16717 #include "arm_neon.h"
16718
16719Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
16720===================================================================
16721--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
16722+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
16723@@ -3,7 +3,8 @@
16724
16725 /* { dg-do assemble } */
16726 /* { dg-require-effective-target arm_neon_ok } */
16727-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16728+/* { dg-options "-save-temps -O0" } */
16729+/* { dg-add-options arm_neon } */
16730
16731 #include "arm_neon.h"
16732
16733Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
16734===================================================================
16735--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
16736+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
16737@@ -3,7 +3,8 @@
16738
16739 /* { dg-do assemble } */
16740 /* { dg-require-effective-target arm_neon_ok } */
16741-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16742+/* { dg-options "-save-temps -O0" } */
16743+/* { dg-add-options arm_neon } */
16744
16745 #include "arm_neon.h"
16746
16747Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
16748===================================================================
16749--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
16750+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
16751@@ -3,7 +3,8 @@
16752
16753 /* { dg-do assemble } */
16754 /* { dg-require-effective-target arm_neon_ok } */
16755-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16756+/* { dg-options "-save-temps -O0" } */
16757+/* { dg-add-options arm_neon } */
16758
16759 #include "arm_neon.h"
16760
16761Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
16762===================================================================
16763--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
16764+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
16765@@ -3,7 +3,8 @@
16766
16767 /* { dg-do assemble } */
16768 /* { dg-require-effective-target arm_neon_ok } */
16769-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16770+/* { dg-options "-save-temps -O0" } */
16771+/* { dg-add-options arm_neon } */
16772
16773 #include "arm_neon.h"
16774
16775Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
16776===================================================================
16777--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
16778+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
16779@@ -3,7 +3,8 @@
16780
16781 /* { dg-do assemble } */
16782 /* { dg-require-effective-target arm_neon_ok } */
16783-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16784+/* { dg-options "-save-temps -O0" } */
16785+/* { dg-add-options arm_neon } */
16786
16787 #include "arm_neon.h"
16788
16789Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
16790===================================================================
16791--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
16792+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
16793@@ -3,7 +3,8 @@
16794
16795 /* { dg-do assemble } */
16796 /* { dg-require-effective-target arm_neon_ok } */
16797-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16798+/* { dg-options "-save-temps -O0" } */
16799+/* { dg-add-options arm_neon } */
16800
16801 #include "arm_neon.h"
16802
16803Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
16804===================================================================
16805--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
16806+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
16807@@ -3,7 +3,8 @@
16808
16809 /* { dg-do assemble } */
16810 /* { dg-require-effective-target arm_neon_ok } */
16811-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16812+/* { dg-options "-save-temps -O0" } */
16813+/* { dg-add-options arm_neon } */
16814
16815 #include "arm_neon.h"
16816
16817Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
16818===================================================================
16819--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
16820+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
16821@@ -3,7 +3,8 @@
16822
16823 /* { dg-do assemble } */
16824 /* { dg-require-effective-target arm_neon_ok } */
16825-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16826+/* { dg-options "-save-temps -O0" } */
16827+/* { dg-add-options arm_neon } */
16828
16829 #include "arm_neon.h"
16830
16831Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
16832===================================================================
16833--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
16834+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
16835@@ -3,7 +3,8 @@
16836
16837 /* { dg-do assemble } */
16838 /* { dg-require-effective-target arm_neon_ok } */
16839-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16840+/* { dg-options "-save-temps -O0" } */
16841+/* { dg-add-options arm_neon } */
16842
16843 #include "arm_neon.h"
16844
16845Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
16846===================================================================
16847--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
16848+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
16849@@ -3,7 +3,8 @@
16850
16851 /* { dg-do assemble } */
16852 /* { dg-require-effective-target arm_neon_ok } */
16853-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16854+/* { dg-options "-save-temps -O0" } */
16855+/* { dg-add-options arm_neon } */
16856
16857 #include "arm_neon.h"
16858
16859Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
16860===================================================================
16861--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
16862+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
16863@@ -3,7 +3,8 @@
16864
16865 /* { dg-do assemble } */
16866 /* { dg-require-effective-target arm_neon_ok } */
16867-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16868+/* { dg-options "-save-temps -O0" } */
16869+/* { dg-add-options arm_neon } */
16870
16871 #include "arm_neon.h"
16872
16873Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
16874===================================================================
16875--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
16876+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
16877@@ -3,7 +3,8 @@
16878
16879 /* { dg-do assemble } */
16880 /* { dg-require-effective-target arm_neon_ok } */
16881-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16882+/* { dg-options "-save-temps -O0" } */
16883+/* { dg-add-options arm_neon } */
16884
16885 #include "arm_neon.h"
16886
16887Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
16888===================================================================
16889--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
16890+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
16891@@ -3,7 +3,8 @@
16892
16893 /* { dg-do assemble } */
16894 /* { dg-require-effective-target arm_neon_ok } */
16895-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16896+/* { dg-options "-save-temps -O0" } */
16897+/* { dg-add-options arm_neon } */
16898
16899 #include "arm_neon.h"
16900
16901Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
16902===================================================================
16903--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
16904+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
16905@@ -3,7 +3,8 @@
16906
16907 /* { dg-do assemble } */
16908 /* { dg-require-effective-target arm_neon_ok } */
16909-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16910+/* { dg-options "-save-temps -O0" } */
16911+/* { dg-add-options arm_neon } */
16912
16913 #include "arm_neon.h"
16914
16915Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
16916===================================================================
16917--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
16918+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
16919@@ -3,7 +3,8 @@
16920
16921 /* { dg-do assemble } */
16922 /* { dg-require-effective-target arm_neon_ok } */
16923-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16924+/* { dg-options "-save-temps -O0" } */
16925+/* { dg-add-options arm_neon } */
16926
16927 #include "arm_neon.h"
16928
16929Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
16930===================================================================
16931--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
16932+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
16933@@ -3,7 +3,8 @@
16934
16935 /* { dg-do assemble } */
16936 /* { dg-require-effective-target arm_neon_ok } */
16937-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16938+/* { dg-options "-save-temps -O0" } */
16939+/* { dg-add-options arm_neon } */
16940
16941 #include "arm_neon.h"
16942
16943Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
16944===================================================================
16945--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
16946+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
16947@@ -3,7 +3,8 @@
16948
16949 /* { dg-do assemble } */
16950 /* { dg-require-effective-target arm_neon_ok } */
16951-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16952+/* { dg-options "-save-temps -O0" } */
16953+/* { dg-add-options arm_neon } */
16954
16955 #include "arm_neon.h"
16956
16957Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
16958===================================================================
16959--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
16960+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
16961@@ -3,7 +3,8 @@
16962
16963 /* { dg-do assemble } */
16964 /* { dg-require-effective-target arm_neon_ok } */
16965-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16966+/* { dg-options "-save-temps -O0" } */
16967+/* { dg-add-options arm_neon } */
16968
16969 #include "arm_neon.h"
16970
16971Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
16972===================================================================
16973--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
16974+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
16975@@ -3,7 +3,8 @@
16976
16977 /* { dg-do assemble } */
16978 /* { dg-require-effective-target arm_neon_ok } */
16979-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16980+/* { dg-options "-save-temps -O0" } */
16981+/* { dg-add-options arm_neon } */
16982
16983 #include "arm_neon.h"
16984
16985Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
16986===================================================================
16987--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
16988+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
16989@@ -3,7 +3,8 @@
16990
16991 /* { dg-do assemble } */
16992 /* { dg-require-effective-target arm_neon_ok } */
16993-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
16994+/* { dg-options "-save-temps -O0" } */
16995+/* { dg-add-options arm_neon } */
16996
16997 #include "arm_neon.h"
16998
16999Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
17000===================================================================
17001--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
17002+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
17003@@ -3,7 +3,8 @@
17004
17005 /* { dg-do assemble } */
17006 /* { dg-require-effective-target arm_neon_ok } */
17007-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17008+/* { dg-options "-save-temps -O0" } */
17009+/* { dg-add-options arm_neon } */
17010
17011 #include "arm_neon.h"
17012
17013Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
17014===================================================================
17015--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
17016+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
17017@@ -3,7 +3,8 @@
17018
17019 /* { dg-do assemble } */
17020 /* { dg-require-effective-target arm_neon_ok } */
17021-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17022+/* { dg-options "-save-temps -O0" } */
17023+/* { dg-add-options arm_neon } */
17024
17025 #include "arm_neon.h"
17026
17027Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
17028===================================================================
17029--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
17030+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
17031@@ -3,7 +3,8 @@
17032
17033 /* { dg-do assemble } */
17034 /* { dg-require-effective-target arm_neon_ok } */
17035-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17036+/* { dg-options "-save-temps -O0" } */
17037+/* { dg-add-options arm_neon } */
17038
17039 #include "arm_neon.h"
17040
17041Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
17042===================================================================
17043--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
17044+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
17045@@ -3,7 +3,8 @@
17046
17047 /* { dg-do assemble } */
17048 /* { dg-require-effective-target arm_neon_ok } */
17049-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17050+/* { dg-options "-save-temps -O0" } */
17051+/* { dg-add-options arm_neon } */
17052
17053 #include "arm_neon.h"
17054
17055Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
17056===================================================================
17057--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
17058+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
17059@@ -3,7 +3,8 @@
17060
17061 /* { dg-do assemble } */
17062 /* { dg-require-effective-target arm_neon_ok } */
17063-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17064+/* { dg-options "-save-temps -O0" } */
17065+/* { dg-add-options arm_neon } */
17066
17067 #include "arm_neon.h"
17068
17069Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
17070===================================================================
17071--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
17072+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
17073@@ -3,7 +3,8 @@
17074
17075 /* { dg-do assemble } */
17076 /* { dg-require-effective-target arm_neon_ok } */
17077-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17078+/* { dg-options "-save-temps -O0" } */
17079+/* { dg-add-options arm_neon } */
17080
17081 #include "arm_neon.h"
17082
17083Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
17084===================================================================
17085--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
17086+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
17087@@ -3,7 +3,8 @@
17088
17089 /* { dg-do assemble } */
17090 /* { dg-require-effective-target arm_neon_ok } */
17091-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17092+/* { dg-options "-save-temps -O0" } */
17093+/* { dg-add-options arm_neon } */
17094
17095 #include "arm_neon.h"
17096
17097Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
17098===================================================================
17099--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
17100+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
17101@@ -3,7 +3,8 @@
17102
17103 /* { dg-do assemble } */
17104 /* { dg-require-effective-target arm_neon_ok } */
17105-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17106+/* { dg-options "-save-temps -O0" } */
17107+/* { dg-add-options arm_neon } */
17108
17109 #include "arm_neon.h"
17110
17111Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
17112===================================================================
17113--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
17114+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
17115@@ -3,7 +3,8 @@
17116
17117 /* { dg-do assemble } */
17118 /* { dg-require-effective-target arm_neon_ok } */
17119-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17120+/* { dg-options "-save-temps -O0" } */
17121+/* { dg-add-options arm_neon } */
17122
17123 #include "arm_neon.h"
17124
17125Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
17126===================================================================
17127--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
17128+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
17129@@ -3,7 +3,8 @@
17130
17131 /* { dg-do assemble } */
17132 /* { dg-require-effective-target arm_neon_ok } */
17133-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17134+/* { dg-options "-save-temps -O0" } */
17135+/* { dg-add-options arm_neon } */
17136
17137 #include "arm_neon.h"
17138
17139Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
17140===================================================================
17141--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
17142+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
17143@@ -3,7 +3,8 @@
17144
17145 /* { dg-do assemble } */
17146 /* { dg-require-effective-target arm_neon_ok } */
17147-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17148+/* { dg-options "-save-temps -O0" } */
17149+/* { dg-add-options arm_neon } */
17150
17151 #include "arm_neon.h"
17152
17153Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
17154===================================================================
17155--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
17156+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
17157@@ -3,7 +3,8 @@
17158
17159 /* { dg-do assemble } */
17160 /* { dg-require-effective-target arm_neon_ok } */
17161-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17162+/* { dg-options "-save-temps -O0" } */
17163+/* { dg-add-options arm_neon } */
17164
17165 #include "arm_neon.h"
17166
17167Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
17168===================================================================
17169--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
17170+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
17171@@ -3,7 +3,8 @@
17172
17173 /* { dg-do assemble } */
17174 /* { dg-require-effective-target arm_neon_ok } */
17175-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17176+/* { dg-options "-save-temps -O0" } */
17177+/* { dg-add-options arm_neon } */
17178
17179 #include "arm_neon.h"
17180
17181Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
17182===================================================================
17183--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
17184+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
17185@@ -3,7 +3,8 @@
17186
17187 /* { dg-do assemble } */
17188 /* { dg-require-effective-target arm_neon_ok } */
17189-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17190+/* { dg-options "-save-temps -O0" } */
17191+/* { dg-add-options arm_neon } */
17192
17193 #include "arm_neon.h"
17194
17195Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
17196===================================================================
17197--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
17198+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
17199@@ -3,7 +3,8 @@
17200
17201 /* { dg-do assemble } */
17202 /* { dg-require-effective-target arm_neon_ok } */
17203-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17204+/* { dg-options "-save-temps -O0" } */
17205+/* { dg-add-options arm_neon } */
17206
17207 #include "arm_neon.h"
17208
17209Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
17210===================================================================
17211--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
17212+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
17213@@ -3,7 +3,8 @@
17214
17215 /* { dg-do assemble } */
17216 /* { dg-require-effective-target arm_neon_ok } */
17217-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17218+/* { dg-options "-save-temps -O0" } */
17219+/* { dg-add-options arm_neon } */
17220
17221 #include "arm_neon.h"
17222
17223Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
17224===================================================================
17225--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
17226+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
17227@@ -3,7 +3,8 @@
17228
17229 /* { dg-do assemble } */
17230 /* { dg-require-effective-target arm_neon_ok } */
17231-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17232+/* { dg-options "-save-temps -O0" } */
17233+/* { dg-add-options arm_neon } */
17234
17235 #include "arm_neon.h"
17236
17237Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
17238===================================================================
17239--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
17240+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
17241@@ -3,7 +3,8 @@
17242
17243 /* { dg-do assemble } */
17244 /* { dg-require-effective-target arm_neon_ok } */
17245-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17246+/* { dg-options "-save-temps -O0" } */
17247+/* { dg-add-options arm_neon } */
17248
17249 #include "arm_neon.h"
17250
17251Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
17252===================================================================
17253--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
17254+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
17255@@ -3,7 +3,8 @@
17256
17257 /* { dg-do assemble } */
17258 /* { dg-require-effective-target arm_neon_ok } */
17259-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17260+/* { dg-options "-save-temps -O0" } */
17261+/* { dg-add-options arm_neon } */
17262
17263 #include "arm_neon.h"
17264
17265Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
17266===================================================================
17267--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
17268+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
17269@@ -3,7 +3,8 @@
17270
17271 /* { dg-do assemble } */
17272 /* { dg-require-effective-target arm_neon_ok } */
17273-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17274+/* { dg-options "-save-temps -O0" } */
17275+/* { dg-add-options arm_neon } */
17276
17277 #include "arm_neon.h"
17278
17279Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
17280===================================================================
17281--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
17282+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
17283@@ -3,7 +3,8 @@
17284
17285 /* { dg-do assemble } */
17286 /* { dg-require-effective-target arm_neon_ok } */
17287-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17288+/* { dg-options "-save-temps -O0" } */
17289+/* { dg-add-options arm_neon } */
17290
17291 #include "arm_neon.h"
17292
17293Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
17294===================================================================
17295--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
17296+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
17297@@ -3,7 +3,8 @@
17298
17299 /* { dg-do assemble } */
17300 /* { dg-require-effective-target arm_neon_ok } */
17301-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17302+/* { dg-options "-save-temps -O0" } */
17303+/* { dg-add-options arm_neon } */
17304
17305 #include "arm_neon.h"
17306
17307Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
17308===================================================================
17309--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
17310+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
17311@@ -3,7 +3,8 @@
17312
17313 /* { dg-do assemble } */
17314 /* { dg-require-effective-target arm_neon_ok } */
17315-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17316+/* { dg-options "-save-temps -O0" } */
17317+/* { dg-add-options arm_neon } */
17318
17319 #include "arm_neon.h"
17320
17321Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
17322===================================================================
17323--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
17324+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
17325@@ -3,7 +3,8 @@
17326
17327 /* { dg-do assemble } */
17328 /* { dg-require-effective-target arm_neon_ok } */
17329-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17330+/* { dg-options "-save-temps -O0" } */
17331+/* { dg-add-options arm_neon } */
17332
17333 #include "arm_neon.h"
17334
17335Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
17336===================================================================
17337--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
17338+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
17339@@ -3,7 +3,8 @@
17340
17341 /* { dg-do assemble } */
17342 /* { dg-require-effective-target arm_neon_ok } */
17343-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17344+/* { dg-options "-save-temps -O0" } */
17345+/* { dg-add-options arm_neon } */
17346
17347 #include "arm_neon.h"
17348
17349Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
17350===================================================================
17351--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
17352+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
17353@@ -3,7 +3,8 @@
17354
17355 /* { dg-do assemble } */
17356 /* { dg-require-effective-target arm_neon_ok } */
17357-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17358+/* { dg-options "-save-temps -O0" } */
17359+/* { dg-add-options arm_neon } */
17360
17361 #include "arm_neon.h"
17362
17363Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
17364===================================================================
17365--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
17366+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
17367@@ -3,7 +3,8 @@
17368
17369 /* { dg-do assemble } */
17370 /* { dg-require-effective-target arm_neon_ok } */
17371-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17372+/* { dg-options "-save-temps -O0" } */
17373+/* { dg-add-options arm_neon } */
17374
17375 #include "arm_neon.h"
17376
17377Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
17378===================================================================
17379--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
17380+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
17381@@ -3,7 +3,8 @@
17382
17383 /* { dg-do assemble } */
17384 /* { dg-require-effective-target arm_neon_ok } */
17385-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17386+/* { dg-options "-save-temps -O0" } */
17387+/* { dg-add-options arm_neon } */
17388
17389 #include "arm_neon.h"
17390
17391Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
17392===================================================================
17393--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
17394+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
17395@@ -3,7 +3,8 @@
17396
17397 /* { dg-do assemble } */
17398 /* { dg-require-effective-target arm_neon_ok } */
17399-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17400+/* { dg-options "-save-temps -O0" } */
17401+/* { dg-add-options arm_neon } */
17402
17403 #include "arm_neon.h"
17404
17405Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
17406===================================================================
17407--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
17408+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
17409@@ -3,7 +3,8 @@
17410
17411 /* { dg-do assemble } */
17412 /* { dg-require-effective-target arm_neon_ok } */
17413-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17414+/* { dg-options "-save-temps -O0" } */
17415+/* { dg-add-options arm_neon } */
17416
17417 #include "arm_neon.h"
17418
17419Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
17420===================================================================
17421--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
17422+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
17423@@ -3,7 +3,8 @@
17424
17425 /* { dg-do assemble } */
17426 /* { dg-require-effective-target arm_neon_ok } */
17427-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17428+/* { dg-options "-save-temps -O0" } */
17429+/* { dg-add-options arm_neon } */
17430
17431 #include "arm_neon.h"
17432
17433Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
17434===================================================================
17435--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
17436+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
17437@@ -3,7 +3,8 @@
17438
17439 /* { dg-do assemble } */
17440 /* { dg-require-effective-target arm_neon_ok } */
17441-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17442+/* { dg-options "-save-temps -O0" } */
17443+/* { dg-add-options arm_neon } */
17444
17445 #include "arm_neon.h"
17446
17447Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
17448===================================================================
17449--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
17450+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
17451@@ -3,7 +3,8 @@
17452
17453 /* { dg-do assemble } */
17454 /* { dg-require-effective-target arm_neon_ok } */
17455-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17456+/* { dg-options "-save-temps -O0" } */
17457+/* { dg-add-options arm_neon } */
17458
17459 #include "arm_neon.h"
17460
17461Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
17462===================================================================
17463--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
17464+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
17465@@ -3,7 +3,8 @@
17466
17467 /* { dg-do assemble } */
17468 /* { dg-require-effective-target arm_neon_ok } */
17469-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17470+/* { dg-options "-save-temps -O0" } */
17471+/* { dg-add-options arm_neon } */
17472
17473 #include "arm_neon.h"
17474
17475Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
17476===================================================================
17477--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
17478+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
17479@@ -3,7 +3,8 @@
17480
17481 /* { dg-do assemble } */
17482 /* { dg-require-effective-target arm_neon_ok } */
17483-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17484+/* { dg-options "-save-temps -O0" } */
17485+/* { dg-add-options arm_neon } */
17486
17487 #include "arm_neon.h"
17488
17489Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
17490===================================================================
17491--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
17492+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
17493@@ -3,7 +3,8 @@
17494
17495 /* { dg-do assemble } */
17496 /* { dg-require-effective-target arm_neon_ok } */
17497-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17498+/* { dg-options "-save-temps -O0" } */
17499+/* { dg-add-options arm_neon } */
17500
17501 #include "arm_neon.h"
17502
17503Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
17504===================================================================
17505--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
17506+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
17507@@ -3,7 +3,8 @@
17508
17509 /* { dg-do assemble } */
17510 /* { dg-require-effective-target arm_neon_ok } */
17511-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17512+/* { dg-options "-save-temps -O0" } */
17513+/* { dg-add-options arm_neon } */
17514
17515 #include "arm_neon.h"
17516
17517Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
17518===================================================================
17519--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
17520+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
17521@@ -3,7 +3,8 @@
17522
17523 /* { dg-do assemble } */
17524 /* { dg-require-effective-target arm_neon_ok } */
17525-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17526+/* { dg-options "-save-temps -O0" } */
17527+/* { dg-add-options arm_neon } */
17528
17529 #include "arm_neon.h"
17530
17531Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
17532===================================================================
17533--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
17534+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
17535@@ -3,7 +3,8 @@
17536
17537 /* { dg-do assemble } */
17538 /* { dg-require-effective-target arm_neon_ok } */
17539-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17540+/* { dg-options "-save-temps -O0" } */
17541+/* { dg-add-options arm_neon } */
17542
17543 #include "arm_neon.h"
17544
17545Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
17546===================================================================
17547--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
17548+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
17549@@ -3,7 +3,8 @@
17550
17551 /* { dg-do assemble } */
17552 /* { dg-require-effective-target arm_neon_ok } */
17553-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17554+/* { dg-options "-save-temps -O0" } */
17555+/* { dg-add-options arm_neon } */
17556
17557 #include "arm_neon.h"
17558
17559Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
17560===================================================================
17561--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
17562+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
17563@@ -3,7 +3,8 @@
17564
17565 /* { dg-do assemble } */
17566 /* { dg-require-effective-target arm_neon_ok } */
17567-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17568+/* { dg-options "-save-temps -O0" } */
17569+/* { dg-add-options arm_neon } */
17570
17571 #include "arm_neon.h"
17572
17573Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
17574===================================================================
17575--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
17576+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
17577@@ -3,7 +3,8 @@
17578
17579 /* { dg-do assemble } */
17580 /* { dg-require-effective-target arm_neon_ok } */
17581-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17582+/* { dg-options "-save-temps -O0" } */
17583+/* { dg-add-options arm_neon } */
17584
17585 #include "arm_neon.h"
17586
17587Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
17588===================================================================
17589--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
17590+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
17591@@ -3,7 +3,8 @@
17592
17593 /* { dg-do assemble } */
17594 /* { dg-require-effective-target arm_neon_ok } */
17595-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17596+/* { dg-options "-save-temps -O0" } */
17597+/* { dg-add-options arm_neon } */
17598
17599 #include "arm_neon.h"
17600
17601Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
17602===================================================================
17603--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
17604+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
17605@@ -3,7 +3,8 @@
17606
17607 /* { dg-do assemble } */
17608 /* { dg-require-effective-target arm_neon_ok } */
17609-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17610+/* { dg-options "-save-temps -O0" } */
17611+/* { dg-add-options arm_neon } */
17612
17613 #include "arm_neon.h"
17614
17615Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
17616===================================================================
17617--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
17618+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
17619@@ -3,7 +3,8 @@
17620
17621 /* { dg-do assemble } */
17622 /* { dg-require-effective-target arm_neon_ok } */
17623-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17624+/* { dg-options "-save-temps -O0" } */
17625+/* { dg-add-options arm_neon } */
17626
17627 #include "arm_neon.h"
17628
17629Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
17630===================================================================
17631--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
17632+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
17633@@ -3,7 +3,8 @@
17634
17635 /* { dg-do assemble } */
17636 /* { dg-require-effective-target arm_neon_ok } */
17637-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17638+/* { dg-options "-save-temps -O0" } */
17639+/* { dg-add-options arm_neon } */
17640
17641 #include "arm_neon.h"
17642
17643Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
17644===================================================================
17645--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
17646+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
17647@@ -3,7 +3,8 @@
17648
17649 /* { dg-do assemble } */
17650 /* { dg-require-effective-target arm_neon_ok } */
17651-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17652+/* { dg-options "-save-temps -O0" } */
17653+/* { dg-add-options arm_neon } */
17654
17655 #include "arm_neon.h"
17656
17657Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
17658===================================================================
17659--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
17660+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
17661@@ -3,7 +3,8 @@
17662
17663 /* { dg-do assemble } */
17664 /* { dg-require-effective-target arm_neon_ok } */
17665-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17666+/* { dg-options "-save-temps -O0" } */
17667+/* { dg-add-options arm_neon } */
17668
17669 #include "arm_neon.h"
17670
17671Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
17672===================================================================
17673--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
17674+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
17675@@ -3,7 +3,8 @@
17676
17677 /* { dg-do assemble } */
17678 /* { dg-require-effective-target arm_neon_ok } */
17679-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17680+/* { dg-options "-save-temps -O0" } */
17681+/* { dg-add-options arm_neon } */
17682
17683 #include "arm_neon.h"
17684
17685Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
17686===================================================================
17687--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
17688+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
17689@@ -3,7 +3,8 @@
17690
17691 /* { dg-do assemble } */
17692 /* { dg-require-effective-target arm_neon_ok } */
17693-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17694+/* { dg-options "-save-temps -O0" } */
17695+/* { dg-add-options arm_neon } */
17696
17697 #include "arm_neon.h"
17698
17699Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
17700===================================================================
17701--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
17702+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
17703@@ -3,7 +3,8 @@
17704
17705 /* { dg-do assemble } */
17706 /* { dg-require-effective-target arm_neon_ok } */
17707-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17708+/* { dg-options "-save-temps -O0" } */
17709+/* { dg-add-options arm_neon } */
17710
17711 #include "arm_neon.h"
17712
17713Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
17714===================================================================
17715--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
17716+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
17717@@ -3,7 +3,8 @@
17718
17719 /* { dg-do assemble } */
17720 /* { dg-require-effective-target arm_neon_ok } */
17721-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17722+/* { dg-options "-save-temps -O0" } */
17723+/* { dg-add-options arm_neon } */
17724
17725 #include "arm_neon.h"
17726
17727Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
17728===================================================================
17729--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
17730+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
17731@@ -3,7 +3,8 @@
17732
17733 /* { dg-do assemble } */
17734 /* { dg-require-effective-target arm_neon_ok } */
17735-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17736+/* { dg-options "-save-temps -O0" } */
17737+/* { dg-add-options arm_neon } */
17738
17739 #include "arm_neon.h"
17740
17741Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
17742===================================================================
17743--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
17744+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
17745@@ -3,7 +3,8 @@
17746
17747 /* { dg-do assemble } */
17748 /* { dg-require-effective-target arm_neon_ok } */
17749-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17750+/* { dg-options "-save-temps -O0" } */
17751+/* { dg-add-options arm_neon } */
17752
17753 #include "arm_neon.h"
17754
17755Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
17756===================================================================
17757--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
17758+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
17759@@ -3,7 +3,8 @@
17760
17761 /* { dg-do assemble } */
17762 /* { dg-require-effective-target arm_neon_ok } */
17763-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17764+/* { dg-options "-save-temps -O0" } */
17765+/* { dg-add-options arm_neon } */
17766
17767 #include "arm_neon.h"
17768
17769Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
17770===================================================================
17771--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
17772+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
17773@@ -3,7 +3,8 @@
17774
17775 /* { dg-do assemble } */
17776 /* { dg-require-effective-target arm_neon_ok } */
17777-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17778+/* { dg-options "-save-temps -O0" } */
17779+/* { dg-add-options arm_neon } */
17780
17781 #include "arm_neon.h"
17782
17783Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
17784===================================================================
17785--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
17786+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
17787@@ -3,7 +3,8 @@
17788
17789 /* { dg-do assemble } */
17790 /* { dg-require-effective-target arm_neon_ok } */
17791-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17792+/* { dg-options "-save-temps -O0" } */
17793+/* { dg-add-options arm_neon } */
17794
17795 #include "arm_neon.h"
17796
17797Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
17798===================================================================
17799--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
17800+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
17801@@ -3,7 +3,8 @@
17802
17803 /* { dg-do assemble } */
17804 /* { dg-require-effective-target arm_neon_ok } */
17805-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17806+/* { dg-options "-save-temps -O0" } */
17807+/* { dg-add-options arm_neon } */
17808
17809 #include "arm_neon.h"
17810
17811Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
17812===================================================================
17813--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
17814+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
17815@@ -3,7 +3,8 @@
17816
17817 /* { dg-do assemble } */
17818 /* { dg-require-effective-target arm_neon_ok } */
17819-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17820+/* { dg-options "-save-temps -O0" } */
17821+/* { dg-add-options arm_neon } */
17822
17823 #include "arm_neon.h"
17824
17825Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
17826===================================================================
17827--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
17828+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
17829@@ -3,7 +3,8 @@
17830
17831 /* { dg-do assemble } */
17832 /* { dg-require-effective-target arm_neon_ok } */
17833-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17834+/* { dg-options "-save-temps -O0" } */
17835+/* { dg-add-options arm_neon } */
17836
17837 #include "arm_neon.h"
17838
17839Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
17840===================================================================
17841--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
17842+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
17843@@ -3,7 +3,8 @@
17844
17845 /* { dg-do assemble } */
17846 /* { dg-require-effective-target arm_neon_ok } */
17847-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17848+/* { dg-options "-save-temps -O0" } */
17849+/* { dg-add-options arm_neon } */
17850
17851 #include "arm_neon.h"
17852
17853Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
17854===================================================================
17855--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
17856+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
17857@@ -3,7 +3,8 @@
17858
17859 /* { dg-do assemble } */
17860 /* { dg-require-effective-target arm_neon_ok } */
17861-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17862+/* { dg-options "-save-temps -O0" } */
17863+/* { dg-add-options arm_neon } */
17864
17865 #include "arm_neon.h"
17866
17867Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
17868===================================================================
17869--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
17870+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
17871@@ -3,7 +3,8 @@
17872
17873 /* { dg-do assemble } */
17874 /* { dg-require-effective-target arm_neon_ok } */
17875-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17876+/* { dg-options "-save-temps -O0" } */
17877+/* { dg-add-options arm_neon } */
17878
17879 #include "arm_neon.h"
17880
17881Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
17882===================================================================
17883--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
17884+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
17885@@ -3,7 +3,8 @@
17886
17887 /* { dg-do assemble } */
17888 /* { dg-require-effective-target arm_neon_ok } */
17889-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17890+/* { dg-options "-save-temps -O0" } */
17891+/* { dg-add-options arm_neon } */
17892
17893 #include "arm_neon.h"
17894
17895Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
17896===================================================================
17897--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
17898+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
17899@@ -3,7 +3,8 @@
17900
17901 /* { dg-do assemble } */
17902 /* { dg-require-effective-target arm_neon_ok } */
17903-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17904+/* { dg-options "-save-temps -O0" } */
17905+/* { dg-add-options arm_neon } */
17906
17907 #include "arm_neon.h"
17908
17909Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
17910===================================================================
17911--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
17912+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
17913@@ -3,7 +3,8 @@
17914
17915 /* { dg-do assemble } */
17916 /* { dg-require-effective-target arm_neon_ok } */
17917-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17918+/* { dg-options "-save-temps -O0" } */
17919+/* { dg-add-options arm_neon } */
17920
17921 #include "arm_neon.h"
17922
17923Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
17924===================================================================
17925--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
17926+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
17927@@ -3,7 +3,8 @@
17928
17929 /* { dg-do assemble } */
17930 /* { dg-require-effective-target arm_neon_ok } */
17931-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17932+/* { dg-options "-save-temps -O0" } */
17933+/* { dg-add-options arm_neon } */
17934
17935 #include "arm_neon.h"
17936
17937Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
17938===================================================================
17939--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
17940+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
17941@@ -3,7 +3,8 @@
17942
17943 /* { dg-do assemble } */
17944 /* { dg-require-effective-target arm_neon_ok } */
17945-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17946+/* { dg-options "-save-temps -O0" } */
17947+/* { dg-add-options arm_neon } */
17948
17949 #include "arm_neon.h"
17950
17951Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
17952===================================================================
17953--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
17954+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
17955@@ -3,7 +3,8 @@
17956
17957 /* { dg-do assemble } */
17958 /* { dg-require-effective-target arm_neon_ok } */
17959-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17960+/* { dg-options "-save-temps -O0" } */
17961+/* { dg-add-options arm_neon } */
17962
17963 #include "arm_neon.h"
17964
17965Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
17966===================================================================
17967--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
17968+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
17969@@ -3,7 +3,8 @@
17970
17971 /* { dg-do assemble } */
17972 /* { dg-require-effective-target arm_neon_ok } */
17973-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17974+/* { dg-options "-save-temps -O0" } */
17975+/* { dg-add-options arm_neon } */
17976
17977 #include "arm_neon.h"
17978
17979Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
17980===================================================================
17981--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
17982+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
17983@@ -3,7 +3,8 @@
17984
17985 /* { dg-do assemble } */
17986 /* { dg-require-effective-target arm_neon_ok } */
17987-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
17988+/* { dg-options "-save-temps -O0" } */
17989+/* { dg-add-options arm_neon } */
17990
17991 #include "arm_neon.h"
17992
17993Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
17994===================================================================
17995--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
17996+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
17997@@ -3,7 +3,8 @@
17998
17999 /* { dg-do assemble } */
18000 /* { dg-require-effective-target arm_neon_ok } */
18001-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18002+/* { dg-options "-save-temps -O0" } */
18003+/* { dg-add-options arm_neon } */
18004
18005 #include "arm_neon.h"
18006
18007Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
18008===================================================================
18009--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
18010+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
18011@@ -3,7 +3,8 @@
18012
18013 /* { dg-do assemble } */
18014 /* { dg-require-effective-target arm_neon_ok } */
18015-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18016+/* { dg-options "-save-temps -O0" } */
18017+/* { dg-add-options arm_neon } */
18018
18019 #include "arm_neon.h"
18020
18021Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
18022===================================================================
18023--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
18024+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
18025@@ -3,7 +3,8 @@
18026
18027 /* { dg-do assemble } */
18028 /* { dg-require-effective-target arm_neon_ok } */
18029-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18030+/* { dg-options "-save-temps -O0" } */
18031+/* { dg-add-options arm_neon } */
18032
18033 #include "arm_neon.h"
18034
18035Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
18036===================================================================
18037--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
18038+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
18039@@ -3,7 +3,8 @@
18040
18041 /* { dg-do assemble } */
18042 /* { dg-require-effective-target arm_neon_ok } */
18043-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18044+/* { dg-options "-save-temps -O0" } */
18045+/* { dg-add-options arm_neon } */
18046
18047 #include "arm_neon.h"
18048
18049Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
18050===================================================================
18051--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
18052+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
18053@@ -3,7 +3,8 @@
18054
18055 /* { dg-do assemble } */
18056 /* { dg-require-effective-target arm_neon_ok } */
18057-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18058+/* { dg-options "-save-temps -O0" } */
18059+/* { dg-add-options arm_neon } */
18060
18061 #include "arm_neon.h"
18062
18063Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
18064===================================================================
18065--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
18066+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
18067@@ -3,7 +3,8 @@
18068
18069 /* { dg-do assemble } */
18070 /* { dg-require-effective-target arm_neon_ok } */
18071-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18072+/* { dg-options "-save-temps -O0" } */
18073+/* { dg-add-options arm_neon } */
18074
18075 #include "arm_neon.h"
18076
18077Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
18078===================================================================
18079--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
18080+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
18081@@ -3,7 +3,8 @@
18082
18083 /* { dg-do assemble } */
18084 /* { dg-require-effective-target arm_neon_ok } */
18085-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18086+/* { dg-options "-save-temps -O0" } */
18087+/* { dg-add-options arm_neon } */
18088
18089 #include "arm_neon.h"
18090
18091Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
18092===================================================================
18093--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
18094+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
18095@@ -3,7 +3,8 @@
18096
18097 /* { dg-do assemble } */
18098 /* { dg-require-effective-target arm_neon_ok } */
18099-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18100+/* { dg-options "-save-temps -O0" } */
18101+/* { dg-add-options arm_neon } */
18102
18103 #include "arm_neon.h"
18104
18105Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
18106===================================================================
18107--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
18108+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
18109@@ -3,7 +3,8 @@
18110
18111 /* { dg-do assemble } */
18112 /* { dg-require-effective-target arm_neon_ok } */
18113-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18114+/* { dg-options "-save-temps -O0" } */
18115+/* { dg-add-options arm_neon } */
18116
18117 #include "arm_neon.h"
18118
18119Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
18120===================================================================
18121--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
18122+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
18123@@ -3,7 +3,8 @@
18124
18125 /* { dg-do assemble } */
18126 /* { dg-require-effective-target arm_neon_ok } */
18127-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18128+/* { dg-options "-save-temps -O0" } */
18129+/* { dg-add-options arm_neon } */
18130
18131 #include "arm_neon.h"
18132
18133Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
18134===================================================================
18135--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
18136+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
18137@@ -3,7 +3,8 @@
18138
18139 /* { dg-do assemble } */
18140 /* { dg-require-effective-target arm_neon_ok } */
18141-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18142+/* { dg-options "-save-temps -O0" } */
18143+/* { dg-add-options arm_neon } */
18144
18145 #include "arm_neon.h"
18146
18147Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
18148===================================================================
18149--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
18150+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
18151@@ -3,7 +3,8 @@
18152
18153 /* { dg-do assemble } */
18154 /* { dg-require-effective-target arm_neon_ok } */
18155-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18156+/* { dg-options "-save-temps -O0" } */
18157+/* { dg-add-options arm_neon } */
18158
18159 #include "arm_neon.h"
18160
18161Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
18162===================================================================
18163--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
18164+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
18165@@ -3,7 +3,8 @@
18166
18167 /* { dg-do assemble } */
18168 /* { dg-require-effective-target arm_neon_ok } */
18169-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18170+/* { dg-options "-save-temps -O0" } */
18171+/* { dg-add-options arm_neon } */
18172
18173 #include "arm_neon.h"
18174
18175Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
18176===================================================================
18177--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
18178+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
18179@@ -3,7 +3,8 @@
18180
18181 /* { dg-do assemble } */
18182 /* { dg-require-effective-target arm_neon_ok } */
18183-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18184+/* { dg-options "-save-temps -O0" } */
18185+/* { dg-add-options arm_neon } */
18186
18187 #include "arm_neon.h"
18188
18189Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
18190===================================================================
18191--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
18192+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
18193@@ -3,7 +3,8 @@
18194
18195 /* { dg-do assemble } */
18196 /* { dg-require-effective-target arm_neon_ok } */
18197-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18198+/* { dg-options "-save-temps -O0" } */
18199+/* { dg-add-options arm_neon } */
18200
18201 #include "arm_neon.h"
18202
18203Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
18204===================================================================
18205--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
18206+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
18207@@ -3,7 +3,8 @@
18208
18209 /* { dg-do assemble } */
18210 /* { dg-require-effective-target arm_neon_ok } */
18211-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18212+/* { dg-options "-save-temps -O0" } */
18213+/* { dg-add-options arm_neon } */
18214
18215 #include "arm_neon.h"
18216
18217Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
18218===================================================================
18219--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
18220+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
18221@@ -3,7 +3,8 @@
18222
18223 /* { dg-do assemble } */
18224 /* { dg-require-effective-target arm_neon_ok } */
18225-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18226+/* { dg-options "-save-temps -O0" } */
18227+/* { dg-add-options arm_neon } */
18228
18229 #include "arm_neon.h"
18230
18231Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
18232===================================================================
18233--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
18234+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
18235@@ -3,7 +3,8 @@
18236
18237 /* { dg-do assemble } */
18238 /* { dg-require-effective-target arm_neon_ok } */
18239-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18240+/* { dg-options "-save-temps -O0" } */
18241+/* { dg-add-options arm_neon } */
18242
18243 #include "arm_neon.h"
18244
18245Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
18246===================================================================
18247--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
18248+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
18249@@ -3,7 +3,8 @@
18250
18251 /* { dg-do assemble } */
18252 /* { dg-require-effective-target arm_neon_ok } */
18253-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18254+/* { dg-options "-save-temps -O0" } */
18255+/* { dg-add-options arm_neon } */
18256
18257 #include "arm_neon.h"
18258
18259Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
18260===================================================================
18261--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
18262+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
18263@@ -3,7 +3,8 @@
18264
18265 /* { dg-do assemble } */
18266 /* { dg-require-effective-target arm_neon_ok } */
18267-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18268+/* { dg-options "-save-temps -O0" } */
18269+/* { dg-add-options arm_neon } */
18270
18271 #include "arm_neon.h"
18272
18273Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
18274===================================================================
18275--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
18276+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
18277@@ -3,7 +3,8 @@
18278
18279 /* { dg-do assemble } */
18280 /* { dg-require-effective-target arm_neon_ok } */
18281-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18282+/* { dg-options "-save-temps -O0" } */
18283+/* { dg-add-options arm_neon } */
18284
18285 #include "arm_neon.h"
18286
18287Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
18288===================================================================
18289--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
18290+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
18291@@ -3,7 +3,8 @@
18292
18293 /* { dg-do assemble } */
18294 /* { dg-require-effective-target arm_neon_ok } */
18295-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18296+/* { dg-options "-save-temps -O0" } */
18297+/* { dg-add-options arm_neon } */
18298
18299 #include "arm_neon.h"
18300
18301Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
18302===================================================================
18303--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
18304+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
18305@@ -3,7 +3,8 @@
18306
18307 /* { dg-do assemble } */
18308 /* { dg-require-effective-target arm_neon_ok } */
18309-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18310+/* { dg-options "-save-temps -O0" } */
18311+/* { dg-add-options arm_neon } */
18312
18313 #include "arm_neon.h"
18314
18315Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
18316===================================================================
18317--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
18318+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
18319@@ -3,7 +3,8 @@
18320
18321 /* { dg-do assemble } */
18322 /* { dg-require-effective-target arm_neon_ok } */
18323-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18324+/* { dg-options "-save-temps -O0" } */
18325+/* { dg-add-options arm_neon } */
18326
18327 #include "arm_neon.h"
18328
18329Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
18330===================================================================
18331--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
18332+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
18333@@ -3,7 +3,8 @@
18334
18335 /* { dg-do assemble } */
18336 /* { dg-require-effective-target arm_neon_ok } */
18337-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18338+/* { dg-options "-save-temps -O0" } */
18339+/* { dg-add-options arm_neon } */
18340
18341 #include "arm_neon.h"
18342
18343Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
18344===================================================================
18345--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
18346+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
18347@@ -3,7 +3,8 @@
18348
18349 /* { dg-do assemble } */
18350 /* { dg-require-effective-target arm_neon_ok } */
18351-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18352+/* { dg-options "-save-temps -O0" } */
18353+/* { dg-add-options arm_neon } */
18354
18355 #include "arm_neon.h"
18356
18357Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
18358===================================================================
18359--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
18360+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
18361@@ -3,7 +3,8 @@
18362
18363 /* { dg-do assemble } */
18364 /* { dg-require-effective-target arm_neon_ok } */
18365-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18366+/* { dg-options "-save-temps -O0" } */
18367+/* { dg-add-options arm_neon } */
18368
18369 #include "arm_neon.h"
18370
18371Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
18372===================================================================
18373--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
18374+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
18375@@ -3,7 +3,8 @@
18376
18377 /* { dg-do assemble } */
18378 /* { dg-require-effective-target arm_neon_ok } */
18379-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18380+/* { dg-options "-save-temps -O0" } */
18381+/* { dg-add-options arm_neon } */
18382
18383 #include "arm_neon.h"
18384
18385Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
18386===================================================================
18387--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
18388+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
18389@@ -3,7 +3,8 @@
18390
18391 /* { dg-do assemble } */
18392 /* { dg-require-effective-target arm_neon_ok } */
18393-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18394+/* { dg-options "-save-temps -O0" } */
18395+/* { dg-add-options arm_neon } */
18396
18397 #include "arm_neon.h"
18398
18399Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
18400===================================================================
18401--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
18402+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
18403@@ -3,7 +3,8 @@
18404
18405 /* { dg-do assemble } */
18406 /* { dg-require-effective-target arm_neon_ok } */
18407-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18408+/* { dg-options "-save-temps -O0" } */
18409+/* { dg-add-options arm_neon } */
18410
18411 #include "arm_neon.h"
18412
18413Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
18414===================================================================
18415--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
18416+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
18417@@ -3,7 +3,8 @@
18418
18419 /* { dg-do assemble } */
18420 /* { dg-require-effective-target arm_neon_ok } */
18421-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18422+/* { dg-options "-save-temps -O0" } */
18423+/* { dg-add-options arm_neon } */
18424
18425 #include "arm_neon.h"
18426
18427Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
18428===================================================================
18429--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
18430+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
18431@@ -3,7 +3,8 @@
18432
18433 /* { dg-do assemble } */
18434 /* { dg-require-effective-target arm_neon_ok } */
18435-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18436+/* { dg-options "-save-temps -O0" } */
18437+/* { dg-add-options arm_neon } */
18438
18439 #include "arm_neon.h"
18440
18441Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
18442===================================================================
18443--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
18444+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
18445@@ -3,7 +3,8 @@
18446
18447 /* { dg-do assemble } */
18448 /* { dg-require-effective-target arm_neon_ok } */
18449-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18450+/* { dg-options "-save-temps -O0" } */
18451+/* { dg-add-options arm_neon } */
18452
18453 #include "arm_neon.h"
18454
18455Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
18456===================================================================
18457--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
18458+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
18459@@ -3,7 +3,8 @@
18460
18461 /* { dg-do assemble } */
18462 /* { dg-require-effective-target arm_neon_ok } */
18463-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18464+/* { dg-options "-save-temps -O0" } */
18465+/* { dg-add-options arm_neon } */
18466
18467 #include "arm_neon.h"
18468
18469Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
18470===================================================================
18471--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
18472+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
18473@@ -3,7 +3,8 @@
18474
18475 /* { dg-do assemble } */
18476 /* { dg-require-effective-target arm_neon_ok } */
18477-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18478+/* { dg-options "-save-temps -O0" } */
18479+/* { dg-add-options arm_neon } */
18480
18481 #include "arm_neon.h"
18482
18483Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
18484===================================================================
18485--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
18486+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
18487@@ -3,7 +3,8 @@
18488
18489 /* { dg-do assemble } */
18490 /* { dg-require-effective-target arm_neon_ok } */
18491-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18492+/* { dg-options "-save-temps -O0" } */
18493+/* { dg-add-options arm_neon } */
18494
18495 #include "arm_neon.h"
18496
18497Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
18498===================================================================
18499--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
18500+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
18501@@ -3,7 +3,8 @@
18502
18503 /* { dg-do assemble } */
18504 /* { dg-require-effective-target arm_neon_ok } */
18505-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18506+/* { dg-options "-save-temps -O0" } */
18507+/* { dg-add-options arm_neon } */
18508
18509 #include "arm_neon.h"
18510
18511Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
18512===================================================================
18513--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
18514+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
18515@@ -3,7 +3,8 @@
18516
18517 /* { dg-do assemble } */
18518 /* { dg-require-effective-target arm_neon_ok } */
18519-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18520+/* { dg-options "-save-temps -O0" } */
18521+/* { dg-add-options arm_neon } */
18522
18523 #include "arm_neon.h"
18524
18525Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
18526===================================================================
18527--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
18528+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
18529@@ -3,7 +3,8 @@
18530
18531 /* { dg-do assemble } */
18532 /* { dg-require-effective-target arm_neon_ok } */
18533-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18534+/* { dg-options "-save-temps -O0" } */
18535+/* { dg-add-options arm_neon } */
18536
18537 #include "arm_neon.h"
18538
18539Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
18540===================================================================
18541--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
18542+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
18543@@ -3,7 +3,8 @@
18544
18545 /* { dg-do assemble } */
18546 /* { dg-require-effective-target arm_neon_ok } */
18547-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18548+/* { dg-options "-save-temps -O0" } */
18549+/* { dg-add-options arm_neon } */
18550
18551 #include "arm_neon.h"
18552
18553Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
18554===================================================================
18555--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
18556+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
18557@@ -3,7 +3,8 @@
18558
18559 /* { dg-do assemble } */
18560 /* { dg-require-effective-target arm_neon_ok } */
18561-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18562+/* { dg-options "-save-temps -O0" } */
18563+/* { dg-add-options arm_neon } */
18564
18565 #include "arm_neon.h"
18566
18567Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
18568===================================================================
18569--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
18570+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
18571@@ -3,7 +3,8 @@
18572
18573 /* { dg-do assemble } */
18574 /* { dg-require-effective-target arm_neon_ok } */
18575-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18576+/* { dg-options "-save-temps -O0" } */
18577+/* { dg-add-options arm_neon } */
18578
18579 #include "arm_neon.h"
18580
18581Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
18582===================================================================
18583--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
18584+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
18585@@ -3,7 +3,8 @@
18586
18587 /* { dg-do assemble } */
18588 /* { dg-require-effective-target arm_neon_ok } */
18589-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18590+/* { dg-options "-save-temps -O0" } */
18591+/* { dg-add-options arm_neon } */
18592
18593 #include "arm_neon.h"
18594
18595Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
18596===================================================================
18597--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
18598+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
18599@@ -3,7 +3,8 @@
18600
18601 /* { dg-do assemble } */
18602 /* { dg-require-effective-target arm_neon_ok } */
18603-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18604+/* { dg-options "-save-temps -O0" } */
18605+/* { dg-add-options arm_neon } */
18606
18607 #include "arm_neon.h"
18608
18609Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
18610===================================================================
18611--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
18612+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
18613@@ -3,7 +3,8 @@
18614
18615 /* { dg-do assemble } */
18616 /* { dg-require-effective-target arm_neon_ok } */
18617-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18618+/* { dg-options "-save-temps -O0" } */
18619+/* { dg-add-options arm_neon } */
18620
18621 #include "arm_neon.h"
18622
18623Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
18624===================================================================
18625--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
18626+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
18627@@ -3,7 +3,8 @@
18628
18629 /* { dg-do assemble } */
18630 /* { dg-require-effective-target arm_neon_ok } */
18631-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18632+/* { dg-options "-save-temps -O0" } */
18633+/* { dg-add-options arm_neon } */
18634
18635 #include "arm_neon.h"
18636
18637Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
18638===================================================================
18639--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
18640+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
18641@@ -3,7 +3,8 @@
18642
18643 /* { dg-do assemble } */
18644 /* { dg-require-effective-target arm_neon_ok } */
18645-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18646+/* { dg-options "-save-temps -O0" } */
18647+/* { dg-add-options arm_neon } */
18648
18649 #include "arm_neon.h"
18650
18651Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
18652===================================================================
18653--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
18654+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
18655@@ -3,7 +3,8 @@
18656
18657 /* { dg-do assemble } */
18658 /* { dg-require-effective-target arm_neon_ok } */
18659-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18660+/* { dg-options "-save-temps -O0" } */
18661+/* { dg-add-options arm_neon } */
18662
18663 #include "arm_neon.h"
18664
18665Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
18666===================================================================
18667--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
18668+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
18669@@ -3,7 +3,8 @@
18670
18671 /* { dg-do assemble } */
18672 /* { dg-require-effective-target arm_neon_ok } */
18673-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18674+/* { dg-options "-save-temps -O0" } */
18675+/* { dg-add-options arm_neon } */
18676
18677 #include "arm_neon.h"
18678
18679Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
18680===================================================================
18681--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
18682+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
18683@@ -3,7 +3,8 @@
18684
18685 /* { dg-do assemble } */
18686 /* { dg-require-effective-target arm_neon_ok } */
18687-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18688+/* { dg-options "-save-temps -O0" } */
18689+/* { dg-add-options arm_neon } */
18690
18691 #include "arm_neon.h"
18692
18693Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
18694===================================================================
18695--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
18696+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
18697@@ -3,7 +3,8 @@
18698
18699 /* { dg-do assemble } */
18700 /* { dg-require-effective-target arm_neon_ok } */
18701-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18702+/* { dg-options "-save-temps -O0" } */
18703+/* { dg-add-options arm_neon } */
18704
18705 #include "arm_neon.h"
18706
18707Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
18708===================================================================
18709--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
18710+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
18711@@ -3,7 +3,8 @@
18712
18713 /* { dg-do assemble } */
18714 /* { dg-require-effective-target arm_neon_ok } */
18715-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18716+/* { dg-options "-save-temps -O0" } */
18717+/* { dg-add-options arm_neon } */
18718
18719 #include "arm_neon.h"
18720
18721Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
18722===================================================================
18723--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
18724+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
18725@@ -3,7 +3,8 @@
18726
18727 /* { dg-do assemble } */
18728 /* { dg-require-effective-target arm_neon_ok } */
18729-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18730+/* { dg-options "-save-temps -O0" } */
18731+/* { dg-add-options arm_neon } */
18732
18733 #include "arm_neon.h"
18734
18735Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
18736===================================================================
18737--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
18738+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
18739@@ -3,7 +3,8 @@
18740
18741 /* { dg-do assemble } */
18742 /* { dg-require-effective-target arm_neon_ok } */
18743-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18744+/* { dg-options "-save-temps -O0" } */
18745+/* { dg-add-options arm_neon } */
18746
18747 #include "arm_neon.h"
18748
18749Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
18750===================================================================
18751--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
18752+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
18753@@ -3,7 +3,8 @@
18754
18755 /* { dg-do assemble } */
18756 /* { dg-require-effective-target arm_neon_ok } */
18757-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18758+/* { dg-options "-save-temps -O0" } */
18759+/* { dg-add-options arm_neon } */
18760
18761 #include "arm_neon.h"
18762
18763Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
18764===================================================================
18765--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
18766+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
18767@@ -3,7 +3,8 @@
18768
18769 /* { dg-do assemble } */
18770 /* { dg-require-effective-target arm_neon_ok } */
18771-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18772+/* { dg-options "-save-temps -O0" } */
18773+/* { dg-add-options arm_neon } */
18774
18775 #include "arm_neon.h"
18776
18777Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
18778===================================================================
18779--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
18780+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
18781@@ -3,7 +3,8 @@
18782
18783 /* { dg-do assemble } */
18784 /* { dg-require-effective-target arm_neon_ok } */
18785-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18786+/* { dg-options "-save-temps -O0" } */
18787+/* { dg-add-options arm_neon } */
18788
18789 #include "arm_neon.h"
18790
18791Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
18792===================================================================
18793--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
18794+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
18795@@ -3,7 +3,8 @@
18796
18797 /* { dg-do assemble } */
18798 /* { dg-require-effective-target arm_neon_ok } */
18799-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18800+/* { dg-options "-save-temps -O0" } */
18801+/* { dg-add-options arm_neon } */
18802
18803 #include "arm_neon.h"
18804
18805Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
18806===================================================================
18807--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
18808+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
18809@@ -3,7 +3,8 @@
18810
18811 /* { dg-do assemble } */
18812 /* { dg-require-effective-target arm_neon_ok } */
18813-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18814+/* { dg-options "-save-temps -O0" } */
18815+/* { dg-add-options arm_neon } */
18816
18817 #include "arm_neon.h"
18818
18819Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
18820===================================================================
18821--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
18822+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
18823@@ -3,7 +3,8 @@
18824
18825 /* { dg-do assemble } */
18826 /* { dg-require-effective-target arm_neon_ok } */
18827-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18828+/* { dg-options "-save-temps -O0" } */
18829+/* { dg-add-options arm_neon } */
18830
18831 #include "arm_neon.h"
18832
18833Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
18834===================================================================
18835--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
18836+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
18837@@ -3,7 +3,8 @@
18838
18839 /* { dg-do assemble } */
18840 /* { dg-require-effective-target arm_neon_ok } */
18841-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18842+/* { dg-options "-save-temps -O0" } */
18843+/* { dg-add-options arm_neon } */
18844
18845 #include "arm_neon.h"
18846
18847Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
18848===================================================================
18849--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
18850+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
18851@@ -3,7 +3,8 @@
18852
18853 /* { dg-do assemble } */
18854 /* { dg-require-effective-target arm_neon_ok } */
18855-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18856+/* { dg-options "-save-temps -O0" } */
18857+/* { dg-add-options arm_neon } */
18858
18859 #include "arm_neon.h"
18860
18861Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
18862===================================================================
18863--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
18864+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
18865@@ -3,7 +3,8 @@
18866
18867 /* { dg-do assemble } */
18868 /* { dg-require-effective-target arm_neon_ok } */
18869-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18870+/* { dg-options "-save-temps -O0" } */
18871+/* { dg-add-options arm_neon } */
18872
18873 #include "arm_neon.h"
18874
18875Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
18876===================================================================
18877--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
18878+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
18879@@ -3,7 +3,8 @@
18880
18881 /* { dg-do assemble } */
18882 /* { dg-require-effective-target arm_neon_ok } */
18883-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18884+/* { dg-options "-save-temps -O0" } */
18885+/* { dg-add-options arm_neon } */
18886
18887 #include "arm_neon.h"
18888
18889Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
18890===================================================================
18891--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
18892+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
18893@@ -3,7 +3,8 @@
18894
18895 /* { dg-do assemble } */
18896 /* { dg-require-effective-target arm_neon_ok } */
18897-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18898+/* { dg-options "-save-temps -O0" } */
18899+/* { dg-add-options arm_neon } */
18900
18901 #include "arm_neon.h"
18902
18903Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
18904===================================================================
18905--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
18906+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
18907@@ -3,7 +3,8 @@
18908
18909 /* { dg-do assemble } */
18910 /* { dg-require-effective-target arm_neon_ok } */
18911-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18912+/* { dg-options "-save-temps -O0" } */
18913+/* { dg-add-options arm_neon } */
18914
18915 #include "arm_neon.h"
18916
18917Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
18918===================================================================
18919--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
18920+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
18921@@ -3,7 +3,8 @@
18922
18923 /* { dg-do assemble } */
18924 /* { dg-require-effective-target arm_neon_ok } */
18925-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18926+/* { dg-options "-save-temps -O0" } */
18927+/* { dg-add-options arm_neon } */
18928
18929 #include "arm_neon.h"
18930
18931Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
18932===================================================================
18933--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
18934+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
18935@@ -3,7 +3,8 @@
18936
18937 /* { dg-do assemble } */
18938 /* { dg-require-effective-target arm_neon_ok } */
18939-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18940+/* { dg-options "-save-temps -O0" } */
18941+/* { dg-add-options arm_neon } */
18942
18943 #include "arm_neon.h"
18944
18945Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
18946===================================================================
18947--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
18948+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
18949@@ -3,7 +3,8 @@
18950
18951 /* { dg-do assemble } */
18952 /* { dg-require-effective-target arm_neon_ok } */
18953-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18954+/* { dg-options "-save-temps -O0" } */
18955+/* { dg-add-options arm_neon } */
18956
18957 #include "arm_neon.h"
18958
18959Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
18960===================================================================
18961--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
18962+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
18963@@ -3,7 +3,8 @@
18964
18965 /* { dg-do assemble } */
18966 /* { dg-require-effective-target arm_neon_ok } */
18967-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18968+/* { dg-options "-save-temps -O0" } */
18969+/* { dg-add-options arm_neon } */
18970
18971 #include "arm_neon.h"
18972
18973Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
18974===================================================================
18975--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
18976+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
18977@@ -3,7 +3,8 @@
18978
18979 /* { dg-do assemble } */
18980 /* { dg-require-effective-target arm_neon_ok } */
18981-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18982+/* { dg-options "-save-temps -O0" } */
18983+/* { dg-add-options arm_neon } */
18984
18985 #include "arm_neon.h"
18986
18987Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
18988===================================================================
18989--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
18990+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
18991@@ -3,7 +3,8 @@
18992
18993 /* { dg-do assemble } */
18994 /* { dg-require-effective-target arm_neon_ok } */
18995-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
18996+/* { dg-options "-save-temps -O0" } */
18997+/* { dg-add-options arm_neon } */
18998
18999 #include "arm_neon.h"
19000
19001Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
19002===================================================================
19003--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
19004+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
19005@@ -3,7 +3,8 @@
19006
19007 /* { dg-do assemble } */
19008 /* { dg-require-effective-target arm_neon_ok } */
19009-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19010+/* { dg-options "-save-temps -O0" } */
19011+/* { dg-add-options arm_neon } */
19012
19013 #include "arm_neon.h"
19014
19015Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
19016===================================================================
19017--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
19018+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
19019@@ -3,7 +3,8 @@
19020
19021 /* { dg-do assemble } */
19022 /* { dg-require-effective-target arm_neon_ok } */
19023-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19024+/* { dg-options "-save-temps -O0" } */
19025+/* { dg-add-options arm_neon } */
19026
19027 #include "arm_neon.h"
19028
19029Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
19030===================================================================
19031--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
19032+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
19033@@ -3,7 +3,8 @@
19034
19035 /* { dg-do assemble } */
19036 /* { dg-require-effective-target arm_neon_ok } */
19037-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19038+/* { dg-options "-save-temps -O0" } */
19039+/* { dg-add-options arm_neon } */
19040
19041 #include "arm_neon.h"
19042
19043Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
19044===================================================================
19045--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
19046+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
19047@@ -3,7 +3,8 @@
19048
19049 /* { dg-do assemble } */
19050 /* { dg-require-effective-target arm_neon_ok } */
19051-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19052+/* { dg-options "-save-temps -O0" } */
19053+/* { dg-add-options arm_neon } */
19054
19055 #include "arm_neon.h"
19056
19057Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
19058===================================================================
19059--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
19060+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
19061@@ -3,7 +3,8 @@
19062
19063 /* { dg-do assemble } */
19064 /* { dg-require-effective-target arm_neon_ok } */
19065-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19066+/* { dg-options "-save-temps -O0" } */
19067+/* { dg-add-options arm_neon } */
19068
19069 #include "arm_neon.h"
19070
19071Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
19072===================================================================
19073--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
19074+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
19075@@ -3,7 +3,8 @@
19076
19077 /* { dg-do assemble } */
19078 /* { dg-require-effective-target arm_neon_ok } */
19079-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19080+/* { dg-options "-save-temps -O0" } */
19081+/* { dg-add-options arm_neon } */
19082
19083 #include "arm_neon.h"
19084
19085Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
19086===================================================================
19087--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
19088+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
19089@@ -3,7 +3,8 @@
19090
19091 /* { dg-do assemble } */
19092 /* { dg-require-effective-target arm_neon_ok } */
19093-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19094+/* { dg-options "-save-temps -O0" } */
19095+/* { dg-add-options arm_neon } */
19096
19097 #include "arm_neon.h"
19098
19099Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
19100===================================================================
19101--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
19102+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
19103@@ -3,7 +3,8 @@
19104
19105 /* { dg-do assemble } */
19106 /* { dg-require-effective-target arm_neon_ok } */
19107-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19108+/* { dg-options "-save-temps -O0" } */
19109+/* { dg-add-options arm_neon } */
19110
19111 #include "arm_neon.h"
19112
19113Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
19114===================================================================
19115--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
19116+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
19117@@ -3,7 +3,8 @@
19118
19119 /* { dg-do assemble } */
19120 /* { dg-require-effective-target arm_neon_ok } */
19121-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19122+/* { dg-options "-save-temps -O0" } */
19123+/* { dg-add-options arm_neon } */
19124
19125 #include "arm_neon.h"
19126
19127Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
19128===================================================================
19129--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
19130+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
19131@@ -3,7 +3,8 @@
19132
19133 /* { dg-do assemble } */
19134 /* { dg-require-effective-target arm_neon_ok } */
19135-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19136+/* { dg-options "-save-temps -O0" } */
19137+/* { dg-add-options arm_neon } */
19138
19139 #include "arm_neon.h"
19140
19141Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
19142===================================================================
19143--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
19144+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
19145@@ -3,7 +3,8 @@
19146
19147 /* { dg-do assemble } */
19148 /* { dg-require-effective-target arm_neon_ok } */
19149-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19150+/* { dg-options "-save-temps -O0" } */
19151+/* { dg-add-options arm_neon } */
19152
19153 #include "arm_neon.h"
19154
19155Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
19156===================================================================
19157--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
19158+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
19159@@ -3,7 +3,8 @@
19160
19161 /* { dg-do assemble } */
19162 /* { dg-require-effective-target arm_neon_ok } */
19163-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19164+/* { dg-options "-save-temps -O0" } */
19165+/* { dg-add-options arm_neon } */
19166
19167 #include "arm_neon.h"
19168
19169Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
19170===================================================================
19171--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
19172+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
19173@@ -3,7 +3,8 @@
19174
19175 /* { dg-do assemble } */
19176 /* { dg-require-effective-target arm_neon_ok } */
19177-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19178+/* { dg-options "-save-temps -O0" } */
19179+/* { dg-add-options arm_neon } */
19180
19181 #include "arm_neon.h"
19182
19183Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
19184===================================================================
19185--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
19186+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
19187@@ -3,7 +3,8 @@
19188
19189 /* { dg-do assemble } */
19190 /* { dg-require-effective-target arm_neon_ok } */
19191-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19192+/* { dg-options "-save-temps -O0" } */
19193+/* { dg-add-options arm_neon } */
19194
19195 #include "arm_neon.h"
19196
19197Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
19198===================================================================
19199--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
19200+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
19201@@ -3,7 +3,8 @@
19202
19203 /* { dg-do assemble } */
19204 /* { dg-require-effective-target arm_neon_ok } */
19205-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19206+/* { dg-options "-save-temps -O0" } */
19207+/* { dg-add-options arm_neon } */
19208
19209 #include "arm_neon.h"
19210
19211Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
19212===================================================================
19213--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
19214+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
19215@@ -3,7 +3,8 @@
19216
19217 /* { dg-do assemble } */
19218 /* { dg-require-effective-target arm_neon_ok } */
19219-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19220+/* { dg-options "-save-temps -O0" } */
19221+/* { dg-add-options arm_neon } */
19222
19223 #include "arm_neon.h"
19224
19225Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
19226===================================================================
19227--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
19228+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
19229@@ -3,7 +3,8 @@
19230
19231 /* { dg-do assemble } */
19232 /* { dg-require-effective-target arm_neon_ok } */
19233-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19234+/* { dg-options "-save-temps -O0" } */
19235+/* { dg-add-options arm_neon } */
19236
19237 #include "arm_neon.h"
19238
19239Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
19240===================================================================
19241--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
19242+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
19243@@ -3,7 +3,8 @@
19244
19245 /* { dg-do assemble } */
19246 /* { dg-require-effective-target arm_neon_ok } */
19247-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19248+/* { dg-options "-save-temps -O0" } */
19249+/* { dg-add-options arm_neon } */
19250
19251 #include "arm_neon.h"
19252
19253Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
19254===================================================================
19255--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
19256+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
19257@@ -3,7 +3,8 @@
19258
19259 /* { dg-do assemble } */
19260 /* { dg-require-effective-target arm_neon_ok } */
19261-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19262+/* { dg-options "-save-temps -O0" } */
19263+/* { dg-add-options arm_neon } */
19264
19265 #include "arm_neon.h"
19266
19267Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
19268===================================================================
19269--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
19270+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
19271@@ -3,7 +3,8 @@
19272
19273 /* { dg-do assemble } */
19274 /* { dg-require-effective-target arm_neon_ok } */
19275-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19276+/* { dg-options "-save-temps -O0" } */
19277+/* { dg-add-options arm_neon } */
19278
19279 #include "arm_neon.h"
19280
19281Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
19282===================================================================
19283--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
19284+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
19285@@ -3,7 +3,8 @@
19286
19287 /* { dg-do assemble } */
19288 /* { dg-require-effective-target arm_neon_ok } */
19289-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19290+/* { dg-options "-save-temps -O0" } */
19291+/* { dg-add-options arm_neon } */
19292
19293 #include "arm_neon.h"
19294
19295Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
19296===================================================================
19297--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
19298+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
19299@@ -3,7 +3,8 @@
19300
19301 /* { dg-do assemble } */
19302 /* { dg-require-effective-target arm_neon_ok } */
19303-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19304+/* { dg-options "-save-temps -O0" } */
19305+/* { dg-add-options arm_neon } */
19306
19307 #include "arm_neon.h"
19308
19309Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
19310===================================================================
19311--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
19312+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
19313@@ -3,7 +3,8 @@
19314
19315 /* { dg-do assemble } */
19316 /* { dg-require-effective-target arm_neon_ok } */
19317-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19318+/* { dg-options "-save-temps -O0" } */
19319+/* { dg-add-options arm_neon } */
19320
19321 #include "arm_neon.h"
19322
19323Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
19324===================================================================
19325--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
19326+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
19327@@ -3,7 +3,8 @@
19328
19329 /* { dg-do assemble } */
19330 /* { dg-require-effective-target arm_neon_ok } */
19331-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19332+/* { dg-options "-save-temps -O0" } */
19333+/* { dg-add-options arm_neon } */
19334
19335 #include "arm_neon.h"
19336
19337Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
19338===================================================================
19339--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
19340+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
19341@@ -3,7 +3,8 @@
19342
19343 /* { dg-do assemble } */
19344 /* { dg-require-effective-target arm_neon_ok } */
19345-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19346+/* { dg-options "-save-temps -O0" } */
19347+/* { dg-add-options arm_neon } */
19348
19349 #include "arm_neon.h"
19350
19351Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
19352===================================================================
19353--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
19354+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
19355@@ -3,7 +3,8 @@
19356
19357 /* { dg-do assemble } */
19358 /* { dg-require-effective-target arm_neon_ok } */
19359-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19360+/* { dg-options "-save-temps -O0" } */
19361+/* { dg-add-options arm_neon } */
19362
19363 #include "arm_neon.h"
19364
19365Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
19366===================================================================
19367--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
19368+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
19369@@ -3,7 +3,8 @@
19370
19371 /* { dg-do assemble } */
19372 /* { dg-require-effective-target arm_neon_ok } */
19373-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19374+/* { dg-options "-save-temps -O0" } */
19375+/* { dg-add-options arm_neon } */
19376
19377 #include "arm_neon.h"
19378
19379Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
19380===================================================================
19381--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
19382+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
19383@@ -3,7 +3,8 @@
19384
19385 /* { dg-do assemble } */
19386 /* { dg-require-effective-target arm_neon_ok } */
19387-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19388+/* { dg-options "-save-temps -O0" } */
19389+/* { dg-add-options arm_neon } */
19390
19391 #include "arm_neon.h"
19392
19393Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
19394===================================================================
19395--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
19396+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
19397@@ -3,7 +3,8 @@
19398
19399 /* { dg-do assemble } */
19400 /* { dg-require-effective-target arm_neon_ok } */
19401-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19402+/* { dg-options "-save-temps -O0" } */
19403+/* { dg-add-options arm_neon } */
19404
19405 #include "arm_neon.h"
19406
19407Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
19408===================================================================
19409--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
19410+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
19411@@ -3,7 +3,8 @@
19412
19413 /* { dg-do assemble } */
19414 /* { dg-require-effective-target arm_neon_ok } */
19415-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19416+/* { dg-options "-save-temps -O0" } */
19417+/* { dg-add-options arm_neon } */
19418
19419 #include "arm_neon.h"
19420
19421Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
19422===================================================================
19423--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
19424+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
19425@@ -3,7 +3,8 @@
19426
19427 /* { dg-do assemble } */
19428 /* { dg-require-effective-target arm_neon_ok } */
19429-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19430+/* { dg-options "-save-temps -O0" } */
19431+/* { dg-add-options arm_neon } */
19432
19433 #include "arm_neon.h"
19434
19435Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
19436===================================================================
19437--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
19438+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
19439@@ -3,7 +3,8 @@
19440
19441 /* { dg-do assemble } */
19442 /* { dg-require-effective-target arm_neon_ok } */
19443-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19444+/* { dg-options "-save-temps -O0" } */
19445+/* { dg-add-options arm_neon } */
19446
19447 #include "arm_neon.h"
19448
19449Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
19450===================================================================
19451--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
19452+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
19453@@ -3,7 +3,8 @@
19454
19455 /* { dg-do assemble } */
19456 /* { dg-require-effective-target arm_neon_ok } */
19457-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19458+/* { dg-options "-save-temps -O0" } */
19459+/* { dg-add-options arm_neon } */
19460
19461 #include "arm_neon.h"
19462
19463Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
19464===================================================================
19465--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
19466+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
19467@@ -3,7 +3,8 @@
19468
19469 /* { dg-do assemble } */
19470 /* { dg-require-effective-target arm_neon_ok } */
19471-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19472+/* { dg-options "-save-temps -O0" } */
19473+/* { dg-add-options arm_neon } */
19474
19475 #include "arm_neon.h"
19476
19477Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
19478===================================================================
19479--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
19480+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
19481@@ -3,7 +3,8 @@
19482
19483 /* { dg-do assemble } */
19484 /* { dg-require-effective-target arm_neon_ok } */
19485-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19486+/* { dg-options "-save-temps -O0" } */
19487+/* { dg-add-options arm_neon } */
19488
19489 #include "arm_neon.h"
19490
19491Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
19492===================================================================
19493--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
19494+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
19495@@ -3,7 +3,8 @@
19496
19497 /* { dg-do assemble } */
19498 /* { dg-require-effective-target arm_neon_ok } */
19499-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19500+/* { dg-options "-save-temps -O0" } */
19501+/* { dg-add-options arm_neon } */
19502
19503 #include "arm_neon.h"
19504
19505Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
19506===================================================================
19507--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
19508+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
19509@@ -3,7 +3,8 @@
19510
19511 /* { dg-do assemble } */
19512 /* { dg-require-effective-target arm_neon_ok } */
19513-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19514+/* { dg-options "-save-temps -O0" } */
19515+/* { dg-add-options arm_neon } */
19516
19517 #include "arm_neon.h"
19518
19519Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
19520===================================================================
19521--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
19522+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
19523@@ -3,7 +3,8 @@
19524
19525 /* { dg-do assemble } */
19526 /* { dg-require-effective-target arm_neon_ok } */
19527-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19528+/* { dg-options "-save-temps -O0" } */
19529+/* { dg-add-options arm_neon } */
19530
19531 #include "arm_neon.h"
19532
19533Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
19534===================================================================
19535--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
19536+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
19537@@ -3,7 +3,8 @@
19538
19539 /* { dg-do assemble } */
19540 /* { dg-require-effective-target arm_neon_ok } */
19541-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19542+/* { dg-options "-save-temps -O0" } */
19543+/* { dg-add-options arm_neon } */
19544
19545 #include "arm_neon.h"
19546
19547Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
19548===================================================================
19549--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
19550+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
19551@@ -3,7 +3,8 @@
19552
19553 /* { dg-do assemble } */
19554 /* { dg-require-effective-target arm_neon_ok } */
19555-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19556+/* { dg-options "-save-temps -O0" } */
19557+/* { dg-add-options arm_neon } */
19558
19559 #include "arm_neon.h"
19560
19561Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
19562===================================================================
19563--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
19564+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
19565@@ -3,7 +3,8 @@
19566
19567 /* { dg-do assemble } */
19568 /* { dg-require-effective-target arm_neon_ok } */
19569-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19570+/* { dg-options "-save-temps -O0" } */
19571+/* { dg-add-options arm_neon } */
19572
19573 #include "arm_neon.h"
19574
19575Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
19576===================================================================
19577--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
19578+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
19579@@ -3,7 +3,8 @@
19580
19581 /* { dg-do assemble } */
19582 /* { dg-require-effective-target arm_neon_ok } */
19583-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19584+/* { dg-options "-save-temps -O0" } */
19585+/* { dg-add-options arm_neon } */
19586
19587 #include "arm_neon.h"
19588
19589Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
19590===================================================================
19591--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
19592+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
19593@@ -3,7 +3,8 @@
19594
19595 /* { dg-do assemble } */
19596 /* { dg-require-effective-target arm_neon_ok } */
19597-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19598+/* { dg-options "-save-temps -O0" } */
19599+/* { dg-add-options arm_neon } */
19600
19601 #include "arm_neon.h"
19602
19603Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
19604===================================================================
19605--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
19606+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
19607@@ -3,7 +3,8 @@
19608
19609 /* { dg-do assemble } */
19610 /* { dg-require-effective-target arm_neon_ok } */
19611-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19612+/* { dg-options "-save-temps -O0" } */
19613+/* { dg-add-options arm_neon } */
19614
19615 #include "arm_neon.h"
19616
19617Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
19618===================================================================
19619--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
19620+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
19621@@ -3,7 +3,8 @@
19622
19623 /* { dg-do assemble } */
19624 /* { dg-require-effective-target arm_neon_ok } */
19625-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19626+/* { dg-options "-save-temps -O0" } */
19627+/* { dg-add-options arm_neon } */
19628
19629 #include "arm_neon.h"
19630
19631Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
19632===================================================================
19633--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
19634+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
19635@@ -3,7 +3,8 @@
19636
19637 /* { dg-do assemble } */
19638 /* { dg-require-effective-target arm_neon_ok } */
19639-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19640+/* { dg-options "-save-temps -O0" } */
19641+/* { dg-add-options arm_neon } */
19642
19643 #include "arm_neon.h"
19644
19645Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
19646===================================================================
19647--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
19648+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
19649@@ -3,7 +3,8 @@
19650
19651 /* { dg-do assemble } */
19652 /* { dg-require-effective-target arm_neon_ok } */
19653-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19654+/* { dg-options "-save-temps -O0" } */
19655+/* { dg-add-options arm_neon } */
19656
19657 #include "arm_neon.h"
19658
19659Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
19660===================================================================
19661--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
19662+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
19663@@ -3,7 +3,8 @@
19664
19665 /* { dg-do assemble } */
19666 /* { dg-require-effective-target arm_neon_ok } */
19667-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19668+/* { dg-options "-save-temps -O0" } */
19669+/* { dg-add-options arm_neon } */
19670
19671 #include "arm_neon.h"
19672
19673Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
19674===================================================================
19675--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
19676+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
19677@@ -3,7 +3,8 @@
19678
19679 /* { dg-do assemble } */
19680 /* { dg-require-effective-target arm_neon_ok } */
19681-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19682+/* { dg-options "-save-temps -O0" } */
19683+/* { dg-add-options arm_neon } */
19684
19685 #include "arm_neon.h"
19686
19687Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
19688===================================================================
19689--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
19690+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
19691@@ -3,7 +3,8 @@
19692
19693 /* { dg-do assemble } */
19694 /* { dg-require-effective-target arm_neon_ok } */
19695-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19696+/* { dg-options "-save-temps -O0" } */
19697+/* { dg-add-options arm_neon } */
19698
19699 #include "arm_neon.h"
19700
19701Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
19702===================================================================
19703--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
19704+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
19705@@ -3,7 +3,8 @@
19706
19707 /* { dg-do assemble } */
19708 /* { dg-require-effective-target arm_neon_ok } */
19709-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19710+/* { dg-options "-save-temps -O0" } */
19711+/* { dg-add-options arm_neon } */
19712
19713 #include "arm_neon.h"
19714
19715Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
19716===================================================================
19717--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
19718+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
19719@@ -3,7 +3,8 @@
19720
19721 /* { dg-do assemble } */
19722 /* { dg-require-effective-target arm_neon_ok } */
19723-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19724+/* { dg-options "-save-temps -O0" } */
19725+/* { dg-add-options arm_neon } */
19726
19727 #include "arm_neon.h"
19728
19729Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
19730===================================================================
19731--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
19732+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
19733@@ -3,7 +3,8 @@
19734
19735 /* { dg-do assemble } */
19736 /* { dg-require-effective-target arm_neon_ok } */
19737-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19738+/* { dg-options "-save-temps -O0" } */
19739+/* { dg-add-options arm_neon } */
19740
19741 #include "arm_neon.h"
19742
19743Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
19744===================================================================
19745--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
19746+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
19747@@ -3,7 +3,8 @@
19748
19749 /* { dg-do assemble } */
19750 /* { dg-require-effective-target arm_neon_ok } */
19751-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19752+/* { dg-options "-save-temps -O0" } */
19753+/* { dg-add-options arm_neon } */
19754
19755 #include "arm_neon.h"
19756
19757Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
19758===================================================================
19759--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
19760+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
19761@@ -3,7 +3,8 @@
19762
19763 /* { dg-do assemble } */
19764 /* { dg-require-effective-target arm_neon_ok } */
19765-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19766+/* { dg-options "-save-temps -O0" } */
19767+/* { dg-add-options arm_neon } */
19768
19769 #include "arm_neon.h"
19770
19771Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
19772===================================================================
19773--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
19774+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
19775@@ -3,7 +3,8 @@
19776
19777 /* { dg-do assemble } */
19778 /* { dg-require-effective-target arm_neon_ok } */
19779-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19780+/* { dg-options "-save-temps -O0" } */
19781+/* { dg-add-options arm_neon } */
19782
19783 #include "arm_neon.h"
19784
19785Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
19786===================================================================
19787--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
19788+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
19789@@ -3,7 +3,8 @@
19790
19791 /* { dg-do assemble } */
19792 /* { dg-require-effective-target arm_neon_ok } */
19793-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19794+/* { dg-options "-save-temps -O0" } */
19795+/* { dg-add-options arm_neon } */
19796
19797 #include "arm_neon.h"
19798
19799Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
19800===================================================================
19801--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
19802+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
19803@@ -3,7 +3,8 @@
19804
19805 /* { dg-do assemble } */
19806 /* { dg-require-effective-target arm_neon_ok } */
19807-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19808+/* { dg-options "-save-temps -O0" } */
19809+/* { dg-add-options arm_neon } */
19810
19811 #include "arm_neon.h"
19812
19813Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
19814===================================================================
19815--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
19816+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
19817@@ -3,7 +3,8 @@
19818
19819 /* { dg-do assemble } */
19820 /* { dg-require-effective-target arm_neon_ok } */
19821-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19822+/* { dg-options "-save-temps -O0" } */
19823+/* { dg-add-options arm_neon } */
19824
19825 #include "arm_neon.h"
19826
19827Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
19828===================================================================
19829--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
19830+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
19831@@ -3,7 +3,8 @@
19832
19833 /* { dg-do assemble } */
19834 /* { dg-require-effective-target arm_neon_ok } */
19835-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19836+/* { dg-options "-save-temps -O0" } */
19837+/* { dg-add-options arm_neon } */
19838
19839 #include "arm_neon.h"
19840
19841Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
19842===================================================================
19843--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
19844+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
19845@@ -3,7 +3,8 @@
19846
19847 /* { dg-do assemble } */
19848 /* { dg-require-effective-target arm_neon_ok } */
19849-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19850+/* { dg-options "-save-temps -O0" } */
19851+/* { dg-add-options arm_neon } */
19852
19853 #include "arm_neon.h"
19854
19855Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
19856===================================================================
19857--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
19858+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
19859@@ -3,7 +3,8 @@
19860
19861 /* { dg-do assemble } */
19862 /* { dg-require-effective-target arm_neon_ok } */
19863-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19864+/* { dg-options "-save-temps -O0" } */
19865+/* { dg-add-options arm_neon } */
19866
19867 #include "arm_neon.h"
19868
19869Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
19870===================================================================
19871--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
19872+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
19873@@ -3,7 +3,8 @@
19874
19875 /* { dg-do assemble } */
19876 /* { dg-require-effective-target arm_neon_ok } */
19877-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19878+/* { dg-options "-save-temps -O0" } */
19879+/* { dg-add-options arm_neon } */
19880
19881 #include "arm_neon.h"
19882
19883Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
19884===================================================================
19885--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
19886+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
19887@@ -3,7 +3,8 @@
19888
19889 /* { dg-do assemble } */
19890 /* { dg-require-effective-target arm_neon_ok } */
19891-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19892+/* { dg-options "-save-temps -O0" } */
19893+/* { dg-add-options arm_neon } */
19894
19895 #include "arm_neon.h"
19896
19897Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
19898===================================================================
19899--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
19900+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
19901@@ -3,7 +3,8 @@
19902
19903 /* { dg-do assemble } */
19904 /* { dg-require-effective-target arm_neon_ok } */
19905-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19906+/* { dg-options "-save-temps -O0" } */
19907+/* { dg-add-options arm_neon } */
19908
19909 #include "arm_neon.h"
19910
19911Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
19912===================================================================
19913--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
19914+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
19915@@ -3,7 +3,8 @@
19916
19917 /* { dg-do assemble } */
19918 /* { dg-require-effective-target arm_neon_ok } */
19919-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19920+/* { dg-options "-save-temps -O0" } */
19921+/* { dg-add-options arm_neon } */
19922
19923 #include "arm_neon.h"
19924
19925Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
19926===================================================================
19927--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
19928+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
19929@@ -3,7 +3,8 @@
19930
19931 /* { dg-do assemble } */
19932 /* { dg-require-effective-target arm_neon_ok } */
19933-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19934+/* { dg-options "-save-temps -O0" } */
19935+/* { dg-add-options arm_neon } */
19936
19937 #include "arm_neon.h"
19938
19939Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
19940===================================================================
19941--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
19942+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
19943@@ -3,7 +3,8 @@
19944
19945 /* { dg-do assemble } */
19946 /* { dg-require-effective-target arm_neon_ok } */
19947-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19948+/* { dg-options "-save-temps -O0" } */
19949+/* { dg-add-options arm_neon } */
19950
19951 #include "arm_neon.h"
19952
19953Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
19954===================================================================
19955--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
19956+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
19957@@ -3,7 +3,8 @@
19958
19959 /* { dg-do assemble } */
19960 /* { dg-require-effective-target arm_neon_ok } */
19961-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19962+/* { dg-options "-save-temps -O0" } */
19963+/* { dg-add-options arm_neon } */
19964
19965 #include "arm_neon.h"
19966
19967Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
19968===================================================================
19969--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
19970+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
19971@@ -3,7 +3,8 @@
19972
19973 /* { dg-do assemble } */
19974 /* { dg-require-effective-target arm_neon_ok } */
19975-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19976+/* { dg-options "-save-temps -O0" } */
19977+/* { dg-add-options arm_neon } */
19978
19979 #include "arm_neon.h"
19980
19981Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
19982===================================================================
19983--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
19984+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
19985@@ -3,7 +3,8 @@
19986
19987 /* { dg-do assemble } */
19988 /* { dg-require-effective-target arm_neon_ok } */
19989-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
19990+/* { dg-options "-save-temps -O0" } */
19991+/* { dg-add-options arm_neon } */
19992
19993 #include "arm_neon.h"
19994
19995Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
19996===================================================================
19997--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
19998+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
19999@@ -3,7 +3,8 @@
20000
20001 /* { dg-do assemble } */
20002 /* { dg-require-effective-target arm_neon_ok } */
20003-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20004+/* { dg-options "-save-temps -O0" } */
20005+/* { dg-add-options arm_neon } */
20006
20007 #include "arm_neon.h"
20008
20009Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
20010===================================================================
20011--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
20012+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
20013@@ -3,7 +3,8 @@
20014
20015 /* { dg-do assemble } */
20016 /* { dg-require-effective-target arm_neon_ok } */
20017-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20018+/* { dg-options "-save-temps -O0" } */
20019+/* { dg-add-options arm_neon } */
20020
20021 #include "arm_neon.h"
20022
20023Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
20024===================================================================
20025--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
20026+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
20027@@ -3,7 +3,8 @@
20028
20029 /* { dg-do assemble } */
20030 /* { dg-require-effective-target arm_neon_ok } */
20031-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20032+/* { dg-options "-save-temps -O0" } */
20033+/* { dg-add-options arm_neon } */
20034
20035 #include "arm_neon.h"
20036
20037Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
20038===================================================================
20039--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
20040+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
20041@@ -3,7 +3,8 @@
20042
20043 /* { dg-do assemble } */
20044 /* { dg-require-effective-target arm_neon_ok } */
20045-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20046+/* { dg-options "-save-temps -O0" } */
20047+/* { dg-add-options arm_neon } */
20048
20049 #include "arm_neon.h"
20050
20051Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
20052===================================================================
20053--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
20054+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
20055@@ -3,7 +3,8 @@
20056
20057 /* { dg-do assemble } */
20058 /* { dg-require-effective-target arm_neon_ok } */
20059-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20060+/* { dg-options "-save-temps -O0" } */
20061+/* { dg-add-options arm_neon } */
20062
20063 #include "arm_neon.h"
20064
20065Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
20066===================================================================
20067--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
20068+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
20069@@ -3,7 +3,8 @@
20070
20071 /* { dg-do assemble } */
20072 /* { dg-require-effective-target arm_neon_ok } */
20073-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20074+/* { dg-options "-save-temps -O0" } */
20075+/* { dg-add-options arm_neon } */
20076
20077 #include "arm_neon.h"
20078
20079Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
20080===================================================================
20081--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
20082+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
20083@@ -3,7 +3,8 @@
20084
20085 /* { dg-do assemble } */
20086 /* { dg-require-effective-target arm_neon_ok } */
20087-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20088+/* { dg-options "-save-temps -O0" } */
20089+/* { dg-add-options arm_neon } */
20090
20091 #include "arm_neon.h"
20092
20093Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
20094===================================================================
20095--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
20096+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
20097@@ -3,7 +3,8 @@
20098
20099 /* { dg-do assemble } */
20100 /* { dg-require-effective-target arm_neon_ok } */
20101-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20102+/* { dg-options "-save-temps -O0" } */
20103+/* { dg-add-options arm_neon } */
20104
20105 #include "arm_neon.h"
20106
20107Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
20108===================================================================
20109--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
20110+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
20111@@ -3,7 +3,8 @@
20112
20113 /* { dg-do assemble } */
20114 /* { dg-require-effective-target arm_neon_ok } */
20115-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20116+/* { dg-options "-save-temps -O0" } */
20117+/* { dg-add-options arm_neon } */
20118
20119 #include "arm_neon.h"
20120
20121Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
20122===================================================================
20123--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
20124+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
20125@@ -3,7 +3,8 @@
20126
20127 /* { dg-do assemble } */
20128 /* { dg-require-effective-target arm_neon_ok } */
20129-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20130+/* { dg-options "-save-temps -O0" } */
20131+/* { dg-add-options arm_neon } */
20132
20133 #include "arm_neon.h"
20134
20135Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
20136===================================================================
20137--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
20138+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
20139@@ -3,7 +3,8 @@
20140
20141 /* { dg-do assemble } */
20142 /* { dg-require-effective-target arm_neon_ok } */
20143-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20144+/* { dg-options "-save-temps -O0" } */
20145+/* { dg-add-options arm_neon } */
20146
20147 #include "arm_neon.h"
20148
20149Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
20150===================================================================
20151--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
20152+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
20153@@ -3,7 +3,8 @@
20154
20155 /* { dg-do assemble } */
20156 /* { dg-require-effective-target arm_neon_ok } */
20157-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20158+/* { dg-options "-save-temps -O0" } */
20159+/* { dg-add-options arm_neon } */
20160
20161 #include "arm_neon.h"
20162
20163Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
20164===================================================================
20165--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
20166+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
20167@@ -3,7 +3,8 @@
20168
20169 /* { dg-do assemble } */
20170 /* { dg-require-effective-target arm_neon_ok } */
20171-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20172+/* { dg-options "-save-temps -O0" } */
20173+/* { dg-add-options arm_neon } */
20174
20175 #include "arm_neon.h"
20176
20177Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
20178===================================================================
20179--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
20180+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
20181@@ -3,7 +3,8 @@
20182
20183 /* { dg-do assemble } */
20184 /* { dg-require-effective-target arm_neon_ok } */
20185-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20186+/* { dg-options "-save-temps -O0" } */
20187+/* { dg-add-options arm_neon } */
20188
20189 #include "arm_neon.h"
20190
20191Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
20192===================================================================
20193--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
20194+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
20195@@ -3,7 +3,8 @@
20196
20197 /* { dg-do assemble } */
20198 /* { dg-require-effective-target arm_neon_ok } */
20199-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20200+/* { dg-options "-save-temps -O0" } */
20201+/* { dg-add-options arm_neon } */
20202
20203 #include "arm_neon.h"
20204
20205Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
20206===================================================================
20207--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
20208+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
20209@@ -3,7 +3,8 @@
20210
20211 /* { dg-do assemble } */
20212 /* { dg-require-effective-target arm_neon_ok } */
20213-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20214+/* { dg-options "-save-temps -O0" } */
20215+/* { dg-add-options arm_neon } */
20216
20217 #include "arm_neon.h"
20218
20219Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
20220===================================================================
20221--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
20222+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
20223@@ -3,7 +3,8 @@
20224
20225 /* { dg-do assemble } */
20226 /* { dg-require-effective-target arm_neon_ok } */
20227-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20228+/* { dg-options "-save-temps -O0" } */
20229+/* { dg-add-options arm_neon } */
20230
20231 #include "arm_neon.h"
20232
20233Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
20234===================================================================
20235--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
20236+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
20237@@ -3,7 +3,8 @@
20238
20239 /* { dg-do assemble } */
20240 /* { dg-require-effective-target arm_neon_ok } */
20241-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20242+/* { dg-options "-save-temps -O0" } */
20243+/* { dg-add-options arm_neon } */
20244
20245 #include "arm_neon.h"
20246
20247Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
20248===================================================================
20249--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
20250+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
20251@@ -3,7 +3,8 @@
20252
20253 /* { dg-do assemble } */
20254 /* { dg-require-effective-target arm_neon_ok } */
20255-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20256+/* { dg-options "-save-temps -O0" } */
20257+/* { dg-add-options arm_neon } */
20258
20259 #include "arm_neon.h"
20260
20261Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
20262===================================================================
20263--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
20264+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
20265@@ -3,7 +3,8 @@
20266
20267 /* { dg-do assemble } */
20268 /* { dg-require-effective-target arm_neon_ok } */
20269-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20270+/* { dg-options "-save-temps -O0" } */
20271+/* { dg-add-options arm_neon } */
20272
20273 #include "arm_neon.h"
20274
20275Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
20276===================================================================
20277--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
20278+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
20279@@ -3,7 +3,8 @@
20280
20281 /* { dg-do assemble } */
20282 /* { dg-require-effective-target arm_neon_ok } */
20283-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20284+/* { dg-options "-save-temps -O0" } */
20285+/* { dg-add-options arm_neon } */
20286
20287 #include "arm_neon.h"
20288
20289Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
20290===================================================================
20291--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
20292+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
20293@@ -3,7 +3,8 @@
20294
20295 /* { dg-do assemble } */
20296 /* { dg-require-effective-target arm_neon_ok } */
20297-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20298+/* { dg-options "-save-temps -O0" } */
20299+/* { dg-add-options arm_neon } */
20300
20301 #include "arm_neon.h"
20302
20303Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
20304===================================================================
20305--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
20306+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
20307@@ -3,7 +3,8 @@
20308
20309 /* { dg-do assemble } */
20310 /* { dg-require-effective-target arm_neon_ok } */
20311-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20312+/* { dg-options "-save-temps -O0" } */
20313+/* { dg-add-options arm_neon } */
20314
20315 #include "arm_neon.h"
20316
20317Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
20318===================================================================
20319--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
20320+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
20321@@ -3,7 +3,8 @@
20322
20323 /* { dg-do assemble } */
20324 /* { dg-require-effective-target arm_neon_ok } */
20325-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20326+/* { dg-options "-save-temps -O0" } */
20327+/* { dg-add-options arm_neon } */
20328
20329 #include "arm_neon.h"
20330
20331Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
20332===================================================================
20333--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
20334+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
20335@@ -3,7 +3,8 @@
20336
20337 /* { dg-do assemble } */
20338 /* { dg-require-effective-target arm_neon_ok } */
20339-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20340+/* { dg-options "-save-temps -O0" } */
20341+/* { dg-add-options arm_neon } */
20342
20343 #include "arm_neon.h"
20344
20345Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
20346===================================================================
20347--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
20348+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
20349@@ -3,7 +3,8 @@
20350
20351 /* { dg-do assemble } */
20352 /* { dg-require-effective-target arm_neon_ok } */
20353-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20354+/* { dg-options "-save-temps -O0" } */
20355+/* { dg-add-options arm_neon } */
20356
20357 #include "arm_neon.h"
20358
20359Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
20360===================================================================
20361--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
20362+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
20363@@ -3,7 +3,8 @@
20364
20365 /* { dg-do assemble } */
20366 /* { dg-require-effective-target arm_neon_ok } */
20367-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20368+/* { dg-options "-save-temps -O0" } */
20369+/* { dg-add-options arm_neon } */
20370
20371 #include "arm_neon.h"
20372
20373Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
20374===================================================================
20375--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
20376+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
20377@@ -3,7 +3,8 @@
20378
20379 /* { dg-do assemble } */
20380 /* { dg-require-effective-target arm_neon_ok } */
20381-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20382+/* { dg-options "-save-temps -O0" } */
20383+/* { dg-add-options arm_neon } */
20384
20385 #include "arm_neon.h"
20386
20387Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
20388===================================================================
20389--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
20390+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
20391@@ -3,7 +3,8 @@
20392
20393 /* { dg-do assemble } */
20394 /* { dg-require-effective-target arm_neon_ok } */
20395-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20396+/* { dg-options "-save-temps -O0" } */
20397+/* { dg-add-options arm_neon } */
20398
20399 #include "arm_neon.h"
20400
20401Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
20402===================================================================
20403--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
20404+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
20405@@ -3,7 +3,8 @@
20406
20407 /* { dg-do assemble } */
20408 /* { dg-require-effective-target arm_neon_ok } */
20409-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20410+/* { dg-options "-save-temps -O0" } */
20411+/* { dg-add-options arm_neon } */
20412
20413 #include "arm_neon.h"
20414
20415Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
20416===================================================================
20417--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
20418+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
20419@@ -3,7 +3,8 @@
20420
20421 /* { dg-do assemble } */
20422 /* { dg-require-effective-target arm_neon_ok } */
20423-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20424+/* { dg-options "-save-temps -O0" } */
20425+/* { dg-add-options arm_neon } */
20426
20427 #include "arm_neon.h"
20428
20429Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
20430===================================================================
20431--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
20432+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
20433@@ -3,7 +3,8 @@
20434
20435 /* { dg-do assemble } */
20436 /* { dg-require-effective-target arm_neon_ok } */
20437-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20438+/* { dg-options "-save-temps -O0" } */
20439+/* { dg-add-options arm_neon } */
20440
20441 #include "arm_neon.h"
20442
20443Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
20444===================================================================
20445--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
20446+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
20447@@ -3,7 +3,8 @@
20448
20449 /* { dg-do assemble } */
20450 /* { dg-require-effective-target arm_neon_ok } */
20451-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20452+/* { dg-options "-save-temps -O0" } */
20453+/* { dg-add-options arm_neon } */
20454
20455 #include "arm_neon.h"
20456
20457Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
20458===================================================================
20459--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
20460+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
20461@@ -3,7 +3,8 @@
20462
20463 /* { dg-do assemble } */
20464 /* { dg-require-effective-target arm_neon_ok } */
20465-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20466+/* { dg-options "-save-temps -O0" } */
20467+/* { dg-add-options arm_neon } */
20468
20469 #include "arm_neon.h"
20470
20471Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
20472===================================================================
20473--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
20474+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
20475@@ -3,7 +3,8 @@
20476
20477 /* { dg-do assemble } */
20478 /* { dg-require-effective-target arm_neon_ok } */
20479-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20480+/* { dg-options "-save-temps -O0" } */
20481+/* { dg-add-options arm_neon } */
20482
20483 #include "arm_neon.h"
20484
20485Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
20486===================================================================
20487--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
20488+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
20489@@ -3,7 +3,8 @@
20490
20491 /* { dg-do assemble } */
20492 /* { dg-require-effective-target arm_neon_ok } */
20493-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20494+/* { dg-options "-save-temps -O0" } */
20495+/* { dg-add-options arm_neon } */
20496
20497 #include "arm_neon.h"
20498
20499Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
20500===================================================================
20501--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
20502+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
20503@@ -3,7 +3,8 @@
20504
20505 /* { dg-do assemble } */
20506 /* { dg-require-effective-target arm_neon_ok } */
20507-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20508+/* { dg-options "-save-temps -O0" } */
20509+/* { dg-add-options arm_neon } */
20510
20511 #include "arm_neon.h"
20512
20513Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
20514===================================================================
20515--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
20516+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
20517@@ -3,7 +3,8 @@
20518
20519 /* { dg-do assemble } */
20520 /* { dg-require-effective-target arm_neon_ok } */
20521-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20522+/* { dg-options "-save-temps -O0" } */
20523+/* { dg-add-options arm_neon } */
20524
20525 #include "arm_neon.h"
20526
20527Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
20528===================================================================
20529--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
20530+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
20531@@ -3,7 +3,8 @@
20532
20533 /* { dg-do assemble } */
20534 /* { dg-require-effective-target arm_neon_ok } */
20535-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20536+/* { dg-options "-save-temps -O0" } */
20537+/* { dg-add-options arm_neon } */
20538
20539 #include "arm_neon.h"
20540
20541Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
20542===================================================================
20543--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
20544+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
20545@@ -3,7 +3,8 @@
20546
20547 /* { dg-do assemble } */
20548 /* { dg-require-effective-target arm_neon_ok } */
20549-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20550+/* { dg-options "-save-temps -O0" } */
20551+/* { dg-add-options arm_neon } */
20552
20553 #include "arm_neon.h"
20554
20555Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
20556===================================================================
20557--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
20558+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
20559@@ -3,7 +3,8 @@
20560
20561 /* { dg-do assemble } */
20562 /* { dg-require-effective-target arm_neon_ok } */
20563-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20564+/* { dg-options "-save-temps -O0" } */
20565+/* { dg-add-options arm_neon } */
20566
20567 #include "arm_neon.h"
20568
20569Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
20570===================================================================
20571--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
20572+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
20573@@ -3,7 +3,8 @@
20574
20575 /* { dg-do assemble } */
20576 /* { dg-require-effective-target arm_neon_ok } */
20577-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20578+/* { dg-options "-save-temps -O0" } */
20579+/* { dg-add-options arm_neon } */
20580
20581 #include "arm_neon.h"
20582
20583Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
20584===================================================================
20585--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
20586+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
20587@@ -3,7 +3,8 @@
20588
20589 /* { dg-do assemble } */
20590 /* { dg-require-effective-target arm_neon_ok } */
20591-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20592+/* { dg-options "-save-temps -O0" } */
20593+/* { dg-add-options arm_neon } */
20594
20595 #include "arm_neon.h"
20596
20597Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
20598===================================================================
20599--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
20600+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
20601@@ -3,7 +3,8 @@
20602
20603 /* { dg-do assemble } */
20604 /* { dg-require-effective-target arm_neon_ok } */
20605-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20606+/* { dg-options "-save-temps -O0" } */
20607+/* { dg-add-options arm_neon } */
20608
20609 #include "arm_neon.h"
20610
20611Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
20612===================================================================
20613--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
20614+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
20615@@ -3,7 +3,8 @@
20616
20617 /* { dg-do assemble } */
20618 /* { dg-require-effective-target arm_neon_ok } */
20619-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20620+/* { dg-options "-save-temps -O0" } */
20621+/* { dg-add-options arm_neon } */
20622
20623 #include "arm_neon.h"
20624
20625Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
20626===================================================================
20627--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
20628+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
20629@@ -3,7 +3,8 @@
20630
20631 /* { dg-do assemble } */
20632 /* { dg-require-effective-target arm_neon_ok } */
20633-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20634+/* { dg-options "-save-temps -O0" } */
20635+/* { dg-add-options arm_neon } */
20636
20637 #include "arm_neon.h"
20638
20639Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
20640===================================================================
20641--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
20642+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
20643@@ -3,7 +3,8 @@
20644
20645 /* { dg-do assemble } */
20646 /* { dg-require-effective-target arm_neon_ok } */
20647-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20648+/* { dg-options "-save-temps -O0" } */
20649+/* { dg-add-options arm_neon } */
20650
20651 #include "arm_neon.h"
20652
20653Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
20654===================================================================
20655--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
20656+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
20657@@ -3,7 +3,8 @@
20658
20659 /* { dg-do assemble } */
20660 /* { dg-require-effective-target arm_neon_ok } */
20661-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20662+/* { dg-options "-save-temps -O0" } */
20663+/* { dg-add-options arm_neon } */
20664
20665 #include "arm_neon.h"
20666
20667Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
20668===================================================================
20669--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
20670+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
20671@@ -3,7 +3,8 @@
20672
20673 /* { dg-do assemble } */
20674 /* { dg-require-effective-target arm_neon_ok } */
20675-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20676+/* { dg-options "-save-temps -O0" } */
20677+/* { dg-add-options arm_neon } */
20678
20679 #include "arm_neon.h"
20680
20681Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
20682===================================================================
20683--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
20684+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
20685@@ -3,7 +3,8 @@
20686
20687 /* { dg-do assemble } */
20688 /* { dg-require-effective-target arm_neon_ok } */
20689-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20690+/* { dg-options "-save-temps -O0" } */
20691+/* { dg-add-options arm_neon } */
20692
20693 #include "arm_neon.h"
20694
20695Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
20696===================================================================
20697--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
20698+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
20699@@ -3,7 +3,8 @@
20700
20701 /* { dg-do assemble } */
20702 /* { dg-require-effective-target arm_neon_ok } */
20703-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20704+/* { dg-options "-save-temps -O0" } */
20705+/* { dg-add-options arm_neon } */
20706
20707 #include "arm_neon.h"
20708
20709Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
20710===================================================================
20711--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
20712+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
20713@@ -3,7 +3,8 @@
20714
20715 /* { dg-do assemble } */
20716 /* { dg-require-effective-target arm_neon_ok } */
20717-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20718+/* { dg-options "-save-temps -O0" } */
20719+/* { dg-add-options arm_neon } */
20720
20721 #include "arm_neon.h"
20722
20723Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
20724===================================================================
20725--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
20726+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
20727@@ -3,7 +3,8 @@
20728
20729 /* { dg-do assemble } */
20730 /* { dg-require-effective-target arm_neon_ok } */
20731-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20732+/* { dg-options "-save-temps -O0" } */
20733+/* { dg-add-options arm_neon } */
20734
20735 #include "arm_neon.h"
20736
20737Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
20738===================================================================
20739--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
20740+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
20741@@ -3,7 +3,8 @@
20742
20743 /* { dg-do assemble } */
20744 /* { dg-require-effective-target arm_neon_ok } */
20745-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20746+/* { dg-options "-save-temps -O0" } */
20747+/* { dg-add-options arm_neon } */
20748
20749 #include "arm_neon.h"
20750
20751Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
20752===================================================================
20753--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
20754+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
20755@@ -3,7 +3,8 @@
20756
20757 /* { dg-do assemble } */
20758 /* { dg-require-effective-target arm_neon_ok } */
20759-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20760+/* { dg-options "-save-temps -O0" } */
20761+/* { dg-add-options arm_neon } */
20762
20763 #include "arm_neon.h"
20764
20765Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
20766===================================================================
20767--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
20768+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
20769@@ -3,7 +3,8 @@
20770
20771 /* { dg-do assemble } */
20772 /* { dg-require-effective-target arm_neon_ok } */
20773-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20774+/* { dg-options "-save-temps -O0" } */
20775+/* { dg-add-options arm_neon } */
20776
20777 #include "arm_neon.h"
20778
20779Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
20780===================================================================
20781--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
20782+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
20783@@ -3,7 +3,8 @@
20784
20785 /* { dg-do assemble } */
20786 /* { dg-require-effective-target arm_neon_ok } */
20787-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20788+/* { dg-options "-save-temps -O0" } */
20789+/* { dg-add-options arm_neon } */
20790
20791 #include "arm_neon.h"
20792
20793Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
20794===================================================================
20795--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
20796+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
20797@@ -3,7 +3,8 @@
20798
20799 /* { dg-do assemble } */
20800 /* { dg-require-effective-target arm_neon_ok } */
20801-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20802+/* { dg-options "-save-temps -O0" } */
20803+/* { dg-add-options arm_neon } */
20804
20805 #include "arm_neon.h"
20806
20807Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
20808===================================================================
20809--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
20810+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
20811@@ -3,7 +3,8 @@
20812
20813 /* { dg-do assemble } */
20814 /* { dg-require-effective-target arm_neon_ok } */
20815-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20816+/* { dg-options "-save-temps -O0" } */
20817+/* { dg-add-options arm_neon } */
20818
20819 #include "arm_neon.h"
20820
20821Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
20822===================================================================
20823--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
20824+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
20825@@ -3,7 +3,8 @@
20826
20827 /* { dg-do assemble } */
20828 /* { dg-require-effective-target arm_neon_ok } */
20829-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20830+/* { dg-options "-save-temps -O0" } */
20831+/* { dg-add-options arm_neon } */
20832
20833 #include "arm_neon.h"
20834
20835Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
20836===================================================================
20837--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
20838+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
20839@@ -3,7 +3,8 @@
20840
20841 /* { dg-do assemble } */
20842 /* { dg-require-effective-target arm_neon_ok } */
20843-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20844+/* { dg-options "-save-temps -O0" } */
20845+/* { dg-add-options arm_neon } */
20846
20847 #include "arm_neon.h"
20848
20849Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
20850===================================================================
20851--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
20852+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
20853@@ -3,7 +3,8 @@
20854
20855 /* { dg-do assemble } */
20856 /* { dg-require-effective-target arm_neon_ok } */
20857-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20858+/* { dg-options "-save-temps -O0" } */
20859+/* { dg-add-options arm_neon } */
20860
20861 #include "arm_neon.h"
20862
20863Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
20864===================================================================
20865--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
20866+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
20867@@ -3,7 +3,8 @@
20868
20869 /* { dg-do assemble } */
20870 /* { dg-require-effective-target arm_neon_ok } */
20871-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20872+/* { dg-options "-save-temps -O0" } */
20873+/* { dg-add-options arm_neon } */
20874
20875 #include "arm_neon.h"
20876
20877Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
20878===================================================================
20879--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
20880+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
20881@@ -3,7 +3,8 @@
20882
20883 /* { dg-do assemble } */
20884 /* { dg-require-effective-target arm_neon_ok } */
20885-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20886+/* { dg-options "-save-temps -O0" } */
20887+/* { dg-add-options arm_neon } */
20888
20889 #include "arm_neon.h"
20890
20891Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
20892===================================================================
20893--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
20894+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
20895@@ -3,7 +3,8 @@
20896
20897 /* { dg-do assemble } */
20898 /* { dg-require-effective-target arm_neon_ok } */
20899-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20900+/* { dg-options "-save-temps -O0" } */
20901+/* { dg-add-options arm_neon } */
20902
20903 #include "arm_neon.h"
20904
20905Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
20906===================================================================
20907--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
20908+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
20909@@ -3,7 +3,8 @@
20910
20911 /* { dg-do assemble } */
20912 /* { dg-require-effective-target arm_neon_ok } */
20913-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20914+/* { dg-options "-save-temps -O0" } */
20915+/* { dg-add-options arm_neon } */
20916
20917 #include "arm_neon.h"
20918
20919Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
20920===================================================================
20921--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
20922+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
20923@@ -3,7 +3,8 @@
20924
20925 /* { dg-do assemble } */
20926 /* { dg-require-effective-target arm_neon_ok } */
20927-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20928+/* { dg-options "-save-temps -O0" } */
20929+/* { dg-add-options arm_neon } */
20930
20931 #include "arm_neon.h"
20932
20933Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
20934===================================================================
20935--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
20936+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
20937@@ -3,7 +3,8 @@
20938
20939 /* { dg-do assemble } */
20940 /* { dg-require-effective-target arm_neon_ok } */
20941-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20942+/* { dg-options "-save-temps -O0" } */
20943+/* { dg-add-options arm_neon } */
20944
20945 #include "arm_neon.h"
20946
20947Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
20948===================================================================
20949--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
20950+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
20951@@ -3,7 +3,8 @@
20952
20953 /* { dg-do assemble } */
20954 /* { dg-require-effective-target arm_neon_ok } */
20955-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20956+/* { dg-options "-save-temps -O0" } */
20957+/* { dg-add-options arm_neon } */
20958
20959 #include "arm_neon.h"
20960
20961Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
20962===================================================================
20963--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
20964+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
20965@@ -3,7 +3,8 @@
20966
20967 /* { dg-do assemble } */
20968 /* { dg-require-effective-target arm_neon_ok } */
20969-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20970+/* { dg-options "-save-temps -O0" } */
20971+/* { dg-add-options arm_neon } */
20972
20973 #include "arm_neon.h"
20974
20975Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
20976===================================================================
20977--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
20978+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
20979@@ -3,7 +3,8 @@
20980
20981 /* { dg-do assemble } */
20982 /* { dg-require-effective-target arm_neon_ok } */
20983-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20984+/* { dg-options "-save-temps -O0" } */
20985+/* { dg-add-options arm_neon } */
20986
20987 #include "arm_neon.h"
20988
20989Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
20990===================================================================
20991--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
20992+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
20993@@ -3,7 +3,8 @@
20994
20995 /* { dg-do assemble } */
20996 /* { dg-require-effective-target arm_neon_ok } */
20997-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
20998+/* { dg-options "-save-temps -O0" } */
20999+/* { dg-add-options arm_neon } */
21000
21001 #include "arm_neon.h"
21002
21003Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
21004===================================================================
21005--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
21006+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
21007@@ -3,7 +3,8 @@
21008
21009 /* { dg-do assemble } */
21010 /* { dg-require-effective-target arm_neon_ok } */
21011-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21012+/* { dg-options "-save-temps -O0" } */
21013+/* { dg-add-options arm_neon } */
21014
21015 #include "arm_neon.h"
21016
21017Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
21018===================================================================
21019--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
21020+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
21021@@ -3,7 +3,8 @@
21022
21023 /* { dg-do assemble } */
21024 /* { dg-require-effective-target arm_neon_ok } */
21025-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21026+/* { dg-options "-save-temps -O0" } */
21027+/* { dg-add-options arm_neon } */
21028
21029 #include "arm_neon.h"
21030
21031Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
21032===================================================================
21033--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
21034+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
21035@@ -3,7 +3,8 @@
21036
21037 /* { dg-do assemble } */
21038 /* { dg-require-effective-target arm_neon_ok } */
21039-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21040+/* { dg-options "-save-temps -O0" } */
21041+/* { dg-add-options arm_neon } */
21042
21043 #include "arm_neon.h"
21044
21045Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
21046===================================================================
21047--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
21048+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
21049@@ -3,7 +3,8 @@
21050
21051 /* { dg-do assemble } */
21052 /* { dg-require-effective-target arm_neon_ok } */
21053-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21054+/* { dg-options "-save-temps -O0" } */
21055+/* { dg-add-options arm_neon } */
21056
21057 #include "arm_neon.h"
21058
21059Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
21060===================================================================
21061--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
21062+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
21063@@ -3,7 +3,8 @@
21064
21065 /* { dg-do assemble } */
21066 /* { dg-require-effective-target arm_neon_ok } */
21067-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21068+/* { dg-options "-save-temps -O0" } */
21069+/* { dg-add-options arm_neon } */
21070
21071 #include "arm_neon.h"
21072
21073Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
21074===================================================================
21075--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
21076+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
21077@@ -3,7 +3,8 @@
21078
21079 /* { dg-do assemble } */
21080 /* { dg-require-effective-target arm_neon_ok } */
21081-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21082+/* { dg-options "-save-temps -O0" } */
21083+/* { dg-add-options arm_neon } */
21084
21085 #include "arm_neon.h"
21086
21087Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
21088===================================================================
21089--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
21090+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
21091@@ -3,7 +3,8 @@
21092
21093 /* { dg-do assemble } */
21094 /* { dg-require-effective-target arm_neon_ok } */
21095-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21096+/* { dg-options "-save-temps -O0" } */
21097+/* { dg-add-options arm_neon } */
21098
21099 #include "arm_neon.h"
21100
21101Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
21102===================================================================
21103--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
21104+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
21105@@ -3,7 +3,8 @@
21106
21107 /* { dg-do assemble } */
21108 /* { dg-require-effective-target arm_neon_ok } */
21109-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21110+/* { dg-options "-save-temps -O0" } */
21111+/* { dg-add-options arm_neon } */
21112
21113 #include "arm_neon.h"
21114
21115Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
21116===================================================================
21117--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
21118+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
21119@@ -3,7 +3,8 @@
21120
21121 /* { dg-do assemble } */
21122 /* { dg-require-effective-target arm_neon_ok } */
21123-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21124+/* { dg-options "-save-temps -O0" } */
21125+/* { dg-add-options arm_neon } */
21126
21127 #include "arm_neon.h"
21128
21129Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
21130===================================================================
21131--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
21132+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
21133@@ -3,7 +3,8 @@
21134
21135 /* { dg-do assemble } */
21136 /* { dg-require-effective-target arm_neon_ok } */
21137-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21138+/* { dg-options "-save-temps -O0" } */
21139+/* { dg-add-options arm_neon } */
21140
21141 #include "arm_neon.h"
21142
21143Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
21144===================================================================
21145--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
21146+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
21147@@ -3,7 +3,8 @@
21148
21149 /* { dg-do assemble } */
21150 /* { dg-require-effective-target arm_neon_ok } */
21151-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21152+/* { dg-options "-save-temps -O0" } */
21153+/* { dg-add-options arm_neon } */
21154
21155 #include "arm_neon.h"
21156
21157Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
21158===================================================================
21159--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
21160+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
21161@@ -3,7 +3,8 @@
21162
21163 /* { dg-do assemble } */
21164 /* { dg-require-effective-target arm_neon_ok } */
21165-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21166+/* { dg-options "-save-temps -O0" } */
21167+/* { dg-add-options arm_neon } */
21168
21169 #include "arm_neon.h"
21170
21171Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
21172===================================================================
21173--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
21174+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
21175@@ -3,7 +3,8 @@
21176
21177 /* { dg-do assemble } */
21178 /* { dg-require-effective-target arm_neon_ok } */
21179-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21180+/* { dg-options "-save-temps -O0" } */
21181+/* { dg-add-options arm_neon } */
21182
21183 #include "arm_neon.h"
21184
21185Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
21186===================================================================
21187--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
21188+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
21189@@ -3,7 +3,8 @@
21190
21191 /* { dg-do assemble } */
21192 /* { dg-require-effective-target arm_neon_ok } */
21193-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21194+/* { dg-options "-save-temps -O0" } */
21195+/* { dg-add-options arm_neon } */
21196
21197 #include "arm_neon.h"
21198
21199Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
21200===================================================================
21201--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
21202+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
21203@@ -3,7 +3,8 @@
21204
21205 /* { dg-do assemble } */
21206 /* { dg-require-effective-target arm_neon_ok } */
21207-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21208+/* { dg-options "-save-temps -O0" } */
21209+/* { dg-add-options arm_neon } */
21210
21211 #include "arm_neon.h"
21212
21213Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
21214===================================================================
21215--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
21216+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
21217@@ -3,7 +3,8 @@
21218
21219 /* { dg-do assemble } */
21220 /* { dg-require-effective-target arm_neon_ok } */
21221-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21222+/* { dg-options "-save-temps -O0" } */
21223+/* { dg-add-options arm_neon } */
21224
21225 #include "arm_neon.h"
21226
21227Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
21228===================================================================
21229--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
21230+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
21231@@ -3,7 +3,8 @@
21232
21233 /* { dg-do assemble } */
21234 /* { dg-require-effective-target arm_neon_ok } */
21235-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21236+/* { dg-options "-save-temps -O0" } */
21237+/* { dg-add-options arm_neon } */
21238
21239 #include "arm_neon.h"
21240
21241Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
21242===================================================================
21243--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
21244+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
21245@@ -3,7 +3,8 @@
21246
21247 /* { dg-do assemble } */
21248 /* { dg-require-effective-target arm_neon_ok } */
21249-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21250+/* { dg-options "-save-temps -O0" } */
21251+/* { dg-add-options arm_neon } */
21252
21253 #include "arm_neon.h"
21254
21255Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
21256===================================================================
21257--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
21258+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
21259@@ -3,7 +3,8 @@
21260
21261 /* { dg-do assemble } */
21262 /* { dg-require-effective-target arm_neon_ok } */
21263-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21264+/* { dg-options "-save-temps -O0" } */
21265+/* { dg-add-options arm_neon } */
21266
21267 #include "arm_neon.h"
21268
21269Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
21270===================================================================
21271--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
21272+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
21273@@ -3,7 +3,8 @@
21274
21275 /* { dg-do assemble } */
21276 /* { dg-require-effective-target arm_neon_ok } */
21277-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21278+/* { dg-options "-save-temps -O0" } */
21279+/* { dg-add-options arm_neon } */
21280
21281 #include "arm_neon.h"
21282
21283Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
21284===================================================================
21285--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
21286+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
21287@@ -3,7 +3,8 @@
21288
21289 /* { dg-do assemble } */
21290 /* { dg-require-effective-target arm_neon_ok } */
21291-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21292+/* { dg-options "-save-temps -O0" } */
21293+/* { dg-add-options arm_neon } */
21294
21295 #include "arm_neon.h"
21296
21297Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
21298===================================================================
21299--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
21300+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
21301@@ -3,7 +3,8 @@
21302
21303 /* { dg-do assemble } */
21304 /* { dg-require-effective-target arm_neon_ok } */
21305-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21306+/* { dg-options "-save-temps -O0" } */
21307+/* { dg-add-options arm_neon } */
21308
21309 #include "arm_neon.h"
21310
21311Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
21312===================================================================
21313--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
21314+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
21315@@ -3,7 +3,8 @@
21316
21317 /* { dg-do assemble } */
21318 /* { dg-require-effective-target arm_neon_ok } */
21319-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21320+/* { dg-options "-save-temps -O0" } */
21321+/* { dg-add-options arm_neon } */
21322
21323 #include "arm_neon.h"
21324
21325Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
21326===================================================================
21327--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
21328+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
21329@@ -3,7 +3,8 @@
21330
21331 /* { dg-do assemble } */
21332 /* { dg-require-effective-target arm_neon_ok } */
21333-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21334+/* { dg-options "-save-temps -O0" } */
21335+/* { dg-add-options arm_neon } */
21336
21337 #include "arm_neon.h"
21338
21339Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
21340===================================================================
21341--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
21342+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
21343@@ -3,7 +3,8 @@
21344
21345 /* { dg-do assemble } */
21346 /* { dg-require-effective-target arm_neon_ok } */
21347-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21348+/* { dg-options "-save-temps -O0" } */
21349+/* { dg-add-options arm_neon } */
21350
21351 #include "arm_neon.h"
21352
21353Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
21354===================================================================
21355--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
21356+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
21357@@ -3,7 +3,8 @@
21358
21359 /* { dg-do assemble } */
21360 /* { dg-require-effective-target arm_neon_ok } */
21361-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21362+/* { dg-options "-save-temps -O0" } */
21363+/* { dg-add-options arm_neon } */
21364
21365 #include "arm_neon.h"
21366
21367Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
21368===================================================================
21369--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
21370+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
21371@@ -3,7 +3,8 @@
21372
21373 /* { dg-do assemble } */
21374 /* { dg-require-effective-target arm_neon_ok } */
21375-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21376+/* { dg-options "-save-temps -O0" } */
21377+/* { dg-add-options arm_neon } */
21378
21379 #include "arm_neon.h"
21380
21381Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
21382===================================================================
21383--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
21384+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
21385@@ -3,7 +3,8 @@
21386
21387 /* { dg-do assemble } */
21388 /* { dg-require-effective-target arm_neon_ok } */
21389-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21390+/* { dg-options "-save-temps -O0" } */
21391+/* { dg-add-options arm_neon } */
21392
21393 #include "arm_neon.h"
21394
21395Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
21396===================================================================
21397--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
21398+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
21399@@ -3,7 +3,8 @@
21400
21401 /* { dg-do assemble } */
21402 /* { dg-require-effective-target arm_neon_ok } */
21403-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21404+/* { dg-options "-save-temps -O0" } */
21405+/* { dg-add-options arm_neon } */
21406
21407 #include "arm_neon.h"
21408
21409Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
21410===================================================================
21411--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
21412+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
21413@@ -3,7 +3,8 @@
21414
21415 /* { dg-do assemble } */
21416 /* { dg-require-effective-target arm_neon_ok } */
21417-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21418+/* { dg-options "-save-temps -O0" } */
21419+/* { dg-add-options arm_neon } */
21420
21421 #include "arm_neon.h"
21422
21423Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
21424===================================================================
21425--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
21426+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
21427@@ -3,7 +3,8 @@
21428
21429 /* { dg-do assemble } */
21430 /* { dg-require-effective-target arm_neon_ok } */
21431-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21432+/* { dg-options "-save-temps -O0" } */
21433+/* { dg-add-options arm_neon } */
21434
21435 #include "arm_neon.h"
21436
21437Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
21438===================================================================
21439--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
21440+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
21441@@ -3,7 +3,8 @@
21442
21443 /* { dg-do assemble } */
21444 /* { dg-require-effective-target arm_neon_ok } */
21445-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21446+/* { dg-options "-save-temps -O0" } */
21447+/* { dg-add-options arm_neon } */
21448
21449 #include "arm_neon.h"
21450
21451Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls16.c
21452===================================================================
21453--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshls16.c
21454+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls16.c
21455@@ -3,7 +3,8 @@
21456
21457 /* { dg-do assemble } */
21458 /* { dg-require-effective-target arm_neon_ok } */
21459-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21460+/* { dg-options "-save-temps -O0" } */
21461+/* { dg-add-options arm_neon } */
21462
21463 #include "arm_neon.h"
21464
21465Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls32.c
21466===================================================================
21467--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshls32.c
21468+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls32.c
21469@@ -3,7 +3,8 @@
21470
21471 /* { dg-do assemble } */
21472 /* { dg-require-effective-target arm_neon_ok } */
21473-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21474+/* { dg-options "-save-temps -O0" } */
21475+/* { dg-add-options arm_neon } */
21476
21477 #include "arm_neon.h"
21478
21479Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls64.c
21480===================================================================
21481--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshls64.c
21482+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls64.c
21483@@ -3,7 +3,8 @@
21484
21485 /* { dg-do assemble } */
21486 /* { dg-require-effective-target arm_neon_ok } */
21487-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21488+/* { dg-options "-save-temps -O0" } */
21489+/* { dg-add-options arm_neon } */
21490
21491 #include "arm_neon.h"
21492
21493Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls8.c
21494===================================================================
21495--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshls8.c
21496+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshls8.c
21497@@ -3,7 +3,8 @@
21498
21499 /* { dg-do assemble } */
21500 /* { dg-require-effective-target arm_neon_ok } */
21501-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21502+/* { dg-options "-save-temps -O0" } */
21503+/* { dg-add-options arm_neon } */
21504
21505 #include "arm_neon.h"
21506
21507Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
21508===================================================================
21509--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
21510+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
21511@@ -3,7 +3,8 @@
21512
21513 /* { dg-do assemble } */
21514 /* { dg-require-effective-target arm_neon_ok } */
21515-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21516+/* { dg-options "-save-temps -O0" } */
21517+/* { dg-add-options arm_neon } */
21518
21519 #include "arm_neon.h"
21520
21521Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
21522===================================================================
21523--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
21524+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
21525@@ -3,7 +3,8 @@
21526
21527 /* { dg-do assemble } */
21528 /* { dg-require-effective-target arm_neon_ok } */
21529-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21530+/* { dg-options "-save-temps -O0" } */
21531+/* { dg-add-options arm_neon } */
21532
21533 #include "arm_neon.h"
21534
21535Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
21536===================================================================
21537--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
21538+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
21539@@ -3,7 +3,8 @@
21540
21541 /* { dg-do assemble } */
21542 /* { dg-require-effective-target arm_neon_ok } */
21543-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21544+/* { dg-options "-save-temps -O0" } */
21545+/* { dg-add-options arm_neon } */
21546
21547 #include "arm_neon.h"
21548
21549Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
21550===================================================================
21551--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
21552+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
21553@@ -3,7 +3,8 @@
21554
21555 /* { dg-do assemble } */
21556 /* { dg-require-effective-target arm_neon_ok } */
21557-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21558+/* { dg-options "-save-temps -O0" } */
21559+/* { dg-add-options arm_neon } */
21560
21561 #include "arm_neon.h"
21562
21563Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
21564===================================================================
21565--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
21566+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
21567@@ -3,7 +3,8 @@
21568
21569 /* { dg-do assemble } */
21570 /* { dg-require-effective-target arm_neon_ok } */
21571-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21572+/* { dg-options "-save-temps -O0" } */
21573+/* { dg-add-options arm_neon } */
21574
21575 #include "arm_neon.h"
21576
21577Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
21578===================================================================
21579--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
21580+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
21581@@ -3,7 +3,8 @@
21582
21583 /* { dg-do assemble } */
21584 /* { dg-require-effective-target arm_neon_ok } */
21585-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21586+/* { dg-options "-save-temps -O0" } */
21587+/* { dg-add-options arm_neon } */
21588
21589 #include "arm_neon.h"
21590
21591Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
21592===================================================================
21593--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
21594+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
21595@@ -3,7 +3,8 @@
21596
21597 /* { dg-do assemble } */
21598 /* { dg-require-effective-target arm_neon_ok } */
21599-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21600+/* { dg-options "-save-temps -O0" } */
21601+/* { dg-add-options arm_neon } */
21602
21603 #include "arm_neon.h"
21604
21605Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
21606===================================================================
21607--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
21608+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
21609@@ -3,7 +3,8 @@
21610
21611 /* { dg-do assemble } */
21612 /* { dg-require-effective-target arm_neon_ok } */
21613-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21614+/* { dg-options "-save-temps -O0" } */
21615+/* { dg-add-options arm_neon } */
21616
21617 #include "arm_neon.h"
21618
21619Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
21620===================================================================
21621--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
21622+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
21623@@ -3,7 +3,8 @@
21624
21625 /* { dg-do assemble } */
21626 /* { dg-require-effective-target arm_neon_ok } */
21627-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21628+/* { dg-options "-save-temps -O0" } */
21629+/* { dg-add-options arm_neon } */
21630
21631 #include "arm_neon.h"
21632
21633Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
21634===================================================================
21635--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
21636+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
21637@@ -3,7 +3,8 @@
21638
21639 /* { dg-do assemble } */
21640 /* { dg-require-effective-target arm_neon_ok } */
21641-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21642+/* { dg-options "-save-temps -O0" } */
21643+/* { dg-add-options arm_neon } */
21644
21645 #include "arm_neon.h"
21646
21647Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
21648===================================================================
21649--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
21650+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
21651@@ -3,7 +3,8 @@
21652
21653 /* { dg-do assemble } */
21654 /* { dg-require-effective-target arm_neon_ok } */
21655-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21656+/* { dg-options "-save-temps -O0" } */
21657+/* { dg-add-options arm_neon } */
21658
21659 #include "arm_neon.h"
21660
21661Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
21662===================================================================
21663--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
21664+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
21665@@ -3,7 +3,8 @@
21666
21667 /* { dg-do assemble } */
21668 /* { dg-require-effective-target arm_neon_ok } */
21669-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21670+/* { dg-options "-save-temps -O0" } */
21671+/* { dg-add-options arm_neon } */
21672
21673 #include "arm_neon.h"
21674
21675Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
21676===================================================================
21677--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
21678+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
21679@@ -3,7 +3,8 @@
21680
21681 /* { dg-do assemble } */
21682 /* { dg-require-effective-target arm_neon_ok } */
21683-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21684+/* { dg-options "-save-temps -O0" } */
21685+/* { dg-add-options arm_neon } */
21686
21687 #include "arm_neon.h"
21688
21689Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
21690===================================================================
21691--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
21692+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
21693@@ -3,7 +3,8 @@
21694
21695 /* { dg-do assemble } */
21696 /* { dg-require-effective-target arm_neon_ok } */
21697-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21698+/* { dg-options "-save-temps -O0" } */
21699+/* { dg-add-options arm_neon } */
21700
21701 #include "arm_neon.h"
21702
21703Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
21704===================================================================
21705--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
21706+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
21707@@ -3,7 +3,8 @@
21708
21709 /* { dg-do assemble } */
21710 /* { dg-require-effective-target arm_neon_ok } */
21711-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21712+/* { dg-options "-save-temps -O0" } */
21713+/* { dg-add-options arm_neon } */
21714
21715 #include "arm_neon.h"
21716
21717Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
21718===================================================================
21719--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
21720+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
21721@@ -3,7 +3,8 @@
21722
21723 /* { dg-do assemble } */
21724 /* { dg-require-effective-target arm_neon_ok } */
21725-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21726+/* { dg-options "-save-temps -O0" } */
21727+/* { dg-add-options arm_neon } */
21728
21729 #include "arm_neon.h"
21730
21731Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
21732===================================================================
21733--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
21734+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
21735@@ -3,7 +3,8 @@
21736
21737 /* { dg-do assemble } */
21738 /* { dg-require-effective-target arm_neon_ok } */
21739-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21740+/* { dg-options "-save-temps -O0" } */
21741+/* { dg-add-options arm_neon } */
21742
21743 #include "arm_neon.h"
21744
21745Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
21746===================================================================
21747--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
21748+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
21749@@ -3,7 +3,8 @@
21750
21751 /* { dg-do assemble } */
21752 /* { dg-require-effective-target arm_neon_ok } */
21753-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21754+/* { dg-options "-save-temps -O0" } */
21755+/* { dg-add-options arm_neon } */
21756
21757 #include "arm_neon.h"
21758
21759Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
21760===================================================================
21761--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
21762+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
21763@@ -3,7 +3,8 @@
21764
21765 /* { dg-do assemble } */
21766 /* { dg-require-effective-target arm_neon_ok } */
21767-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21768+/* { dg-options "-save-temps -O0" } */
21769+/* { dg-add-options arm_neon } */
21770
21771 #include "arm_neon.h"
21772
21773Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
21774===================================================================
21775--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
21776+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
21777@@ -3,7 +3,8 @@
21778
21779 /* { dg-do assemble } */
21780 /* { dg-require-effective-target arm_neon_ok } */
21781-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21782+/* { dg-options "-save-temps -O0" } */
21783+/* { dg-add-options arm_neon } */
21784
21785 #include "arm_neon.h"
21786
21787Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
21788===================================================================
21789--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
21790+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
21791@@ -3,7 +3,8 @@
21792
21793 /* { dg-do assemble } */
21794 /* { dg-require-effective-target arm_neon_ok } */
21795-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21796+/* { dg-options "-save-temps -O0" } */
21797+/* { dg-add-options arm_neon } */
21798
21799 #include "arm_neon.h"
21800
21801Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
21802===================================================================
21803--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
21804+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
21805@@ -3,7 +3,8 @@
21806
21807 /* { dg-do assemble } */
21808 /* { dg-require-effective-target arm_neon_ok } */
21809-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21810+/* { dg-options "-save-temps -O0" } */
21811+/* { dg-add-options arm_neon } */
21812
21813 #include "arm_neon.h"
21814
21815Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
21816===================================================================
21817--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
21818+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
21819@@ -3,7 +3,8 @@
21820
21821 /* { dg-do assemble } */
21822 /* { dg-require-effective-target arm_neon_ok } */
21823-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21824+/* { dg-options "-save-temps -O0" } */
21825+/* { dg-add-options arm_neon } */
21826
21827 #include "arm_neon.h"
21828
21829Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
21830===================================================================
21831--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
21832+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
21833@@ -3,7 +3,8 @@
21834
21835 /* { dg-do assemble } */
21836 /* { dg-require-effective-target arm_neon_ok } */
21837-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21838+/* { dg-options "-save-temps -O0" } */
21839+/* { dg-add-options arm_neon } */
21840
21841 #include "arm_neon.h"
21842
21843Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
21844===================================================================
21845--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
21846+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
21847@@ -3,7 +3,8 @@
21848
21849 /* { dg-do assemble } */
21850 /* { dg-require-effective-target arm_neon_ok } */
21851-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21852+/* { dg-options "-save-temps -O0" } */
21853+/* { dg-add-options arm_neon } */
21854
21855 #include "arm_neon.h"
21856
21857Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
21858===================================================================
21859--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
21860+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
21861@@ -3,7 +3,8 @@
21862
21863 /* { dg-do assemble } */
21864 /* { dg-require-effective-target arm_neon_ok } */
21865-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21866+/* { dg-options "-save-temps -O0" } */
21867+/* { dg-add-options arm_neon } */
21868
21869 #include "arm_neon.h"
21870
21871Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
21872===================================================================
21873--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
21874+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
21875@@ -3,7 +3,8 @@
21876
21877 /* { dg-do assemble } */
21878 /* { dg-require-effective-target arm_neon_ok } */
21879-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21880+/* { dg-options "-save-temps -O0" } */
21881+/* { dg-add-options arm_neon } */
21882
21883 #include "arm_neon.h"
21884
21885Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
21886===================================================================
21887--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
21888+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
21889@@ -3,7 +3,8 @@
21890
21891 /* { dg-do assemble } */
21892 /* { dg-require-effective-target arm_neon_ok } */
21893-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21894+/* { dg-options "-save-temps -O0" } */
21895+/* { dg-add-options arm_neon } */
21896
21897 #include "arm_neon.h"
21898
21899Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
21900===================================================================
21901--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
21902+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
21903@@ -3,7 +3,8 @@
21904
21905 /* { dg-do assemble } */
21906 /* { dg-require-effective-target arm_neon_ok } */
21907-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21908+/* { dg-options "-save-temps -O0" } */
21909+/* { dg-add-options arm_neon } */
21910
21911 #include "arm_neon.h"
21912
21913Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
21914===================================================================
21915--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
21916+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
21917@@ -3,7 +3,8 @@
21918
21919 /* { dg-do assemble } */
21920 /* { dg-require-effective-target arm_neon_ok } */
21921-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21922+/* { dg-options "-save-temps -O0" } */
21923+/* { dg-add-options arm_neon } */
21924
21925 #include "arm_neon.h"
21926
21927Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
21928===================================================================
21929--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
21930+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
21931@@ -3,7 +3,8 @@
21932
21933 /* { dg-do assemble } */
21934 /* { dg-require-effective-target arm_neon_ok } */
21935-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21936+/* { dg-options "-save-temps -O0" } */
21937+/* { dg-add-options arm_neon } */
21938
21939 #include "arm_neon.h"
21940
21941Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
21942===================================================================
21943--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
21944+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
21945@@ -3,7 +3,8 @@
21946
21947 /* { dg-do assemble } */
21948 /* { dg-require-effective-target arm_neon_ok } */
21949-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21950+/* { dg-options "-save-temps -O0" } */
21951+/* { dg-add-options arm_neon } */
21952
21953 #include "arm_neon.h"
21954
21955Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
21956===================================================================
21957--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
21958+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
21959@@ -3,7 +3,8 @@
21960
21961 /* { dg-do assemble } */
21962 /* { dg-require-effective-target arm_neon_ok } */
21963-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21964+/* { dg-options "-save-temps -O0" } */
21965+/* { dg-add-options arm_neon } */
21966
21967 #include "arm_neon.h"
21968
21969Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
21970===================================================================
21971--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
21972+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
21973@@ -3,7 +3,8 @@
21974
21975 /* { dg-do assemble } */
21976 /* { dg-require-effective-target arm_neon_ok } */
21977-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21978+/* { dg-options "-save-temps -O0" } */
21979+/* { dg-add-options arm_neon } */
21980
21981 #include "arm_neon.h"
21982
21983Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
21984===================================================================
21985--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
21986+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
21987@@ -3,7 +3,8 @@
21988
21989 /* { dg-do assemble } */
21990 /* { dg-require-effective-target arm_neon_ok } */
21991-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
21992+/* { dg-options "-save-temps -O0" } */
21993+/* { dg-add-options arm_neon } */
21994
21995 #include "arm_neon.h"
21996
21997Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
21998===================================================================
21999--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
22000+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
22001@@ -3,7 +3,8 @@
22002
22003 /* { dg-do assemble } */
22004 /* { dg-require-effective-target arm_neon_ok } */
22005-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22006+/* { dg-options "-save-temps -O0" } */
22007+/* { dg-add-options arm_neon } */
22008
22009 #include "arm_neon.h"
22010
22011Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
22012===================================================================
22013--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
22014+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
22015@@ -3,7 +3,8 @@
22016
22017 /* { dg-do assemble } */
22018 /* { dg-require-effective-target arm_neon_ok } */
22019-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22020+/* { dg-options "-save-temps -O0" } */
22021+/* { dg-add-options arm_neon } */
22022
22023 #include "arm_neon.h"
22024
22025Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
22026===================================================================
22027--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
22028+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
22029@@ -3,7 +3,8 @@
22030
22031 /* { dg-do assemble } */
22032 /* { dg-require-effective-target arm_neon_ok } */
22033-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22034+/* { dg-options "-save-temps -O0" } */
22035+/* { dg-add-options arm_neon } */
22036
22037 #include "arm_neon.h"
22038
22039Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
22040===================================================================
22041--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
22042+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
22043@@ -3,7 +3,8 @@
22044
22045 /* { dg-do assemble } */
22046 /* { dg-require-effective-target arm_neon_ok } */
22047-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22048+/* { dg-options "-save-temps -O0" } */
22049+/* { dg-add-options arm_neon } */
22050
22051 #include "arm_neon.h"
22052
22053Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
22054===================================================================
22055--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
22056+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
22057@@ -3,7 +3,8 @@
22058
22059 /* { dg-do assemble } */
22060 /* { dg-require-effective-target arm_neon_ok } */
22061-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22062+/* { dg-options "-save-temps -O0" } */
22063+/* { dg-add-options arm_neon } */
22064
22065 #include "arm_neon.h"
22066
22067Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
22068===================================================================
22069--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
22070+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
22071@@ -3,7 +3,8 @@
22072
22073 /* { dg-do assemble } */
22074 /* { dg-require-effective-target arm_neon_ok } */
22075-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22076+/* { dg-options "-save-temps -O0" } */
22077+/* { dg-add-options arm_neon } */
22078
22079 #include "arm_neon.h"
22080
22081Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
22082===================================================================
22083--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
22084+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
22085@@ -3,7 +3,8 @@
22086
22087 /* { dg-do assemble } */
22088 /* { dg-require-effective-target arm_neon_ok } */
22089-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22090+/* { dg-options "-save-temps -O0" } */
22091+/* { dg-add-options arm_neon } */
22092
22093 #include "arm_neon.h"
22094
22095Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
22096===================================================================
22097--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
22098+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
22099@@ -3,7 +3,8 @@
22100
22101 /* { dg-do assemble } */
22102 /* { dg-require-effective-target arm_neon_ok } */
22103-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22104+/* { dg-options "-save-temps -O0" } */
22105+/* { dg-add-options arm_neon } */
22106
22107 #include "arm_neon.h"
22108
22109Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
22110===================================================================
22111--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
22112+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
22113@@ -3,7 +3,8 @@
22114
22115 /* { dg-do assemble } */
22116 /* { dg-require-effective-target arm_neon_ok } */
22117-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22118+/* { dg-options "-save-temps -O0" } */
22119+/* { dg-add-options arm_neon } */
22120
22121 #include "arm_neon.h"
22122
22123Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
22124===================================================================
22125--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
22126+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
22127@@ -3,7 +3,8 @@
22128
22129 /* { dg-do assemble } */
22130 /* { dg-require-effective-target arm_neon_ok } */
22131-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22132+/* { dg-options "-save-temps -O0" } */
22133+/* { dg-add-options arm_neon } */
22134
22135 #include "arm_neon.h"
22136
22137Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
22138===================================================================
22139--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
22140+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
22141@@ -3,7 +3,8 @@
22142
22143 /* { dg-do assemble } */
22144 /* { dg-require-effective-target arm_neon_ok } */
22145-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22146+/* { dg-options "-save-temps -O0" } */
22147+/* { dg-add-options arm_neon } */
22148
22149 #include "arm_neon.h"
22150
22151Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
22152===================================================================
22153--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
22154+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
22155@@ -3,7 +3,8 @@
22156
22157 /* { dg-do assemble } */
22158 /* { dg-require-effective-target arm_neon_ok } */
22159-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22160+/* { dg-options "-save-temps -O0" } */
22161+/* { dg-add-options arm_neon } */
22162
22163 #include "arm_neon.h"
22164
22165Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
22166===================================================================
22167--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
22168+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
22169@@ -3,7 +3,8 @@
22170
22171 /* { dg-do assemble } */
22172 /* { dg-require-effective-target arm_neon_ok } */
22173-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22174+/* { dg-options "-save-temps -O0" } */
22175+/* { dg-add-options arm_neon } */
22176
22177 #include "arm_neon.h"
22178
22179Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
22180===================================================================
22181--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
22182+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
22183@@ -3,7 +3,8 @@
22184
22185 /* { dg-do assemble } */
22186 /* { dg-require-effective-target arm_neon_ok } */
22187-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22188+/* { dg-options "-save-temps -O0" } */
22189+/* { dg-add-options arm_neon } */
22190
22191 #include "arm_neon.h"
22192
22193Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
22194===================================================================
22195--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
22196+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
22197@@ -3,7 +3,8 @@
22198
22199 /* { dg-do assemble } */
22200 /* { dg-require-effective-target arm_neon_ok } */
22201-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22202+/* { dg-options "-save-temps -O0" } */
22203+/* { dg-add-options arm_neon } */
22204
22205 #include "arm_neon.h"
22206
22207Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
22208===================================================================
22209--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
22210+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
22211@@ -3,7 +3,8 @@
22212
22213 /* { dg-do assemble } */
22214 /* { dg-require-effective-target arm_neon_ok } */
22215-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22216+/* { dg-options "-save-temps -O0" } */
22217+/* { dg-add-options arm_neon } */
22218
22219 #include "arm_neon.h"
22220
22221Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
22222===================================================================
22223--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
22224+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
22225@@ -3,7 +3,8 @@
22226
22227 /* { dg-do assemble } */
22228 /* { dg-require-effective-target arm_neon_ok } */
22229-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22230+/* { dg-options "-save-temps -O0" } */
22231+/* { dg-add-options arm_neon } */
22232
22233 #include "arm_neon.h"
22234
22235Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
22236===================================================================
22237--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
22238+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
22239@@ -3,7 +3,8 @@
22240
22241 /* { dg-do assemble } */
22242 /* { dg-require-effective-target arm_neon_ok } */
22243-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22244+/* { dg-options "-save-temps -O0" } */
22245+/* { dg-add-options arm_neon } */
22246
22247 #include "arm_neon.h"
22248
22249Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
22250===================================================================
22251--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
22252+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
22253@@ -3,7 +3,8 @@
22254
22255 /* { dg-do assemble } */
22256 /* { dg-require-effective-target arm_neon_ok } */
22257-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22258+/* { dg-options "-save-temps -O0" } */
22259+/* { dg-add-options arm_neon } */
22260
22261 #include "arm_neon.h"
22262
22263Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
22264===================================================================
22265--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
22266+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
22267@@ -3,7 +3,8 @@
22268
22269 /* { dg-do assemble } */
22270 /* { dg-require-effective-target arm_neon_ok } */
22271-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22272+/* { dg-options "-save-temps -O0" } */
22273+/* { dg-add-options arm_neon } */
22274
22275 #include "arm_neon.h"
22276
22277Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
22278===================================================================
22279--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
22280+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
22281@@ -3,7 +3,8 @@
22282
22283 /* { dg-do assemble } */
22284 /* { dg-require-effective-target arm_neon_ok } */
22285-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22286+/* { dg-options "-save-temps -O0" } */
22287+/* { dg-add-options arm_neon } */
22288
22289 #include "arm_neon.h"
22290
22291Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
22292===================================================================
22293--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
22294+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
22295@@ -3,7 +3,8 @@
22296
22297 /* { dg-do assemble } */
22298 /* { dg-require-effective-target arm_neon_ok } */
22299-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22300+/* { dg-options "-save-temps -O0" } */
22301+/* { dg-add-options arm_neon } */
22302
22303 #include "arm_neon.h"
22304
22305Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
22306===================================================================
22307--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
22308+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
22309@@ -3,7 +3,8 @@
22310
22311 /* { dg-do assemble } */
22312 /* { dg-require-effective-target arm_neon_ok } */
22313-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22314+/* { dg-options "-save-temps -O0" } */
22315+/* { dg-add-options arm_neon } */
22316
22317 #include "arm_neon.h"
22318
22319Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
22320===================================================================
22321--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
22322+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
22323@@ -3,7 +3,8 @@
22324
22325 /* { dg-do assemble } */
22326 /* { dg-require-effective-target arm_neon_ok } */
22327-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22328+/* { dg-options "-save-temps -O0" } */
22329+/* { dg-add-options arm_neon } */
22330
22331 #include "arm_neon.h"
22332
22333Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
22334===================================================================
22335--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
22336+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
22337@@ -3,7 +3,8 @@
22338
22339 /* { dg-do assemble } */
22340 /* { dg-require-effective-target arm_neon_ok } */
22341-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22342+/* { dg-options "-save-temps -O0" } */
22343+/* { dg-add-options arm_neon } */
22344
22345 #include "arm_neon.h"
22346
22347Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
22348===================================================================
22349--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
22350+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
22351@@ -3,7 +3,8 @@
22352
22353 /* { dg-do assemble } */
22354 /* { dg-require-effective-target arm_neon_ok } */
22355-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22356+/* { dg-options "-save-temps -O0" } */
22357+/* { dg-add-options arm_neon } */
22358
22359 #include "arm_neon.h"
22360
22361Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
22362===================================================================
22363--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
22364+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
22365@@ -3,7 +3,8 @@
22366
22367 /* { dg-do assemble } */
22368 /* { dg-require-effective-target arm_neon_ok } */
22369-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22370+/* { dg-options "-save-temps -O0" } */
22371+/* { dg-add-options arm_neon } */
22372
22373 #include "arm_neon.h"
22374
22375Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
22376===================================================================
22377--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
22378+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
22379@@ -3,7 +3,8 @@
22380
22381 /* { dg-do assemble } */
22382 /* { dg-require-effective-target arm_neon_ok } */
22383-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22384+/* { dg-options "-save-temps -O0" } */
22385+/* { dg-add-options arm_neon } */
22386
22387 #include "arm_neon.h"
22388
22389Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
22390===================================================================
22391--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
22392+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
22393@@ -3,7 +3,8 @@
22394
22395 /* { dg-do assemble } */
22396 /* { dg-require-effective-target arm_neon_ok } */
22397-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22398+/* { dg-options "-save-temps -O0" } */
22399+/* { dg-add-options arm_neon } */
22400
22401 #include "arm_neon.h"
22402
22403Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
22404===================================================================
22405--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
22406+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
22407@@ -3,7 +3,8 @@
22408
22409 /* { dg-do assemble } */
22410 /* { dg-require-effective-target arm_neon_ok } */
22411-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22412+/* { dg-options "-save-temps -O0" } */
22413+/* { dg-add-options arm_neon } */
22414
22415 #include "arm_neon.h"
22416
22417Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
22418===================================================================
22419--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
22420+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
22421@@ -3,7 +3,8 @@
22422
22423 /* { dg-do assemble } */
22424 /* { dg-require-effective-target arm_neon_ok } */
22425-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22426+/* { dg-options "-save-temps -O0" } */
22427+/* { dg-add-options arm_neon } */
22428
22429 #include "arm_neon.h"
22430
22431Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
22432===================================================================
22433--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
22434+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
22435@@ -3,7 +3,8 @@
22436
22437 /* { dg-do assemble } */
22438 /* { dg-require-effective-target arm_neon_ok } */
22439-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22440+/* { dg-options "-save-temps -O0" } */
22441+/* { dg-add-options arm_neon } */
22442
22443 #include "arm_neon.h"
22444
22445Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
22446===================================================================
22447--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
22448+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
22449@@ -3,7 +3,8 @@
22450
22451 /* { dg-do assemble } */
22452 /* { dg-require-effective-target arm_neon_ok } */
22453-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22454+/* { dg-options "-save-temps -O0" } */
22455+/* { dg-add-options arm_neon } */
22456
22457 #include "arm_neon.h"
22458
22459Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
22460===================================================================
22461--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
22462+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
22463@@ -3,7 +3,8 @@
22464
22465 /* { dg-do assemble } */
22466 /* { dg-require-effective-target arm_neon_ok } */
22467-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22468+/* { dg-options "-save-temps -O0" } */
22469+/* { dg-add-options arm_neon } */
22470
22471 #include "arm_neon.h"
22472
22473Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
22474===================================================================
22475--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
22476+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
22477@@ -3,7 +3,8 @@
22478
22479 /* { dg-do assemble } */
22480 /* { dg-require-effective-target arm_neon_ok } */
22481-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22482+/* { dg-options "-save-temps -O0" } */
22483+/* { dg-add-options arm_neon } */
22484
22485 #include "arm_neon.h"
22486
22487Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
22488===================================================================
22489--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
22490+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
22491@@ -3,7 +3,8 @@
22492
22493 /* { dg-do assemble } */
22494 /* { dg-require-effective-target arm_neon_ok } */
22495-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22496+/* { dg-options "-save-temps -O0" } */
22497+/* { dg-add-options arm_neon } */
22498
22499 #include "arm_neon.h"
22500
22501Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
22502===================================================================
22503--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
22504+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
22505@@ -3,7 +3,8 @@
22506
22507 /* { dg-do assemble } */
22508 /* { dg-require-effective-target arm_neon_ok } */
22509-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22510+/* { dg-options "-save-temps -O0" } */
22511+/* { dg-add-options arm_neon } */
22512
22513 #include "arm_neon.h"
22514
22515Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
22516===================================================================
22517--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
22518+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
22519@@ -3,7 +3,8 @@
22520
22521 /* { dg-do assemble } */
22522 /* { dg-require-effective-target arm_neon_ok } */
22523-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22524+/* { dg-options "-save-temps -O0" } */
22525+/* { dg-add-options arm_neon } */
22526
22527 #include "arm_neon.h"
22528
22529Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
22530===================================================================
22531--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
22532+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
22533@@ -3,7 +3,8 @@
22534
22535 /* { dg-do assemble } */
22536 /* { dg-require-effective-target arm_neon_ok } */
22537-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22538+/* { dg-options "-save-temps -O0" } */
22539+/* { dg-add-options arm_neon } */
22540
22541 #include "arm_neon.h"
22542
22543Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
22544===================================================================
22545--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
22546+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
22547@@ -3,7 +3,8 @@
22548
22549 /* { dg-do assemble } */
22550 /* { dg-require-effective-target arm_neon_ok } */
22551-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22552+/* { dg-options "-save-temps -O0" } */
22553+/* { dg-add-options arm_neon } */
22554
22555 #include "arm_neon.h"
22556
22557Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
22558===================================================================
22559--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
22560+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
22561@@ -3,7 +3,8 @@
22562
22563 /* { dg-do assemble } */
22564 /* { dg-require-effective-target arm_neon_ok } */
22565-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22566+/* { dg-options "-save-temps -O0" } */
22567+/* { dg-add-options arm_neon } */
22568
22569 #include "arm_neon.h"
22570
22571Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
22572===================================================================
22573--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
22574+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
22575@@ -3,7 +3,8 @@
22576
22577 /* { dg-do assemble } */
22578 /* { dg-require-effective-target arm_neon_ok } */
22579-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22580+/* { dg-options "-save-temps -O0" } */
22581+/* { dg-add-options arm_neon } */
22582
22583 #include "arm_neon.h"
22584
22585Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
22586===================================================================
22587--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
22588+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
22589@@ -3,7 +3,8 @@
22590
22591 /* { dg-do assemble } */
22592 /* { dg-require-effective-target arm_neon_ok } */
22593-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22594+/* { dg-options "-save-temps -O0" } */
22595+/* { dg-add-options arm_neon } */
22596
22597 #include "arm_neon.h"
22598
22599Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
22600===================================================================
22601--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
22602+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
22603@@ -3,7 +3,8 @@
22604
22605 /* { dg-do assemble } */
22606 /* { dg-require-effective-target arm_neon_ok } */
22607-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22608+/* { dg-options "-save-temps -O0" } */
22609+/* { dg-add-options arm_neon } */
22610
22611 #include "arm_neon.h"
22612
22613Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
22614===================================================================
22615--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
22616+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
22617@@ -3,7 +3,8 @@
22618
22619 /* { dg-do assemble } */
22620 /* { dg-require-effective-target arm_neon_ok } */
22621-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22622+/* { dg-options "-save-temps -O0" } */
22623+/* { dg-add-options arm_neon } */
22624
22625 #include "arm_neon.h"
22626
22627Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
22628===================================================================
22629--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
22630+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
22631@@ -3,7 +3,8 @@
22632
22633 /* { dg-do assemble } */
22634 /* { dg-require-effective-target arm_neon_ok } */
22635-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22636+/* { dg-options "-save-temps -O0" } */
22637+/* { dg-add-options arm_neon } */
22638
22639 #include "arm_neon.h"
22640
22641Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
22642===================================================================
22643--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
22644+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
22645@@ -3,7 +3,8 @@
22646
22647 /* { dg-do assemble } */
22648 /* { dg-require-effective-target arm_neon_ok } */
22649-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22650+/* { dg-options "-save-temps -O0" } */
22651+/* { dg-add-options arm_neon } */
22652
22653 #include "arm_neon.h"
22654
22655Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
22656===================================================================
22657--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
22658+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
22659@@ -3,7 +3,8 @@
22660
22661 /* { dg-do assemble } */
22662 /* { dg-require-effective-target arm_neon_ok } */
22663-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22664+/* { dg-options "-save-temps -O0" } */
22665+/* { dg-add-options arm_neon } */
22666
22667 #include "arm_neon.h"
22668
22669Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
22670===================================================================
22671--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
22672+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
22673@@ -3,7 +3,8 @@
22674
22675 /* { dg-do assemble } */
22676 /* { dg-require-effective-target arm_neon_ok } */
22677-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22678+/* { dg-options "-save-temps -O0" } */
22679+/* { dg-add-options arm_neon } */
22680
22681 #include "arm_neon.h"
22682
22683Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
22684===================================================================
22685--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
22686+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
22687@@ -3,7 +3,8 @@
22688
22689 /* { dg-do assemble } */
22690 /* { dg-require-effective-target arm_neon_ok } */
22691-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22692+/* { dg-options "-save-temps -O0" } */
22693+/* { dg-add-options arm_neon } */
22694
22695 #include "arm_neon.h"
22696
22697Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
22698===================================================================
22699--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
22700+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
22701@@ -3,7 +3,8 @@
22702
22703 /* { dg-do assemble } */
22704 /* { dg-require-effective-target arm_neon_ok } */
22705-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22706+/* { dg-options "-save-temps -O0" } */
22707+/* { dg-add-options arm_neon } */
22708
22709 #include "arm_neon.h"
22710
22711Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
22712===================================================================
22713--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
22714+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
22715@@ -3,7 +3,8 @@
22716
22717 /* { dg-do assemble } */
22718 /* { dg-require-effective-target arm_neon_ok } */
22719-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22720+/* { dg-options "-save-temps -O0" } */
22721+/* { dg-add-options arm_neon } */
22722
22723 #include "arm_neon.h"
22724
22725Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
22726===================================================================
22727--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
22728+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
22729@@ -3,7 +3,8 @@
22730
22731 /* { dg-do assemble } */
22732 /* { dg-require-effective-target arm_neon_ok } */
22733-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22734+/* { dg-options "-save-temps -O0" } */
22735+/* { dg-add-options arm_neon } */
22736
22737 #include "arm_neon.h"
22738
22739Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
22740===================================================================
22741--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
22742+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
22743@@ -3,7 +3,8 @@
22744
22745 /* { dg-do assemble } */
22746 /* { dg-require-effective-target arm_neon_ok } */
22747-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22748+/* { dg-options "-save-temps -O0" } */
22749+/* { dg-add-options arm_neon } */
22750
22751 #include "arm_neon.h"
22752
22753Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
22754===================================================================
22755--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
22756+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
22757@@ -3,7 +3,8 @@
22758
22759 /* { dg-do assemble } */
22760 /* { dg-require-effective-target arm_neon_ok } */
22761-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22762+/* { dg-options "-save-temps -O0" } */
22763+/* { dg-add-options arm_neon } */
22764
22765 #include "arm_neon.h"
22766
22767Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
22768===================================================================
22769--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
22770+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
22771@@ -3,7 +3,8 @@
22772
22773 /* { dg-do assemble } */
22774 /* { dg-require-effective-target arm_neon_ok } */
22775-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22776+/* { dg-options "-save-temps -O0" } */
22777+/* { dg-add-options arm_neon } */
22778
22779 #include "arm_neon.h"
22780
22781Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
22782===================================================================
22783--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
22784+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
22785@@ -3,7 +3,8 @@
22786
22787 /* { dg-do assemble } */
22788 /* { dg-require-effective-target arm_neon_ok } */
22789-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22790+/* { dg-options "-save-temps -O0" } */
22791+/* { dg-add-options arm_neon } */
22792
22793 #include "arm_neon.h"
22794
22795Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
22796===================================================================
22797--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
22798+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
22799@@ -3,7 +3,8 @@
22800
22801 /* { dg-do assemble } */
22802 /* { dg-require-effective-target arm_neon_ok } */
22803-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22804+/* { dg-options "-save-temps -O0" } */
22805+/* { dg-add-options arm_neon } */
22806
22807 #include "arm_neon.h"
22808
22809Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
22810===================================================================
22811--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
22812+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
22813@@ -3,7 +3,8 @@
22814
22815 /* { dg-do assemble } */
22816 /* { dg-require-effective-target arm_neon_ok } */
22817-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22818+/* { dg-options "-save-temps -O0" } */
22819+/* { dg-add-options arm_neon } */
22820
22821 #include "arm_neon.h"
22822
22823Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
22824===================================================================
22825--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
22826+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
22827@@ -3,7 +3,8 @@
22828
22829 /* { dg-do assemble } */
22830 /* { dg-require-effective-target arm_neon_ok } */
22831-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22832+/* { dg-options "-save-temps -O0" } */
22833+/* { dg-add-options arm_neon } */
22834
22835 #include "arm_neon.h"
22836
22837Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
22838===================================================================
22839--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
22840+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
22841@@ -3,7 +3,8 @@
22842
22843 /* { dg-do assemble } */
22844 /* { dg-require-effective-target arm_neon_ok } */
22845-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22846+/* { dg-options "-save-temps -O0" } */
22847+/* { dg-add-options arm_neon } */
22848
22849 #include "arm_neon.h"
22850
22851Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
22852===================================================================
22853--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
22854+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
22855@@ -3,7 +3,8 @@
22856
22857 /* { dg-do assemble } */
22858 /* { dg-require-effective-target arm_neon_ok } */
22859-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22860+/* { dg-options "-save-temps -O0" } */
22861+/* { dg-add-options arm_neon } */
22862
22863 #include "arm_neon.h"
22864
22865Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
22866===================================================================
22867--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
22868+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
22869@@ -3,7 +3,8 @@
22870
22871 /* { dg-do assemble } */
22872 /* { dg-require-effective-target arm_neon_ok } */
22873-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22874+/* { dg-options "-save-temps -O0" } */
22875+/* { dg-add-options arm_neon } */
22876
22877 #include "arm_neon.h"
22878
22879Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
22880===================================================================
22881--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
22882+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
22883@@ -3,7 +3,8 @@
22884
22885 /* { dg-do assemble } */
22886 /* { dg-require-effective-target arm_neon_ok } */
22887-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22888+/* { dg-options "-save-temps -O0" } */
22889+/* { dg-add-options arm_neon } */
22890
22891 #include "arm_neon.h"
22892
22893Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
22894===================================================================
22895--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
22896+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
22897@@ -3,7 +3,8 @@
22898
22899 /* { dg-do assemble } */
22900 /* { dg-require-effective-target arm_neon_ok } */
22901-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22902+/* { dg-options "-save-temps -O0" } */
22903+/* { dg-add-options arm_neon } */
22904
22905 #include "arm_neon.h"
22906
22907Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
22908===================================================================
22909--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
22910+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
22911@@ -3,7 +3,8 @@
22912
22913 /* { dg-do assemble } */
22914 /* { dg-require-effective-target arm_neon_ok } */
22915-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22916+/* { dg-options "-save-temps -O0" } */
22917+/* { dg-add-options arm_neon } */
22918
22919 #include "arm_neon.h"
22920
22921Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
22922===================================================================
22923--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
22924+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
22925@@ -3,7 +3,8 @@
22926
22927 /* { dg-do assemble } */
22928 /* { dg-require-effective-target arm_neon_ok } */
22929-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22930+/* { dg-options "-save-temps -O0" } */
22931+/* { dg-add-options arm_neon } */
22932
22933 #include "arm_neon.h"
22934
22935Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
22936===================================================================
22937--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
22938+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
22939@@ -3,7 +3,8 @@
22940
22941 /* { dg-do assemble } */
22942 /* { dg-require-effective-target arm_neon_ok } */
22943-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22944+/* { dg-options "-save-temps -O0" } */
22945+/* { dg-add-options arm_neon } */
22946
22947 #include "arm_neon.h"
22948
22949Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
22950===================================================================
22951--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
22952+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
22953@@ -3,7 +3,8 @@
22954
22955 /* { dg-do assemble } */
22956 /* { dg-require-effective-target arm_neon_ok } */
22957-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22958+/* { dg-options "-save-temps -O0" } */
22959+/* { dg-add-options arm_neon } */
22960
22961 #include "arm_neon.h"
22962
22963Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
22964===================================================================
22965--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
22966+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
22967@@ -3,7 +3,8 @@
22968
22969 /* { dg-do assemble } */
22970 /* { dg-require-effective-target arm_neon_ok } */
22971-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22972+/* { dg-options "-save-temps -O0" } */
22973+/* { dg-add-options arm_neon } */
22974
22975 #include "arm_neon.h"
22976
22977Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
22978===================================================================
22979--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
22980+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
22981@@ -3,7 +3,8 @@
22982
22983 /* { dg-do assemble } */
22984 /* { dg-require-effective-target arm_neon_ok } */
22985-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
22986+/* { dg-options "-save-temps -O0" } */
22987+/* { dg-add-options arm_neon } */
22988
22989 #include "arm_neon.h"
22990
22991Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
22992===================================================================
22993--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
22994+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
22995@@ -3,7 +3,8 @@
22996
22997 /* { dg-do assemble } */
22998 /* { dg-require-effective-target arm_neon_ok } */
22999-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23000+/* { dg-options "-save-temps -O0" } */
23001+/* { dg-add-options arm_neon } */
23002
23003 #include "arm_neon.h"
23004
23005Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
23006===================================================================
23007--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
23008+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
23009@@ -3,7 +3,8 @@
23010
23011 /* { dg-do assemble } */
23012 /* { dg-require-effective-target arm_neon_ok } */
23013-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23014+/* { dg-options "-save-temps -O0" } */
23015+/* { dg-add-options arm_neon } */
23016
23017 #include "arm_neon.h"
23018
23019Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
23020===================================================================
23021--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
23022+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
23023@@ -3,7 +3,8 @@
23024
23025 /* { dg-do assemble } */
23026 /* { dg-require-effective-target arm_neon_ok } */
23027-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23028+/* { dg-options "-save-temps -O0" } */
23029+/* { dg-add-options arm_neon } */
23030
23031 #include "arm_neon.h"
23032
23033Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
23034===================================================================
23035--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
23036+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
23037@@ -3,7 +3,8 @@
23038
23039 /* { dg-do assemble } */
23040 /* { dg-require-effective-target arm_neon_ok } */
23041-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23042+/* { dg-options "-save-temps -O0" } */
23043+/* { dg-add-options arm_neon } */
23044
23045 #include "arm_neon.h"
23046
23047Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
23048===================================================================
23049--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
23050+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
23051@@ -3,7 +3,8 @@
23052
23053 /* { dg-do assemble } */
23054 /* { dg-require-effective-target arm_neon_ok } */
23055-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23056+/* { dg-options "-save-temps -O0" } */
23057+/* { dg-add-options arm_neon } */
23058
23059 #include "arm_neon.h"
23060
23061Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
23062===================================================================
23063--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
23064+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
23065@@ -3,7 +3,8 @@
23066
23067 /* { dg-do assemble } */
23068 /* { dg-require-effective-target arm_neon_ok } */
23069-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23070+/* { dg-options "-save-temps -O0" } */
23071+/* { dg-add-options arm_neon } */
23072
23073 #include "arm_neon.h"
23074
23075Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
23076===================================================================
23077--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
23078+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
23079@@ -3,7 +3,8 @@
23080
23081 /* { dg-do assemble } */
23082 /* { dg-require-effective-target arm_neon_ok } */
23083-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23084+/* { dg-options "-save-temps -O0" } */
23085+/* { dg-add-options arm_neon } */
23086
23087 #include "arm_neon.h"
23088
23089Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
23090===================================================================
23091--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
23092+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
23093@@ -3,7 +3,8 @@
23094
23095 /* { dg-do assemble } */
23096 /* { dg-require-effective-target arm_neon_ok } */
23097-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23098+/* { dg-options "-save-temps -O0" } */
23099+/* { dg-add-options arm_neon } */
23100
23101 #include "arm_neon.h"
23102
23103Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
23104===================================================================
23105--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
23106+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
23107@@ -3,7 +3,8 @@
23108
23109 /* { dg-do assemble } */
23110 /* { dg-require-effective-target arm_neon_ok } */
23111-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23112+/* { dg-options "-save-temps -O0" } */
23113+/* { dg-add-options arm_neon } */
23114
23115 #include "arm_neon.h"
23116
23117Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
23118===================================================================
23119--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
23120+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
23121@@ -3,7 +3,8 @@
23122
23123 /* { dg-do assemble } */
23124 /* { dg-require-effective-target arm_neon_ok } */
23125-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23126+/* { dg-options "-save-temps -O0" } */
23127+/* { dg-add-options arm_neon } */
23128
23129 #include "arm_neon.h"
23130
23131Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
23132===================================================================
23133--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
23134+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
23135@@ -3,7 +3,8 @@
23136
23137 /* { dg-do assemble } */
23138 /* { dg-require-effective-target arm_neon_ok } */
23139-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23140+/* { dg-options "-save-temps -O0" } */
23141+/* { dg-add-options arm_neon } */
23142
23143 #include "arm_neon.h"
23144
23145Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
23146===================================================================
23147--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
23148+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
23149@@ -3,7 +3,8 @@
23150
23151 /* { dg-do assemble } */
23152 /* { dg-require-effective-target arm_neon_ok } */
23153-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23154+/* { dg-options "-save-temps -O0" } */
23155+/* { dg-add-options arm_neon } */
23156
23157 #include "arm_neon.h"
23158
23159Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
23160===================================================================
23161--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
23162+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
23163@@ -3,7 +3,8 @@
23164
23165 /* { dg-do assemble } */
23166 /* { dg-require-effective-target arm_neon_ok } */
23167-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23168+/* { dg-options "-save-temps -O0" } */
23169+/* { dg-add-options arm_neon } */
23170
23171 #include "arm_neon.h"
23172
23173Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
23174===================================================================
23175--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
23176+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
23177@@ -3,7 +3,8 @@
23178
23179 /* { dg-do assemble } */
23180 /* { dg-require-effective-target arm_neon_ok } */
23181-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23182+/* { dg-options "-save-temps -O0" } */
23183+/* { dg-add-options arm_neon } */
23184
23185 #include "arm_neon.h"
23186
23187Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
23188===================================================================
23189--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
23190+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
23191@@ -3,7 +3,8 @@
23192
23193 /* { dg-do assemble } */
23194 /* { dg-require-effective-target arm_neon_ok } */
23195-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23196+/* { dg-options "-save-temps -O0" } */
23197+/* { dg-add-options arm_neon } */
23198
23199 #include "arm_neon.h"
23200
23201Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
23202===================================================================
23203--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
23204+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
23205@@ -3,7 +3,8 @@
23206
23207 /* { dg-do assemble } */
23208 /* { dg-require-effective-target arm_neon_ok } */
23209-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23210+/* { dg-options "-save-temps -O0" } */
23211+/* { dg-add-options arm_neon } */
23212
23213 #include "arm_neon.h"
23214
23215Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
23216===================================================================
23217--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
23218+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
23219@@ -3,7 +3,8 @@
23220
23221 /* { dg-do assemble } */
23222 /* { dg-require-effective-target arm_neon_ok } */
23223-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23224+/* { dg-options "-save-temps -O0" } */
23225+/* { dg-add-options arm_neon } */
23226
23227 #include "arm_neon.h"
23228
23229Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
23230===================================================================
23231--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
23232+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
23233@@ -3,7 +3,8 @@
23234
23235 /* { dg-do assemble } */
23236 /* { dg-require-effective-target arm_neon_ok } */
23237-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23238+/* { dg-options "-save-temps -O0" } */
23239+/* { dg-add-options arm_neon } */
23240
23241 #include "arm_neon.h"
23242
23243Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
23244===================================================================
23245--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
23246+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
23247@@ -3,7 +3,8 @@
23248
23249 /* { dg-do assemble } */
23250 /* { dg-require-effective-target arm_neon_ok } */
23251-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23252+/* { dg-options "-save-temps -O0" } */
23253+/* { dg-add-options arm_neon } */
23254
23255 #include "arm_neon.h"
23256
23257Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
23258===================================================================
23259--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
23260+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
23261@@ -3,7 +3,8 @@
23262
23263 /* { dg-do assemble } */
23264 /* { dg-require-effective-target arm_neon_ok } */
23265-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23266+/* { dg-options "-save-temps -O0" } */
23267+/* { dg-add-options arm_neon } */
23268
23269 #include "arm_neon.h"
23270
23271Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
23272===================================================================
23273--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
23274+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
23275@@ -3,7 +3,8 @@
23276
23277 /* { dg-do assemble } */
23278 /* { dg-require-effective-target arm_neon_ok } */
23279-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23280+/* { dg-options "-save-temps -O0" } */
23281+/* { dg-add-options arm_neon } */
23282
23283 #include "arm_neon.h"
23284
23285Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
23286===================================================================
23287--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
23288+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
23289@@ -3,7 +3,8 @@
23290
23291 /* { dg-do assemble } */
23292 /* { dg-require-effective-target arm_neon_ok } */
23293-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23294+/* { dg-options "-save-temps -O0" } */
23295+/* { dg-add-options arm_neon } */
23296
23297 #include "arm_neon.h"
23298
23299Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
23300===================================================================
23301--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
23302+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
23303@@ -3,7 +3,8 @@
23304
23305 /* { dg-do assemble } */
23306 /* { dg-require-effective-target arm_neon_ok } */
23307-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23308+/* { dg-options "-save-temps -O0" } */
23309+/* { dg-add-options arm_neon } */
23310
23311 #include "arm_neon.h"
23312
23313Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
23314===================================================================
23315--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
23316+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
23317@@ -3,7 +3,8 @@
23318
23319 /* { dg-do assemble } */
23320 /* { dg-require-effective-target arm_neon_ok } */
23321-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23322+/* { dg-options "-save-temps -O0" } */
23323+/* { dg-add-options arm_neon } */
23324
23325 #include "arm_neon.h"
23326
23327Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
23328===================================================================
23329--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
23330+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
23331@@ -3,7 +3,8 @@
23332
23333 /* { dg-do assemble } */
23334 /* { dg-require-effective-target arm_neon_ok } */
23335-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23336+/* { dg-options "-save-temps -O0" } */
23337+/* { dg-add-options arm_neon } */
23338
23339 #include "arm_neon.h"
23340
23341Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
23342===================================================================
23343--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
23344+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
23345@@ -3,7 +3,8 @@
23346
23347 /* { dg-do assemble } */
23348 /* { dg-require-effective-target arm_neon_ok } */
23349-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23350+/* { dg-options "-save-temps -O0" } */
23351+/* { dg-add-options arm_neon } */
23352
23353 #include "arm_neon.h"
23354
23355Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
23356===================================================================
23357--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
23358+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
23359@@ -3,7 +3,8 @@
23360
23361 /* { dg-do assemble } */
23362 /* { dg-require-effective-target arm_neon_ok } */
23363-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23364+/* { dg-options "-save-temps -O0" } */
23365+/* { dg-add-options arm_neon } */
23366
23367 #include "arm_neon.h"
23368
23369Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
23370===================================================================
23371--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
23372+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
23373@@ -3,7 +3,8 @@
23374
23375 /* { dg-do assemble } */
23376 /* { dg-require-effective-target arm_neon_ok } */
23377-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23378+/* { dg-options "-save-temps -O0" } */
23379+/* { dg-add-options arm_neon } */
23380
23381 #include "arm_neon.h"
23382
23383Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
23384===================================================================
23385--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
23386+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
23387@@ -3,7 +3,8 @@
23388
23389 /* { dg-do assemble } */
23390 /* { dg-require-effective-target arm_neon_ok } */
23391-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23392+/* { dg-options "-save-temps -O0" } */
23393+/* { dg-add-options arm_neon } */
23394
23395 #include "arm_neon.h"
23396
23397Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
23398===================================================================
23399--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
23400+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
23401@@ -3,7 +3,8 @@
23402
23403 /* { dg-do assemble } */
23404 /* { dg-require-effective-target arm_neon_ok } */
23405-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23406+/* { dg-options "-save-temps -O0" } */
23407+/* { dg-add-options arm_neon } */
23408
23409 #include "arm_neon.h"
23410
23411Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
23412===================================================================
23413--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
23414+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
23415@@ -3,7 +3,8 @@
23416
23417 /* { dg-do assemble } */
23418 /* { dg-require-effective-target arm_neon_ok } */
23419-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23420+/* { dg-options "-save-temps -O0" } */
23421+/* { dg-add-options arm_neon } */
23422
23423 #include "arm_neon.h"
23424
23425Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
23426===================================================================
23427--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
23428+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
23429@@ -3,7 +3,8 @@
23430
23431 /* { dg-do assemble } */
23432 /* { dg-require-effective-target arm_neon_ok } */
23433-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23434+/* { dg-options "-save-temps -O0" } */
23435+/* { dg-add-options arm_neon } */
23436
23437 #include "arm_neon.h"
23438
23439Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
23440===================================================================
23441--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
23442+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
23443@@ -3,7 +3,8 @@
23444
23445 /* { dg-do assemble } */
23446 /* { dg-require-effective-target arm_neon_ok } */
23447-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23448+/* { dg-options "-save-temps -O0" } */
23449+/* { dg-add-options arm_neon } */
23450
23451 #include "arm_neon.h"
23452
23453Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
23454===================================================================
23455--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
23456+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
23457@@ -3,7 +3,8 @@
23458
23459 /* { dg-do assemble } */
23460 /* { dg-require-effective-target arm_neon_ok } */
23461-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23462+/* { dg-options "-save-temps -O0" } */
23463+/* { dg-add-options arm_neon } */
23464
23465 #include "arm_neon.h"
23466
23467Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
23468===================================================================
23469--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
23470+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
23471@@ -3,7 +3,8 @@
23472
23473 /* { dg-do assemble } */
23474 /* { dg-require-effective-target arm_neon_ok } */
23475-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23476+/* { dg-options "-save-temps -O0" } */
23477+/* { dg-add-options arm_neon } */
23478
23479 #include "arm_neon.h"
23480
23481Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
23482===================================================================
23483--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
23484+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
23485@@ -3,7 +3,8 @@
23486
23487 /* { dg-do assemble } */
23488 /* { dg-require-effective-target arm_neon_ok } */
23489-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23490+/* { dg-options "-save-temps -O0" } */
23491+/* { dg-add-options arm_neon } */
23492
23493 #include "arm_neon.h"
23494
23495Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
23496===================================================================
23497--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
23498+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
23499@@ -3,7 +3,8 @@
23500
23501 /* { dg-do assemble } */
23502 /* { dg-require-effective-target arm_neon_ok } */
23503-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23504+/* { dg-options "-save-temps -O0" } */
23505+/* { dg-add-options arm_neon } */
23506
23507 #include "arm_neon.h"
23508
23509Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
23510===================================================================
23511--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
23512+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
23513@@ -3,7 +3,8 @@
23514
23515 /* { dg-do assemble } */
23516 /* { dg-require-effective-target arm_neon_ok } */
23517-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23518+/* { dg-options "-save-temps -O0" } */
23519+/* { dg-add-options arm_neon } */
23520
23521 #include "arm_neon.h"
23522
23523Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
23524===================================================================
23525--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
23526+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
23527@@ -3,7 +3,8 @@
23528
23529 /* { dg-do assemble } */
23530 /* { dg-require-effective-target arm_neon_ok } */
23531-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23532+/* { dg-options "-save-temps -O0" } */
23533+/* { dg-add-options arm_neon } */
23534
23535 #include "arm_neon.h"
23536
23537Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
23538===================================================================
23539--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
23540+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
23541@@ -3,7 +3,8 @@
23542
23543 /* { dg-do assemble } */
23544 /* { dg-require-effective-target arm_neon_ok } */
23545-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23546+/* { dg-options "-save-temps -O0" } */
23547+/* { dg-add-options arm_neon } */
23548
23549 #include "arm_neon.h"
23550
23551Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
23552===================================================================
23553--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
23554+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
23555@@ -3,7 +3,8 @@
23556
23557 /* { dg-do assemble } */
23558 /* { dg-require-effective-target arm_neon_ok } */
23559-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23560+/* { dg-options "-save-temps -O0" } */
23561+/* { dg-add-options arm_neon } */
23562
23563 #include "arm_neon.h"
23564
23565Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
23566===================================================================
23567--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
23568+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
23569@@ -3,7 +3,8 @@
23570
23571 /* { dg-do assemble } */
23572 /* { dg-require-effective-target arm_neon_ok } */
23573-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23574+/* { dg-options "-save-temps -O0" } */
23575+/* { dg-add-options arm_neon } */
23576
23577 #include "arm_neon.h"
23578
23579Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
23580===================================================================
23581--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
23582+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
23583@@ -3,7 +3,8 @@
23584
23585 /* { dg-do assemble } */
23586 /* { dg-require-effective-target arm_neon_ok } */
23587-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23588+/* { dg-options "-save-temps -O0" } */
23589+/* { dg-add-options arm_neon } */
23590
23591 #include "arm_neon.h"
23592
23593Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
23594===================================================================
23595--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
23596+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
23597@@ -3,7 +3,8 @@
23598
23599 /* { dg-do assemble } */
23600 /* { dg-require-effective-target arm_neon_ok } */
23601-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23602+/* { dg-options "-save-temps -O0" } */
23603+/* { dg-add-options arm_neon } */
23604
23605 #include "arm_neon.h"
23606
23607Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
23608===================================================================
23609--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
23610+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
23611@@ -3,7 +3,8 @@
23612
23613 /* { dg-do assemble } */
23614 /* { dg-require-effective-target arm_neon_ok } */
23615-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23616+/* { dg-options "-save-temps -O0" } */
23617+/* { dg-add-options arm_neon } */
23618
23619 #include "arm_neon.h"
23620
23621Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
23622===================================================================
23623--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
23624+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
23625@@ -3,7 +3,8 @@
23626
23627 /* { dg-do assemble } */
23628 /* { dg-require-effective-target arm_neon_ok } */
23629-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23630+/* { dg-options "-save-temps -O0" } */
23631+/* { dg-add-options arm_neon } */
23632
23633 #include "arm_neon.h"
23634
23635Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
23636===================================================================
23637--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
23638+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
23639@@ -3,7 +3,8 @@
23640
23641 /* { dg-do assemble } */
23642 /* { dg-require-effective-target arm_neon_ok } */
23643-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23644+/* { dg-options "-save-temps -O0" } */
23645+/* { dg-add-options arm_neon } */
23646
23647 #include "arm_neon.h"
23648
23649Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
23650===================================================================
23651--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
23652+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
23653@@ -3,7 +3,8 @@
23654
23655 /* { dg-do assemble } */
23656 /* { dg-require-effective-target arm_neon_ok } */
23657-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23658+/* { dg-options "-save-temps -O0" } */
23659+/* { dg-add-options arm_neon } */
23660
23661 #include "arm_neon.h"
23662
23663Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
23664===================================================================
23665--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
23666+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
23667@@ -3,7 +3,8 @@
23668
23669 /* { dg-do assemble } */
23670 /* { dg-require-effective-target arm_neon_ok } */
23671-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23672+/* { dg-options "-save-temps -O0" } */
23673+/* { dg-add-options arm_neon } */
23674
23675 #include "arm_neon.h"
23676
23677Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
23678===================================================================
23679--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
23680+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
23681@@ -3,7 +3,8 @@
23682
23683 /* { dg-do assemble } */
23684 /* { dg-require-effective-target arm_neon_ok } */
23685-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23686+/* { dg-options "-save-temps -O0" } */
23687+/* { dg-add-options arm_neon } */
23688
23689 #include "arm_neon.h"
23690
23691Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
23692===================================================================
23693--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
23694+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
23695@@ -3,7 +3,8 @@
23696
23697 /* { dg-do assemble } */
23698 /* { dg-require-effective-target arm_neon_ok } */
23699-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23700+/* { dg-options "-save-temps -O0" } */
23701+/* { dg-add-options arm_neon } */
23702
23703 #include "arm_neon.h"
23704
23705Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
23706===================================================================
23707--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
23708+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
23709@@ -3,7 +3,8 @@
23710
23711 /* { dg-do assemble } */
23712 /* { dg-require-effective-target arm_neon_ok } */
23713-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23714+/* { dg-options "-save-temps -O0" } */
23715+/* { dg-add-options arm_neon } */
23716
23717 #include "arm_neon.h"
23718
23719Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
23720===================================================================
23721--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
23722+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
23723@@ -3,7 +3,8 @@
23724
23725 /* { dg-do assemble } */
23726 /* { dg-require-effective-target arm_neon_ok } */
23727-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23728+/* { dg-options "-save-temps -O0" } */
23729+/* { dg-add-options arm_neon } */
23730
23731 #include "arm_neon.h"
23732
23733Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
23734===================================================================
23735--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
23736+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
23737@@ -3,7 +3,8 @@
23738
23739 /* { dg-do assemble } */
23740 /* { dg-require-effective-target arm_neon_ok } */
23741-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23742+/* { dg-options "-save-temps -O0" } */
23743+/* { dg-add-options arm_neon } */
23744
23745 #include "arm_neon.h"
23746
23747Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
23748===================================================================
23749--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
23750+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
23751@@ -3,7 +3,8 @@
23752
23753 /* { dg-do assemble } */
23754 /* { dg-require-effective-target arm_neon_ok } */
23755-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23756+/* { dg-options "-save-temps -O0" } */
23757+/* { dg-add-options arm_neon } */
23758
23759 #include "arm_neon.h"
23760
23761Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
23762===================================================================
23763--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
23764+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
23765@@ -3,7 +3,8 @@
23766
23767 /* { dg-do assemble } */
23768 /* { dg-require-effective-target arm_neon_ok } */
23769-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23770+/* { dg-options "-save-temps -O0" } */
23771+/* { dg-add-options arm_neon } */
23772
23773 #include "arm_neon.h"
23774
23775Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
23776===================================================================
23777--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
23778+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
23779@@ -3,7 +3,8 @@
23780
23781 /* { dg-do assemble } */
23782 /* { dg-require-effective-target arm_neon_ok } */
23783-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23784+/* { dg-options "-save-temps -O0" } */
23785+/* { dg-add-options arm_neon } */
23786
23787 #include "arm_neon.h"
23788
23789Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
23790===================================================================
23791--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
23792+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
23793@@ -3,7 +3,8 @@
23794
23795 /* { dg-do assemble } */
23796 /* { dg-require-effective-target arm_neon_ok } */
23797-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23798+/* { dg-options "-save-temps -O0" } */
23799+/* { dg-add-options arm_neon } */
23800
23801 #include "arm_neon.h"
23802
23803Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
23804===================================================================
23805--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
23806+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
23807@@ -3,7 +3,8 @@
23808
23809 /* { dg-do assemble } */
23810 /* { dg-require-effective-target arm_neon_ok } */
23811-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23812+/* { dg-options "-save-temps -O0" } */
23813+/* { dg-add-options arm_neon } */
23814
23815 #include "arm_neon.h"
23816
23817Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
23818===================================================================
23819--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
23820+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
23821@@ -3,7 +3,8 @@
23822
23823 /* { dg-do assemble } */
23824 /* { dg-require-effective-target arm_neon_ok } */
23825-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23826+/* { dg-options "-save-temps -O0" } */
23827+/* { dg-add-options arm_neon } */
23828
23829 #include "arm_neon.h"
23830
23831Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
23832===================================================================
23833--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
23834+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
23835@@ -3,7 +3,8 @@
23836
23837 /* { dg-do assemble } */
23838 /* { dg-require-effective-target arm_neon_ok } */
23839-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23840+/* { dg-options "-save-temps -O0" } */
23841+/* { dg-add-options arm_neon } */
23842
23843 #include "arm_neon.h"
23844
23845Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
23846===================================================================
23847--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
23848+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
23849@@ -3,7 +3,8 @@
23850
23851 /* { dg-do assemble } */
23852 /* { dg-require-effective-target arm_neon_ok } */
23853-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23854+/* { dg-options "-save-temps -O0" } */
23855+/* { dg-add-options arm_neon } */
23856
23857 #include "arm_neon.h"
23858
23859Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
23860===================================================================
23861--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
23862+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
23863@@ -3,7 +3,8 @@
23864
23865 /* { dg-do assemble } */
23866 /* { dg-require-effective-target arm_neon_ok } */
23867-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23868+/* { dg-options "-save-temps -O0" } */
23869+/* { dg-add-options arm_neon } */
23870
23871 #include "arm_neon.h"
23872
23873Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
23874===================================================================
23875--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
23876+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
23877@@ -3,7 +3,8 @@
23878
23879 /* { dg-do assemble } */
23880 /* { dg-require-effective-target arm_neon_ok } */
23881-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23882+/* { dg-options "-save-temps -O0" } */
23883+/* { dg-add-options arm_neon } */
23884
23885 #include "arm_neon.h"
23886
23887Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
23888===================================================================
23889--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
23890+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
23891@@ -3,7 +3,8 @@
23892
23893 /* { dg-do assemble } */
23894 /* { dg-require-effective-target arm_neon_ok } */
23895-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23896+/* { dg-options "-save-temps -O0" } */
23897+/* { dg-add-options arm_neon } */
23898
23899 #include "arm_neon.h"
23900
23901Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
23902===================================================================
23903--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
23904+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
23905@@ -3,7 +3,8 @@
23906
23907 /* { dg-do assemble } */
23908 /* { dg-require-effective-target arm_neon_ok } */
23909-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23910+/* { dg-options "-save-temps -O0" } */
23911+/* { dg-add-options arm_neon } */
23912
23913 #include "arm_neon.h"
23914
23915Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
23916===================================================================
23917--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
23918+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
23919@@ -3,7 +3,8 @@
23920
23921 /* { dg-do assemble } */
23922 /* { dg-require-effective-target arm_neon_ok } */
23923-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23924+/* { dg-options "-save-temps -O0" } */
23925+/* { dg-add-options arm_neon } */
23926
23927 #include "arm_neon.h"
23928
23929Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
23930===================================================================
23931--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
23932+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
23933@@ -3,7 +3,8 @@
23934
23935 /* { dg-do assemble } */
23936 /* { dg-require-effective-target arm_neon_ok } */
23937-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23938+/* { dg-options "-save-temps -O0" } */
23939+/* { dg-add-options arm_neon } */
23940
23941 #include "arm_neon.h"
23942
23943Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
23944===================================================================
23945--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
23946+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
23947@@ -3,7 +3,8 @@
23948
23949 /* { dg-do assemble } */
23950 /* { dg-require-effective-target arm_neon_ok } */
23951-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23952+/* { dg-options "-save-temps -O0" } */
23953+/* { dg-add-options arm_neon } */
23954
23955 #include "arm_neon.h"
23956
23957Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
23958===================================================================
23959--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
23960+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
23961@@ -3,7 +3,8 @@
23962
23963 /* { dg-do assemble } */
23964 /* { dg-require-effective-target arm_neon_ok } */
23965-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23966+/* { dg-options "-save-temps -O0" } */
23967+/* { dg-add-options arm_neon } */
23968
23969 #include "arm_neon.h"
23970
23971Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
23972===================================================================
23973--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
23974+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
23975@@ -3,7 +3,8 @@
23976
23977 /* { dg-do assemble } */
23978 /* { dg-require-effective-target arm_neon_ok } */
23979-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23980+/* { dg-options "-save-temps -O0" } */
23981+/* { dg-add-options arm_neon } */
23982
23983 #include "arm_neon.h"
23984
23985Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
23986===================================================================
23987--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
23988+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
23989@@ -3,7 +3,8 @@
23990
23991 /* { dg-do assemble } */
23992 /* { dg-require-effective-target arm_neon_ok } */
23993-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
23994+/* { dg-options "-save-temps -O0" } */
23995+/* { dg-add-options arm_neon } */
23996
23997 #include "arm_neon.h"
23998
23999Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
24000===================================================================
24001--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
24002+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
24003@@ -3,7 +3,8 @@
24004
24005 /* { dg-do assemble } */
24006 /* { dg-require-effective-target arm_neon_ok } */
24007-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24008+/* { dg-options "-save-temps -O0" } */
24009+/* { dg-add-options arm_neon } */
24010
24011 #include "arm_neon.h"
24012
24013Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
24014===================================================================
24015--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
24016+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
24017@@ -3,7 +3,8 @@
24018
24019 /* { dg-do assemble } */
24020 /* { dg-require-effective-target arm_neon_ok } */
24021-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24022+/* { dg-options "-save-temps -O0" } */
24023+/* { dg-add-options arm_neon } */
24024
24025 #include "arm_neon.h"
24026
24027Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
24028===================================================================
24029--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
24030+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
24031@@ -3,7 +3,8 @@
24032
24033 /* { dg-do assemble } */
24034 /* { dg-require-effective-target arm_neon_ok } */
24035-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24036+/* { dg-options "-save-temps -O0" } */
24037+/* { dg-add-options arm_neon } */
24038
24039 #include "arm_neon.h"
24040
24041Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
24042===================================================================
24043--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
24044+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
24045@@ -3,7 +3,8 @@
24046
24047 /* { dg-do assemble } */
24048 /* { dg-require-effective-target arm_neon_ok } */
24049-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24050+/* { dg-options "-save-temps -O0" } */
24051+/* { dg-add-options arm_neon } */
24052
24053 #include "arm_neon.h"
24054
24055Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
24056===================================================================
24057--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
24058+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
24059@@ -3,7 +3,8 @@
24060
24061 /* { dg-do assemble } */
24062 /* { dg-require-effective-target arm_neon_ok } */
24063-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24064+/* { dg-options "-save-temps -O0" } */
24065+/* { dg-add-options arm_neon } */
24066
24067 #include "arm_neon.h"
24068
24069Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
24070===================================================================
24071--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
24072+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
24073@@ -3,7 +3,8 @@
24074
24075 /* { dg-do assemble } */
24076 /* { dg-require-effective-target arm_neon_ok } */
24077-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24078+/* { dg-options "-save-temps -O0" } */
24079+/* { dg-add-options arm_neon } */
24080
24081 #include "arm_neon.h"
24082
24083Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
24084===================================================================
24085--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
24086+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
24087@@ -3,7 +3,8 @@
24088
24089 /* { dg-do assemble } */
24090 /* { dg-require-effective-target arm_neon_ok } */
24091-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24092+/* { dg-options "-save-temps -O0" } */
24093+/* { dg-add-options arm_neon } */
24094
24095 #include "arm_neon.h"
24096
24097Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
24098===================================================================
24099--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
24100+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
24101@@ -3,7 +3,8 @@
24102
24103 /* { dg-do assemble } */
24104 /* { dg-require-effective-target arm_neon_ok } */
24105-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24106+/* { dg-options "-save-temps -O0" } */
24107+/* { dg-add-options arm_neon } */
24108
24109 #include "arm_neon.h"
24110
24111Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
24112===================================================================
24113--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
24114+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
24115@@ -3,7 +3,8 @@
24116
24117 /* { dg-do assemble } */
24118 /* { dg-require-effective-target arm_neon_ok } */
24119-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24120+/* { dg-options "-save-temps -O0" } */
24121+/* { dg-add-options arm_neon } */
24122
24123 #include "arm_neon.h"
24124
24125Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
24126===================================================================
24127--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
24128+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
24129@@ -3,7 +3,8 @@
24130
24131 /* { dg-do assemble } */
24132 /* { dg-require-effective-target arm_neon_ok } */
24133-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24134+/* { dg-options "-save-temps -O0" } */
24135+/* { dg-add-options arm_neon } */
24136
24137 #include "arm_neon.h"
24138
24139Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
24140===================================================================
24141--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
24142+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
24143@@ -3,7 +3,8 @@
24144
24145 /* { dg-do assemble } */
24146 /* { dg-require-effective-target arm_neon_ok } */
24147-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24148+/* { dg-options "-save-temps -O0" } */
24149+/* { dg-add-options arm_neon } */
24150
24151 #include "arm_neon.h"
24152
24153Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
24154===================================================================
24155--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
24156+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
24157@@ -3,7 +3,8 @@
24158
24159 /* { dg-do assemble } */
24160 /* { dg-require-effective-target arm_neon_ok } */
24161-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24162+/* { dg-options "-save-temps -O0" } */
24163+/* { dg-add-options arm_neon } */
24164
24165 #include "arm_neon.h"
24166
24167Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
24168===================================================================
24169--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
24170+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
24171@@ -3,7 +3,8 @@
24172
24173 /* { dg-do assemble } */
24174 /* { dg-require-effective-target arm_neon_ok } */
24175-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24176+/* { dg-options "-save-temps -O0" } */
24177+/* { dg-add-options arm_neon } */
24178
24179 #include "arm_neon.h"
24180
24181Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
24182===================================================================
24183--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
24184+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
24185@@ -3,7 +3,8 @@
24186
24187 /* { dg-do assemble } */
24188 /* { dg-require-effective-target arm_neon_ok } */
24189-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24190+/* { dg-options "-save-temps -O0" } */
24191+/* { dg-add-options arm_neon } */
24192
24193 #include "arm_neon.h"
24194
24195Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
24196===================================================================
24197--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
24198+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
24199@@ -3,7 +3,8 @@
24200
24201 /* { dg-do assemble } */
24202 /* { dg-require-effective-target arm_neon_ok } */
24203-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24204+/* { dg-options "-save-temps -O0" } */
24205+/* { dg-add-options arm_neon } */
24206
24207 #include "arm_neon.h"
24208
24209Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
24210===================================================================
24211--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
24212+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
24213@@ -3,7 +3,8 @@
24214
24215 /* { dg-do assemble } */
24216 /* { dg-require-effective-target arm_neon_ok } */
24217-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24218+/* { dg-options "-save-temps -O0" } */
24219+/* { dg-add-options arm_neon } */
24220
24221 #include "arm_neon.h"
24222
24223Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
24224===================================================================
24225--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
24226+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
24227@@ -3,7 +3,8 @@
24228
24229 /* { dg-do assemble } */
24230 /* { dg-require-effective-target arm_neon_ok } */
24231-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24232+/* { dg-options "-save-temps -O0" } */
24233+/* { dg-add-options arm_neon } */
24234
24235 #include "arm_neon.h"
24236
24237Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
24238===================================================================
24239--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
24240+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
24241@@ -3,7 +3,8 @@
24242
24243 /* { dg-do assemble } */
24244 /* { dg-require-effective-target arm_neon_ok } */
24245-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24246+/* { dg-options "-save-temps -O0" } */
24247+/* { dg-add-options arm_neon } */
24248
24249 #include "arm_neon.h"
24250
24251Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
24252===================================================================
24253--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
24254+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
24255@@ -3,7 +3,8 @@
24256
24257 /* { dg-do assemble } */
24258 /* { dg-require-effective-target arm_neon_ok } */
24259-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24260+/* { dg-options "-save-temps -O0" } */
24261+/* { dg-add-options arm_neon } */
24262
24263 #include "arm_neon.h"
24264
24265Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
24266===================================================================
24267--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
24268+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
24269@@ -3,7 +3,8 @@
24270
24271 /* { dg-do assemble } */
24272 /* { dg-require-effective-target arm_neon_ok } */
24273-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24274+/* { dg-options "-save-temps -O0" } */
24275+/* { dg-add-options arm_neon } */
24276
24277 #include "arm_neon.h"
24278
24279Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
24280===================================================================
24281--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
24282+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
24283@@ -3,7 +3,8 @@
24284
24285 /* { dg-do assemble } */
24286 /* { dg-require-effective-target arm_neon_ok } */
24287-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24288+/* { dg-options "-save-temps -O0" } */
24289+/* { dg-add-options arm_neon } */
24290
24291 #include "arm_neon.h"
24292
24293Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
24294===================================================================
24295--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
24296+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
24297@@ -3,7 +3,8 @@
24298
24299 /* { dg-do assemble } */
24300 /* { dg-require-effective-target arm_neon_ok } */
24301-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24302+/* { dg-options "-save-temps -O0" } */
24303+/* { dg-add-options arm_neon } */
24304
24305 #include "arm_neon.h"
24306
24307Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
24308===================================================================
24309--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
24310+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
24311@@ -3,7 +3,8 @@
24312
24313 /* { dg-do assemble } */
24314 /* { dg-require-effective-target arm_neon_ok } */
24315-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24316+/* { dg-options "-save-temps -O0" } */
24317+/* { dg-add-options arm_neon } */
24318
24319 #include "arm_neon.h"
24320
24321Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
24322===================================================================
24323--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
24324+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
24325@@ -3,7 +3,8 @@
24326
24327 /* { dg-do assemble } */
24328 /* { dg-require-effective-target arm_neon_ok } */
24329-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24330+/* { dg-options "-save-temps -O0" } */
24331+/* { dg-add-options arm_neon } */
24332
24333 #include "arm_neon.h"
24334
24335Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
24336===================================================================
24337--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
24338+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
24339@@ -3,7 +3,8 @@
24340
24341 /* { dg-do assemble } */
24342 /* { dg-require-effective-target arm_neon_ok } */
24343-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24344+/* { dg-options "-save-temps -O0" } */
24345+/* { dg-add-options arm_neon } */
24346
24347 #include "arm_neon.h"
24348
24349Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
24350===================================================================
24351--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
24352+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
24353@@ -3,7 +3,8 @@
24354
24355 /* { dg-do assemble } */
24356 /* { dg-require-effective-target arm_neon_ok } */
24357-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24358+/* { dg-options "-save-temps -O0" } */
24359+/* { dg-add-options arm_neon } */
24360
24361 #include "arm_neon.h"
24362
24363Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
24364===================================================================
24365--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
24366+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
24367@@ -3,7 +3,8 @@
24368
24369 /* { dg-do assemble } */
24370 /* { dg-require-effective-target arm_neon_ok } */
24371-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24372+/* { dg-options "-save-temps -O0" } */
24373+/* { dg-add-options arm_neon } */
24374
24375 #include "arm_neon.h"
24376
24377Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
24378===================================================================
24379--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
24380+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
24381@@ -3,7 +3,8 @@
24382
24383 /* { dg-do assemble } */
24384 /* { dg-require-effective-target arm_neon_ok } */
24385-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24386+/* { dg-options "-save-temps -O0" } */
24387+/* { dg-add-options arm_neon } */
24388
24389 #include "arm_neon.h"
24390
24391Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
24392===================================================================
24393--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
24394+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
24395@@ -3,7 +3,8 @@
24396
24397 /* { dg-do assemble } */
24398 /* { dg-require-effective-target arm_neon_ok } */
24399-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24400+/* { dg-options "-save-temps -O0" } */
24401+/* { dg-add-options arm_neon } */
24402
24403 #include "arm_neon.h"
24404
24405Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
24406===================================================================
24407--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
24408+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
24409@@ -3,7 +3,8 @@
24410
24411 /* { dg-do assemble } */
24412 /* { dg-require-effective-target arm_neon_ok } */
24413-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24414+/* { dg-options "-save-temps -O0" } */
24415+/* { dg-add-options arm_neon } */
24416
24417 #include "arm_neon.h"
24418
24419Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
24420===================================================================
24421--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
24422+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
24423@@ -3,7 +3,8 @@
24424
24425 /* { dg-do assemble } */
24426 /* { dg-require-effective-target arm_neon_ok } */
24427-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24428+/* { dg-options "-save-temps -O0" } */
24429+/* { dg-add-options arm_neon } */
24430
24431 #include "arm_neon.h"
24432
24433Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
24434===================================================================
24435--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
24436+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
24437@@ -3,7 +3,8 @@
24438
24439 /* { dg-do assemble } */
24440 /* { dg-require-effective-target arm_neon_ok } */
24441-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24442+/* { dg-options "-save-temps -O0" } */
24443+/* { dg-add-options arm_neon } */
24444
24445 #include "arm_neon.h"
24446
24447Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
24448===================================================================
24449--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
24450+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
24451@@ -3,7 +3,8 @@
24452
24453 /* { dg-do assemble } */
24454 /* { dg-require-effective-target arm_neon_ok } */
24455-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24456+/* { dg-options "-save-temps -O0" } */
24457+/* { dg-add-options arm_neon } */
24458
24459 #include "arm_neon.h"
24460
24461Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
24462===================================================================
24463--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
24464+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
24465@@ -3,7 +3,8 @@
24466
24467 /* { dg-do assemble } */
24468 /* { dg-require-effective-target arm_neon_ok } */
24469-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24470+/* { dg-options "-save-temps -O0" } */
24471+/* { dg-add-options arm_neon } */
24472
24473 #include "arm_neon.h"
24474
24475Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
24476===================================================================
24477--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
24478+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
24479@@ -3,7 +3,8 @@
24480
24481 /* { dg-do assemble } */
24482 /* { dg-require-effective-target arm_neon_ok } */
24483-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24484+/* { dg-options "-save-temps -O0" } */
24485+/* { dg-add-options arm_neon } */
24486
24487 #include "arm_neon.h"
24488
24489Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
24490===================================================================
24491--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
24492+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
24493@@ -3,7 +3,8 @@
24494
24495 /* { dg-do assemble } */
24496 /* { dg-require-effective-target arm_neon_ok } */
24497-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24498+/* { dg-options "-save-temps -O0" } */
24499+/* { dg-add-options arm_neon } */
24500
24501 #include "arm_neon.h"
24502
24503Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
24504===================================================================
24505--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
24506+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
24507@@ -3,7 +3,8 @@
24508
24509 /* { dg-do assemble } */
24510 /* { dg-require-effective-target arm_neon_ok } */
24511-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24512+/* { dg-options "-save-temps -O0" } */
24513+/* { dg-add-options arm_neon } */
24514
24515 #include "arm_neon.h"
24516
24517Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
24518===================================================================
24519--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
24520+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
24521@@ -3,7 +3,8 @@
24522
24523 /* { dg-do assemble } */
24524 /* { dg-require-effective-target arm_neon_ok } */
24525-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24526+/* { dg-options "-save-temps -O0" } */
24527+/* { dg-add-options arm_neon } */
24528
24529 #include "arm_neon.h"
24530
24531Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
24532===================================================================
24533--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
24534+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
24535@@ -3,7 +3,8 @@
24536
24537 /* { dg-do assemble } */
24538 /* { dg-require-effective-target arm_neon_ok } */
24539-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24540+/* { dg-options "-save-temps -O0" } */
24541+/* { dg-add-options arm_neon } */
24542
24543 #include "arm_neon.h"
24544
24545Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
24546===================================================================
24547--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
24548+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
24549@@ -3,7 +3,8 @@
24550
24551 /* { dg-do assemble } */
24552 /* { dg-require-effective-target arm_neon_ok } */
24553-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24554+/* { dg-options "-save-temps -O0" } */
24555+/* { dg-add-options arm_neon } */
24556
24557 #include "arm_neon.h"
24558
24559Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
24560===================================================================
24561--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
24562+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
24563@@ -3,7 +3,8 @@
24564
24565 /* { dg-do assemble } */
24566 /* { dg-require-effective-target arm_neon_ok } */
24567-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24568+/* { dg-options "-save-temps -O0" } */
24569+/* { dg-add-options arm_neon } */
24570
24571 #include "arm_neon.h"
24572
24573Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
24574===================================================================
24575--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
24576+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
24577@@ -3,7 +3,8 @@
24578
24579 /* { dg-do assemble } */
24580 /* { dg-require-effective-target arm_neon_ok } */
24581-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24582+/* { dg-options "-save-temps -O0" } */
24583+/* { dg-add-options arm_neon } */
24584
24585 #include "arm_neon.h"
24586
24587Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
24588===================================================================
24589--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
24590+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
24591@@ -3,7 +3,8 @@
24592
24593 /* { dg-do assemble } */
24594 /* { dg-require-effective-target arm_neon_ok } */
24595-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24596+/* { dg-options "-save-temps -O0" } */
24597+/* { dg-add-options arm_neon } */
24598
24599 #include "arm_neon.h"
24600
24601Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
24602===================================================================
24603--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
24604+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
24605@@ -3,7 +3,8 @@
24606
24607 /* { dg-do assemble } */
24608 /* { dg-require-effective-target arm_neon_ok } */
24609-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24610+/* { dg-options "-save-temps -O0" } */
24611+/* { dg-add-options arm_neon } */
24612
24613 #include "arm_neon.h"
24614
24615Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
24616===================================================================
24617--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
24618+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
24619@@ -3,7 +3,8 @@
24620
24621 /* { dg-do assemble } */
24622 /* { dg-require-effective-target arm_neon_ok } */
24623-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24624+/* { dg-options "-save-temps -O0" } */
24625+/* { dg-add-options arm_neon } */
24626
24627 #include "arm_neon.h"
24628
24629Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
24630===================================================================
24631--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
24632+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
24633@@ -3,7 +3,8 @@
24634
24635 /* { dg-do assemble } */
24636 /* { dg-require-effective-target arm_neon_ok } */
24637-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24638+/* { dg-options "-save-temps -O0" } */
24639+/* { dg-add-options arm_neon } */
24640
24641 #include "arm_neon.h"
24642
24643Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
24644===================================================================
24645--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
24646+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
24647@@ -3,7 +3,8 @@
24648
24649 /* { dg-do assemble } */
24650 /* { dg-require-effective-target arm_neon_ok } */
24651-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24652+/* { dg-options "-save-temps -O0" } */
24653+/* { dg-add-options arm_neon } */
24654
24655 #include "arm_neon.h"
24656
24657Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
24658===================================================================
24659--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
24660+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
24661@@ -3,7 +3,8 @@
24662
24663 /* { dg-do assemble } */
24664 /* { dg-require-effective-target arm_neon_ok } */
24665-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24666+/* { dg-options "-save-temps -O0" } */
24667+/* { dg-add-options arm_neon } */
24668
24669 #include "arm_neon.h"
24670
24671Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
24672===================================================================
24673--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
24674+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
24675@@ -3,7 +3,8 @@
24676
24677 /* { dg-do assemble } */
24678 /* { dg-require-effective-target arm_neon_ok } */
24679-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24680+/* { dg-options "-save-temps -O0" } */
24681+/* { dg-add-options arm_neon } */
24682
24683 #include "arm_neon.h"
24684
24685Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
24686===================================================================
24687--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
24688+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
24689@@ -3,7 +3,8 @@
24690
24691 /* { dg-do assemble } */
24692 /* { dg-require-effective-target arm_neon_ok } */
24693-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24694+/* { dg-options "-save-temps -O0" } */
24695+/* { dg-add-options arm_neon } */
24696
24697 #include "arm_neon.h"
24698
24699Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
24700===================================================================
24701--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
24702+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
24703@@ -3,7 +3,8 @@
24704
24705 /* { dg-do assemble } */
24706 /* { dg-require-effective-target arm_neon_ok } */
24707-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24708+/* { dg-options "-save-temps -O0" } */
24709+/* { dg-add-options arm_neon } */
24710
24711 #include "arm_neon.h"
24712
24713Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
24714===================================================================
24715--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
24716+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
24717@@ -3,7 +3,8 @@
24718
24719 /* { dg-do assemble } */
24720 /* { dg-require-effective-target arm_neon_ok } */
24721-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24722+/* { dg-options "-save-temps -O0" } */
24723+/* { dg-add-options arm_neon } */
24724
24725 #include "arm_neon.h"
24726
24727Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
24728===================================================================
24729--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
24730+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
24731@@ -3,7 +3,8 @@
24732
24733 /* { dg-do assemble } */
24734 /* { dg-require-effective-target arm_neon_ok } */
24735-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24736+/* { dg-options "-save-temps -O0" } */
24737+/* { dg-add-options arm_neon } */
24738
24739 #include "arm_neon.h"
24740
24741Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
24742===================================================================
24743--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
24744+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
24745@@ -3,7 +3,8 @@
24746
24747 /* { dg-do assemble } */
24748 /* { dg-require-effective-target arm_neon_ok } */
24749-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24750+/* { dg-options "-save-temps -O0" } */
24751+/* { dg-add-options arm_neon } */
24752
24753 #include "arm_neon.h"
24754
24755Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
24756===================================================================
24757--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
24758+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
24759@@ -3,7 +3,8 @@
24760
24761 /* { dg-do assemble } */
24762 /* { dg-require-effective-target arm_neon_ok } */
24763-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24764+/* { dg-options "-save-temps -O0" } */
24765+/* { dg-add-options arm_neon } */
24766
24767 #include "arm_neon.h"
24768
24769Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
24770===================================================================
24771--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
24772+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
24773@@ -3,7 +3,8 @@
24774
24775 /* { dg-do assemble } */
24776 /* { dg-require-effective-target arm_neon_ok } */
24777-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24778+/* { dg-options "-save-temps -O0" } */
24779+/* { dg-add-options arm_neon } */
24780
24781 #include "arm_neon.h"
24782
24783Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
24784===================================================================
24785--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
24786+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
24787@@ -3,7 +3,8 @@
24788
24789 /* { dg-do assemble } */
24790 /* { dg-require-effective-target arm_neon_ok } */
24791-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24792+/* { dg-options "-save-temps -O0" } */
24793+/* { dg-add-options arm_neon } */
24794
24795 #include "arm_neon.h"
24796
24797Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
24798===================================================================
24799--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
24800+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
24801@@ -3,7 +3,8 @@
24802
24803 /* { dg-do assemble } */
24804 /* { dg-require-effective-target arm_neon_ok } */
24805-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24806+/* { dg-options "-save-temps -O0" } */
24807+/* { dg-add-options arm_neon } */
24808
24809 #include "arm_neon.h"
24810
24811Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
24812===================================================================
24813--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
24814+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
24815@@ -3,7 +3,8 @@
24816
24817 /* { dg-do assemble } */
24818 /* { dg-require-effective-target arm_neon_ok } */
24819-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24820+/* { dg-options "-save-temps -O0" } */
24821+/* { dg-add-options arm_neon } */
24822
24823 #include "arm_neon.h"
24824
24825Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
24826===================================================================
24827--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
24828+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
24829@@ -3,7 +3,8 @@
24830
24831 /* { dg-do assemble } */
24832 /* { dg-require-effective-target arm_neon_ok } */
24833-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24834+/* { dg-options "-save-temps -O0" } */
24835+/* { dg-add-options arm_neon } */
24836
24837 #include "arm_neon.h"
24838
24839Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
24840===================================================================
24841--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
24842+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
24843@@ -3,7 +3,8 @@
24844
24845 /* { dg-do assemble } */
24846 /* { dg-require-effective-target arm_neon_ok } */
24847-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24848+/* { dg-options "-save-temps -O0" } */
24849+/* { dg-add-options arm_neon } */
24850
24851 #include "arm_neon.h"
24852
24853Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
24854===================================================================
24855--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
24856+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
24857@@ -3,7 +3,8 @@
24858
24859 /* { dg-do assemble } */
24860 /* { dg-require-effective-target arm_neon_ok } */
24861-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24862+/* { dg-options "-save-temps -O0" } */
24863+/* { dg-add-options arm_neon } */
24864
24865 #include "arm_neon.h"
24866
24867Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
24868===================================================================
24869--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
24870+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
24871@@ -3,7 +3,8 @@
24872
24873 /* { dg-do assemble } */
24874 /* { dg-require-effective-target arm_neon_ok } */
24875-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24876+/* { dg-options "-save-temps -O0" } */
24877+/* { dg-add-options arm_neon } */
24878
24879 #include "arm_neon.h"
24880
24881Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
24882===================================================================
24883--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
24884+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
24885@@ -3,7 +3,8 @@
24886
24887 /* { dg-do assemble } */
24888 /* { dg-require-effective-target arm_neon_ok } */
24889-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24890+/* { dg-options "-save-temps -O0" } */
24891+/* { dg-add-options arm_neon } */
24892
24893 #include "arm_neon.h"
24894
24895Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
24896===================================================================
24897--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
24898+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
24899@@ -3,7 +3,8 @@
24900
24901 /* { dg-do assemble } */
24902 /* { dg-require-effective-target arm_neon_ok } */
24903-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24904+/* { dg-options "-save-temps -O0" } */
24905+/* { dg-add-options arm_neon } */
24906
24907 #include "arm_neon.h"
24908
24909Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
24910===================================================================
24911--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
24912+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
24913@@ -3,7 +3,8 @@
24914
24915 /* { dg-do assemble } */
24916 /* { dg-require-effective-target arm_neon_ok } */
24917-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24918+/* { dg-options "-save-temps -O0" } */
24919+/* { dg-add-options arm_neon } */
24920
24921 #include "arm_neon.h"
24922
24923Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
24924===================================================================
24925--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
24926+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
24927@@ -3,7 +3,8 @@
24928
24929 /* { dg-do assemble } */
24930 /* { dg-require-effective-target arm_neon_ok } */
24931-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24932+/* { dg-options "-save-temps -O0" } */
24933+/* { dg-add-options arm_neon } */
24934
24935 #include "arm_neon.h"
24936
24937Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
24938===================================================================
24939--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
24940+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
24941@@ -3,7 +3,8 @@
24942
24943 /* { dg-do assemble } */
24944 /* { dg-require-effective-target arm_neon_ok } */
24945-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24946+/* { dg-options "-save-temps -O0" } */
24947+/* { dg-add-options arm_neon } */
24948
24949 #include "arm_neon.h"
24950
24951Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
24952===================================================================
24953--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
24954+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
24955@@ -3,7 +3,8 @@
24956
24957 /* { dg-do assemble } */
24958 /* { dg-require-effective-target arm_neon_ok } */
24959-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24960+/* { dg-options "-save-temps -O0" } */
24961+/* { dg-add-options arm_neon } */
24962
24963 #include "arm_neon.h"
24964
24965Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
24966===================================================================
24967--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
24968+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
24969@@ -3,7 +3,8 @@
24970
24971 /* { dg-do assemble } */
24972 /* { dg-require-effective-target arm_neon_ok } */
24973-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24974+/* { dg-options "-save-temps -O0" } */
24975+/* { dg-add-options arm_neon } */
24976
24977 #include "arm_neon.h"
24978
24979Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
24980===================================================================
24981--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
24982+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
24983@@ -3,7 +3,8 @@
24984
24985 /* { dg-do assemble } */
24986 /* { dg-require-effective-target arm_neon_ok } */
24987-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
24988+/* { dg-options "-save-temps -O0" } */
24989+/* { dg-add-options arm_neon } */
24990
24991 #include "arm_neon.h"
24992
24993Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
24994===================================================================
24995--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
24996+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
24997@@ -3,7 +3,8 @@
24998
24999 /* { dg-do assemble } */
25000 /* { dg-require-effective-target arm_neon_ok } */
25001-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25002+/* { dg-options "-save-temps -O0" } */
25003+/* { dg-add-options arm_neon } */
25004
25005 #include "arm_neon.h"
25006
25007Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
25008===================================================================
25009--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
25010+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
25011@@ -3,7 +3,8 @@
25012
25013 /* { dg-do assemble } */
25014 /* { dg-require-effective-target arm_neon_ok } */
25015-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25016+/* { dg-options "-save-temps -O0" } */
25017+/* { dg-add-options arm_neon } */
25018
25019 #include "arm_neon.h"
25020
25021Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
25022===================================================================
25023--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
25024+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
25025@@ -3,7 +3,8 @@
25026
25027 /* { dg-do assemble } */
25028 /* { dg-require-effective-target arm_neon_ok } */
25029-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25030+/* { dg-options "-save-temps -O0" } */
25031+/* { dg-add-options arm_neon } */
25032
25033 #include "arm_neon.h"
25034
25035Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
25036===================================================================
25037--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
25038+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
25039@@ -3,7 +3,8 @@
25040
25041 /* { dg-do assemble } */
25042 /* { dg-require-effective-target arm_neon_ok } */
25043-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25044+/* { dg-options "-save-temps -O0" } */
25045+/* { dg-add-options arm_neon } */
25046
25047 #include "arm_neon.h"
25048
25049Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
25050===================================================================
25051--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
25052+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
25053@@ -3,7 +3,8 @@
25054
25055 /* { dg-do assemble } */
25056 /* { dg-require-effective-target arm_neon_ok } */
25057-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25058+/* { dg-options "-save-temps -O0" } */
25059+/* { dg-add-options arm_neon } */
25060
25061 #include "arm_neon.h"
25062
25063Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
25064===================================================================
25065--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
25066+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
25067@@ -3,7 +3,8 @@
25068
25069 /* { dg-do assemble } */
25070 /* { dg-require-effective-target arm_neon_ok } */
25071-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25072+/* { dg-options "-save-temps -O0" } */
25073+/* { dg-add-options arm_neon } */
25074
25075 #include "arm_neon.h"
25076
25077Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
25078===================================================================
25079--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
25080+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
25081@@ -3,7 +3,8 @@
25082
25083 /* { dg-do assemble } */
25084 /* { dg-require-effective-target arm_neon_ok } */
25085-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25086+/* { dg-options "-save-temps -O0" } */
25087+/* { dg-add-options arm_neon } */
25088
25089 #include "arm_neon.h"
25090
25091Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
25092===================================================================
25093--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
25094+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
25095@@ -3,7 +3,8 @@
25096
25097 /* { dg-do assemble } */
25098 /* { dg-require-effective-target arm_neon_ok } */
25099-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25100+/* { dg-options "-save-temps -O0" } */
25101+/* { dg-add-options arm_neon } */
25102
25103 #include "arm_neon.h"
25104
25105Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
25106===================================================================
25107--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
25108+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
25109@@ -3,7 +3,8 @@
25110
25111 /* { dg-do assemble } */
25112 /* { dg-require-effective-target arm_neon_ok } */
25113-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25114+/* { dg-options "-save-temps -O0" } */
25115+/* { dg-add-options arm_neon } */
25116
25117 #include "arm_neon.h"
25118
25119Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
25120===================================================================
25121--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
25122+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
25123@@ -3,7 +3,8 @@
25124
25125 /* { dg-do assemble } */
25126 /* { dg-require-effective-target arm_neon_ok } */
25127-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25128+/* { dg-options "-save-temps -O0" } */
25129+/* { dg-add-options arm_neon } */
25130
25131 #include "arm_neon.h"
25132
25133Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
25134===================================================================
25135--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
25136+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
25137@@ -3,7 +3,8 @@
25138
25139 /* { dg-do assemble } */
25140 /* { dg-require-effective-target arm_neon_ok } */
25141-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25142+/* { dg-options "-save-temps -O0" } */
25143+/* { dg-add-options arm_neon } */
25144
25145 #include "arm_neon.h"
25146
25147Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
25148===================================================================
25149--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
25150+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
25151@@ -3,7 +3,8 @@
25152
25153 /* { dg-do assemble } */
25154 /* { dg-require-effective-target arm_neon_ok } */
25155-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25156+/* { dg-options "-save-temps -O0" } */
25157+/* { dg-add-options arm_neon } */
25158
25159 #include "arm_neon.h"
25160
25161Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
25162===================================================================
25163--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
25164+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
25165@@ -3,7 +3,8 @@
25166
25167 /* { dg-do assemble } */
25168 /* { dg-require-effective-target arm_neon_ok } */
25169-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25170+/* { dg-options "-save-temps -O0" } */
25171+/* { dg-add-options arm_neon } */
25172
25173 #include "arm_neon.h"
25174
25175Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
25176===================================================================
25177--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
25178+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
25179@@ -3,7 +3,8 @@
25180
25181 /* { dg-do assemble } */
25182 /* { dg-require-effective-target arm_neon_ok } */
25183-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25184+/* { dg-options "-save-temps -O0" } */
25185+/* { dg-add-options arm_neon } */
25186
25187 #include "arm_neon.h"
25188
25189Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
25190===================================================================
25191--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
25192+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
25193@@ -3,7 +3,8 @@
25194
25195 /* { dg-do assemble } */
25196 /* { dg-require-effective-target arm_neon_ok } */
25197-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25198+/* { dg-options "-save-temps -O0" } */
25199+/* { dg-add-options arm_neon } */
25200
25201 #include "arm_neon.h"
25202
25203Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
25204===================================================================
25205--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
25206+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
25207@@ -3,7 +3,8 @@
25208
25209 /* { dg-do assemble } */
25210 /* { dg-require-effective-target arm_neon_ok } */
25211-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25212+/* { dg-options "-save-temps -O0" } */
25213+/* { dg-add-options arm_neon } */
25214
25215 #include "arm_neon.h"
25216
25217Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
25218===================================================================
25219--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
25220+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
25221@@ -3,7 +3,8 @@
25222
25223 /* { dg-do assemble } */
25224 /* { dg-require-effective-target arm_neon_ok } */
25225-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25226+/* { dg-options "-save-temps -O0" } */
25227+/* { dg-add-options arm_neon } */
25228
25229 #include "arm_neon.h"
25230
25231Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
25232===================================================================
25233--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
25234+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
25235@@ -3,7 +3,8 @@
25236
25237 /* { dg-do assemble } */
25238 /* { dg-require-effective-target arm_neon_ok } */
25239-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25240+/* { dg-options "-save-temps -O0" } */
25241+/* { dg-add-options arm_neon } */
25242
25243 #include "arm_neon.h"
25244
25245Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
25246===================================================================
25247--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
25248+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
25249@@ -3,7 +3,8 @@
25250
25251 /* { dg-do assemble } */
25252 /* { dg-require-effective-target arm_neon_ok } */
25253-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25254+/* { dg-options "-save-temps -O0" } */
25255+/* { dg-add-options arm_neon } */
25256
25257 #include "arm_neon.h"
25258
25259Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
25260===================================================================
25261--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
25262+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
25263@@ -3,7 +3,8 @@
25264
25265 /* { dg-do assemble } */
25266 /* { dg-require-effective-target arm_neon_ok } */
25267-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25268+/* { dg-options "-save-temps -O0" } */
25269+/* { dg-add-options arm_neon } */
25270
25271 #include "arm_neon.h"
25272
25273Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
25274===================================================================
25275--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
25276+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
25277@@ -3,7 +3,8 @@
25278
25279 /* { dg-do assemble } */
25280 /* { dg-require-effective-target arm_neon_ok } */
25281-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25282+/* { dg-options "-save-temps -O0" } */
25283+/* { dg-add-options arm_neon } */
25284
25285 #include "arm_neon.h"
25286
25287Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
25288===================================================================
25289--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
25290+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
25291@@ -3,7 +3,8 @@
25292
25293 /* { dg-do assemble } */
25294 /* { dg-require-effective-target arm_neon_ok } */
25295-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25296+/* { dg-options "-save-temps -O0" } */
25297+/* { dg-add-options arm_neon } */
25298
25299 #include "arm_neon.h"
25300
25301Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
25302===================================================================
25303--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
25304+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
25305@@ -3,7 +3,8 @@
25306
25307 /* { dg-do assemble } */
25308 /* { dg-require-effective-target arm_neon_ok } */
25309-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25310+/* { dg-options "-save-temps -O0" } */
25311+/* { dg-add-options arm_neon } */
25312
25313 #include "arm_neon.h"
25314
25315Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
25316===================================================================
25317--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
25318+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
25319@@ -3,7 +3,8 @@
25320
25321 /* { dg-do assemble } */
25322 /* { dg-require-effective-target arm_neon_ok } */
25323-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25324+/* { dg-options "-save-temps -O0" } */
25325+/* { dg-add-options arm_neon } */
25326
25327 #include "arm_neon.h"
25328
25329Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
25330===================================================================
25331--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
25332+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
25333@@ -3,7 +3,8 @@
25334
25335 /* { dg-do assemble } */
25336 /* { dg-require-effective-target arm_neon_ok } */
25337-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25338+/* { dg-options "-save-temps -O0" } */
25339+/* { dg-add-options arm_neon } */
25340
25341 #include "arm_neon.h"
25342
25343Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
25344===================================================================
25345--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
25346+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
25347@@ -3,7 +3,8 @@
25348
25349 /* { dg-do assemble } */
25350 /* { dg-require-effective-target arm_neon_ok } */
25351-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25352+/* { dg-options "-save-temps -O0" } */
25353+/* { dg-add-options arm_neon } */
25354
25355 #include "arm_neon.h"
25356
25357Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
25358===================================================================
25359--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
25360+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
25361@@ -3,7 +3,8 @@
25362
25363 /* { dg-do assemble } */
25364 /* { dg-require-effective-target arm_neon_ok } */
25365-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25366+/* { dg-options "-save-temps -O0" } */
25367+/* { dg-add-options arm_neon } */
25368
25369 #include "arm_neon.h"
25370
25371Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
25372===================================================================
25373--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
25374+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
25375@@ -3,7 +3,8 @@
25376
25377 /* { dg-do assemble } */
25378 /* { dg-require-effective-target arm_neon_ok } */
25379-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25380+/* { dg-options "-save-temps -O0" } */
25381+/* { dg-add-options arm_neon } */
25382
25383 #include "arm_neon.h"
25384
25385Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
25386===================================================================
25387--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
25388+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
25389@@ -3,7 +3,8 @@
25390
25391 /* { dg-do assemble } */
25392 /* { dg-require-effective-target arm_neon_ok } */
25393-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25394+/* { dg-options "-save-temps -O0" } */
25395+/* { dg-add-options arm_neon } */
25396
25397 #include "arm_neon.h"
25398
25399Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
25400===================================================================
25401--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
25402+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
25403@@ -3,7 +3,8 @@
25404
25405 /* { dg-do assemble } */
25406 /* { dg-require-effective-target arm_neon_ok } */
25407-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25408+/* { dg-options "-save-temps -O0" } */
25409+/* { dg-add-options arm_neon } */
25410
25411 #include "arm_neon.h"
25412
25413Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
25414===================================================================
25415--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
25416+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
25417@@ -3,7 +3,8 @@
25418
25419 /* { dg-do assemble } */
25420 /* { dg-require-effective-target arm_neon_ok } */
25421-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25422+/* { dg-options "-save-temps -O0" } */
25423+/* { dg-add-options arm_neon } */
25424
25425 #include "arm_neon.h"
25426
25427Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
25428===================================================================
25429--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
25430+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
25431@@ -3,7 +3,8 @@
25432
25433 /* { dg-do assemble } */
25434 /* { dg-require-effective-target arm_neon_ok } */
25435-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25436+/* { dg-options "-save-temps -O0" } */
25437+/* { dg-add-options arm_neon } */
25438
25439 #include "arm_neon.h"
25440
25441Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
25442===================================================================
25443--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
25444+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
25445@@ -3,7 +3,8 @@
25446
25447 /* { dg-do assemble } */
25448 /* { dg-require-effective-target arm_neon_ok } */
25449-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25450+/* { dg-options "-save-temps -O0" } */
25451+/* { dg-add-options arm_neon } */
25452
25453 #include "arm_neon.h"
25454
25455Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
25456===================================================================
25457--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
25458+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
25459@@ -3,7 +3,8 @@
25460
25461 /* { dg-do assemble } */
25462 /* { dg-require-effective-target arm_neon_ok } */
25463-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25464+/* { dg-options "-save-temps -O0" } */
25465+/* { dg-add-options arm_neon } */
25466
25467 #include "arm_neon.h"
25468
25469Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
25470===================================================================
25471--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
25472+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
25473@@ -3,7 +3,8 @@
25474
25475 /* { dg-do assemble } */
25476 /* { dg-require-effective-target arm_neon_ok } */
25477-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25478+/* { dg-options "-save-temps -O0" } */
25479+/* { dg-add-options arm_neon } */
25480
25481 #include "arm_neon.h"
25482
25483Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
25484===================================================================
25485--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
25486+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
25487@@ -3,7 +3,8 @@
25488
25489 /* { dg-do assemble } */
25490 /* { dg-require-effective-target arm_neon_ok } */
25491-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25492+/* { dg-options "-save-temps -O0" } */
25493+/* { dg-add-options arm_neon } */
25494
25495 #include "arm_neon.h"
25496
25497Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
25498===================================================================
25499--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
25500+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
25501@@ -3,7 +3,8 @@
25502
25503 /* { dg-do assemble } */
25504 /* { dg-require-effective-target arm_neon_ok } */
25505-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25506+/* { dg-options "-save-temps -O0" } */
25507+/* { dg-add-options arm_neon } */
25508
25509 #include "arm_neon.h"
25510
25511Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
25512===================================================================
25513--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
25514+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
25515@@ -3,7 +3,8 @@
25516
25517 /* { dg-do assemble } */
25518 /* { dg-require-effective-target arm_neon_ok } */
25519-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25520+/* { dg-options "-save-temps -O0" } */
25521+/* { dg-add-options arm_neon } */
25522
25523 #include "arm_neon.h"
25524
25525Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
25526===================================================================
25527--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
25528+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
25529@@ -3,7 +3,8 @@
25530
25531 /* { dg-do assemble } */
25532 /* { dg-require-effective-target arm_neon_ok } */
25533-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25534+/* { dg-options "-save-temps -O0" } */
25535+/* { dg-add-options arm_neon } */
25536
25537 #include "arm_neon.h"
25538
25539Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
25540===================================================================
25541--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
25542+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
25543@@ -3,7 +3,8 @@
25544
25545 /* { dg-do assemble } */
25546 /* { dg-require-effective-target arm_neon_ok } */
25547-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25548+/* { dg-options "-save-temps -O0" } */
25549+/* { dg-add-options arm_neon } */
25550
25551 #include "arm_neon.h"
25552
25553Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
25554===================================================================
25555--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
25556+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
25557@@ -3,7 +3,8 @@
25558
25559 /* { dg-do assemble } */
25560 /* { dg-require-effective-target arm_neon_ok } */
25561-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25562+/* { dg-options "-save-temps -O0" } */
25563+/* { dg-add-options arm_neon } */
25564
25565 #include "arm_neon.h"
25566
25567Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
25568===================================================================
25569--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
25570+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
25571@@ -3,7 +3,8 @@
25572
25573 /* { dg-do assemble } */
25574 /* { dg-require-effective-target arm_neon_ok } */
25575-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25576+/* { dg-options "-save-temps -O0" } */
25577+/* { dg-add-options arm_neon } */
25578
25579 #include "arm_neon.h"
25580
25581Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
25582===================================================================
25583--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
25584+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
25585@@ -3,7 +3,8 @@
25586
25587 /* { dg-do assemble } */
25588 /* { dg-require-effective-target arm_neon_ok } */
25589-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25590+/* { dg-options "-save-temps -O0" } */
25591+/* { dg-add-options arm_neon } */
25592
25593 #include "arm_neon.h"
25594
25595Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
25596===================================================================
25597--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
25598+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
25599@@ -3,7 +3,8 @@
25600
25601 /* { dg-do assemble } */
25602 /* { dg-require-effective-target arm_neon_ok } */
25603-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25604+/* { dg-options "-save-temps -O0" } */
25605+/* { dg-add-options arm_neon } */
25606
25607 #include "arm_neon.h"
25608
25609Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
25610===================================================================
25611--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
25612+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
25613@@ -3,7 +3,8 @@
25614
25615 /* { dg-do assemble } */
25616 /* { dg-require-effective-target arm_neon_ok } */
25617-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25618+/* { dg-options "-save-temps -O0" } */
25619+/* { dg-add-options arm_neon } */
25620
25621 #include "arm_neon.h"
25622
25623Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
25624===================================================================
25625--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
25626+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
25627@@ -3,7 +3,8 @@
25628
25629 /* { dg-do assemble } */
25630 /* { dg-require-effective-target arm_neon_ok } */
25631-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25632+/* { dg-options "-save-temps -O0" } */
25633+/* { dg-add-options arm_neon } */
25634
25635 #include "arm_neon.h"
25636
25637Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
25638===================================================================
25639--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
25640+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
25641@@ -3,7 +3,8 @@
25642
25643 /* { dg-do assemble } */
25644 /* { dg-require-effective-target arm_neon_ok } */
25645-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25646+/* { dg-options "-save-temps -O0" } */
25647+/* { dg-add-options arm_neon } */
25648
25649 #include "arm_neon.h"
25650
25651Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
25652===================================================================
25653--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
25654+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
25655@@ -3,7 +3,8 @@
25656
25657 /* { dg-do assemble } */
25658 /* { dg-require-effective-target arm_neon_ok } */
25659-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25660+/* { dg-options "-save-temps -O0" } */
25661+/* { dg-add-options arm_neon } */
25662
25663 #include "arm_neon.h"
25664
25665Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
25666===================================================================
25667--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
25668+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
25669@@ -3,7 +3,8 @@
25670
25671 /* { dg-do assemble } */
25672 /* { dg-require-effective-target arm_neon_ok } */
25673-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25674+/* { dg-options "-save-temps -O0" } */
25675+/* { dg-add-options arm_neon } */
25676
25677 #include "arm_neon.h"
25678
25679Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
25680===================================================================
25681--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
25682+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
25683@@ -3,7 +3,8 @@
25684
25685 /* { dg-do assemble } */
25686 /* { dg-require-effective-target arm_neon_ok } */
25687-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25688+/* { dg-options "-save-temps -O0" } */
25689+/* { dg-add-options arm_neon } */
25690
25691 #include "arm_neon.h"
25692
25693Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
25694===================================================================
25695--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
25696+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
25697@@ -3,7 +3,8 @@
25698
25699 /* { dg-do assemble } */
25700 /* { dg-require-effective-target arm_neon_ok } */
25701-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25702+/* { dg-options "-save-temps -O0" } */
25703+/* { dg-add-options arm_neon } */
25704
25705 #include "arm_neon.h"
25706
25707Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
25708===================================================================
25709--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
25710+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
25711@@ -3,7 +3,8 @@
25712
25713 /* { dg-do assemble } */
25714 /* { dg-require-effective-target arm_neon_ok } */
25715-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25716+/* { dg-options "-save-temps -O0" } */
25717+/* { dg-add-options arm_neon } */
25718
25719 #include "arm_neon.h"
25720
25721Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
25722===================================================================
25723--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
25724+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
25725@@ -3,7 +3,8 @@
25726
25727 /* { dg-do assemble } */
25728 /* { dg-require-effective-target arm_neon_ok } */
25729-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25730+/* { dg-options "-save-temps -O0" } */
25731+/* { dg-add-options arm_neon } */
25732
25733 #include "arm_neon.h"
25734
25735Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
25736===================================================================
25737--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
25738+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
25739@@ -3,7 +3,8 @@
25740
25741 /* { dg-do assemble } */
25742 /* { dg-require-effective-target arm_neon_ok } */
25743-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25744+/* { dg-options "-save-temps -O0" } */
25745+/* { dg-add-options arm_neon } */
25746
25747 #include "arm_neon.h"
25748
25749Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
25750===================================================================
25751--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
25752+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
25753@@ -3,7 +3,8 @@
25754
25755 /* { dg-do assemble } */
25756 /* { dg-require-effective-target arm_neon_ok } */
25757-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25758+/* { dg-options "-save-temps -O0" } */
25759+/* { dg-add-options arm_neon } */
25760
25761 #include "arm_neon.h"
25762
25763Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
25764===================================================================
25765--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
25766+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
25767@@ -3,7 +3,8 @@
25768
25769 /* { dg-do assemble } */
25770 /* { dg-require-effective-target arm_neon_ok } */
25771-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25772+/* { dg-options "-save-temps -O0" } */
25773+/* { dg-add-options arm_neon } */
25774
25775 #include "arm_neon.h"
25776
25777Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
25778===================================================================
25779--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
25780+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
25781@@ -3,7 +3,8 @@
25782
25783 /* { dg-do assemble } */
25784 /* { dg-require-effective-target arm_neon_ok } */
25785-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25786+/* { dg-options "-save-temps -O0" } */
25787+/* { dg-add-options arm_neon } */
25788
25789 #include "arm_neon.h"
25790
25791Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
25792===================================================================
25793--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
25794+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
25795@@ -3,7 +3,8 @@
25796
25797 /* { dg-do assemble } */
25798 /* { dg-require-effective-target arm_neon_ok } */
25799-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25800+/* { dg-options "-save-temps -O0" } */
25801+/* { dg-add-options arm_neon } */
25802
25803 #include "arm_neon.h"
25804
25805Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
25806===================================================================
25807--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
25808+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
25809@@ -3,7 +3,8 @@
25810
25811 /* { dg-do assemble } */
25812 /* { dg-require-effective-target arm_neon_ok } */
25813-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25814+/* { dg-options "-save-temps -O0" } */
25815+/* { dg-add-options arm_neon } */
25816
25817 #include "arm_neon.h"
25818
25819Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
25820===================================================================
25821--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
25822+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
25823@@ -3,7 +3,8 @@
25824
25825 /* { dg-do assemble } */
25826 /* { dg-require-effective-target arm_neon_ok } */
25827-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25828+/* { dg-options "-save-temps -O0" } */
25829+/* { dg-add-options arm_neon } */
25830
25831 #include "arm_neon.h"
25832
25833Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
25834===================================================================
25835--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
25836+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
25837@@ -3,7 +3,8 @@
25838
25839 /* { dg-do assemble } */
25840 /* { dg-require-effective-target arm_neon_ok } */
25841-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25842+/* { dg-options "-save-temps -O0" } */
25843+/* { dg-add-options arm_neon } */
25844
25845 #include "arm_neon.h"
25846
25847Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
25848===================================================================
25849--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
25850+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
25851@@ -3,7 +3,8 @@
25852
25853 /* { dg-do assemble } */
25854 /* { dg-require-effective-target arm_neon_ok } */
25855-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25856+/* { dg-options "-save-temps -O0" } */
25857+/* { dg-add-options arm_neon } */
25858
25859 #include "arm_neon.h"
25860
25861Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
25862===================================================================
25863--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
25864+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
25865@@ -3,7 +3,8 @@
25866
25867 /* { dg-do assemble } */
25868 /* { dg-require-effective-target arm_neon_ok } */
25869-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25870+/* { dg-options "-save-temps -O0" } */
25871+/* { dg-add-options arm_neon } */
25872
25873 #include "arm_neon.h"
25874
25875Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
25876===================================================================
25877--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
25878+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
25879@@ -3,7 +3,8 @@
25880
25881 /* { dg-do assemble } */
25882 /* { dg-require-effective-target arm_neon_ok } */
25883-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25884+/* { dg-options "-save-temps -O0" } */
25885+/* { dg-add-options arm_neon } */
25886
25887 #include "arm_neon.h"
25888
25889Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
25890===================================================================
25891--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
25892+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
25893@@ -3,7 +3,8 @@
25894
25895 /* { dg-do assemble } */
25896 /* { dg-require-effective-target arm_neon_ok } */
25897-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25898+/* { dg-options "-save-temps -O0" } */
25899+/* { dg-add-options arm_neon } */
25900
25901 #include "arm_neon.h"
25902
25903Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
25904===================================================================
25905--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
25906+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
25907@@ -3,7 +3,8 @@
25908
25909 /* { dg-do assemble } */
25910 /* { dg-require-effective-target arm_neon_ok } */
25911-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25912+/* { dg-options "-save-temps -O0" } */
25913+/* { dg-add-options arm_neon } */
25914
25915 #include "arm_neon.h"
25916
25917Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
25918===================================================================
25919--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
25920+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
25921@@ -3,7 +3,8 @@
25922
25923 /* { dg-do assemble } */
25924 /* { dg-require-effective-target arm_neon_ok } */
25925-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25926+/* { dg-options "-save-temps -O0" } */
25927+/* { dg-add-options arm_neon } */
25928
25929 #include "arm_neon.h"
25930
25931Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
25932===================================================================
25933--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
25934+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
25935@@ -3,7 +3,8 @@
25936
25937 /* { dg-do assemble } */
25938 /* { dg-require-effective-target arm_neon_ok } */
25939-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25940+/* { dg-options "-save-temps -O0" } */
25941+/* { dg-add-options arm_neon } */
25942
25943 #include "arm_neon.h"
25944
25945Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
25946===================================================================
25947--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
25948+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
25949@@ -3,7 +3,8 @@
25950
25951 /* { dg-do assemble } */
25952 /* { dg-require-effective-target arm_neon_ok } */
25953-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25954+/* { dg-options "-save-temps -O0" } */
25955+/* { dg-add-options arm_neon } */
25956
25957 #include "arm_neon.h"
25958
25959Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
25960===================================================================
25961--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
25962+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
25963@@ -3,7 +3,8 @@
25964
25965 /* { dg-do assemble } */
25966 /* { dg-require-effective-target arm_neon_ok } */
25967-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25968+/* { dg-options "-save-temps -O0" } */
25969+/* { dg-add-options arm_neon } */
25970
25971 #include "arm_neon.h"
25972
25973Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
25974===================================================================
25975--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
25976+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
25977@@ -3,7 +3,8 @@
25978
25979 /* { dg-do assemble } */
25980 /* { dg-require-effective-target arm_neon_ok } */
25981-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25982+/* { dg-options "-save-temps -O0" } */
25983+/* { dg-add-options arm_neon } */
25984
25985 #include "arm_neon.h"
25986
25987Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
25988===================================================================
25989--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
25990+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
25991@@ -3,7 +3,8 @@
25992
25993 /* { dg-do assemble } */
25994 /* { dg-require-effective-target arm_neon_ok } */
25995-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
25996+/* { dg-options "-save-temps -O0" } */
25997+/* { dg-add-options arm_neon } */
25998
25999 #include "arm_neon.h"
26000
26001Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
26002===================================================================
26003--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
26004+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
26005@@ -3,7 +3,8 @@
26006
26007 /* { dg-do assemble } */
26008 /* { dg-require-effective-target arm_neon_ok } */
26009-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26010+/* { dg-options "-save-temps -O0" } */
26011+/* { dg-add-options arm_neon } */
26012
26013 #include "arm_neon.h"
26014
26015Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
26016===================================================================
26017--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
26018+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
26019@@ -3,7 +3,8 @@
26020
26021 /* { dg-do assemble } */
26022 /* { dg-require-effective-target arm_neon_ok } */
26023-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26024+/* { dg-options "-save-temps -O0" } */
26025+/* { dg-add-options arm_neon } */
26026
26027 #include "arm_neon.h"
26028
26029Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
26030===================================================================
26031--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
26032+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
26033@@ -3,7 +3,8 @@
26034
26035 /* { dg-do assemble } */
26036 /* { dg-require-effective-target arm_neon_ok } */
26037-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26038+/* { dg-options "-save-temps -O0" } */
26039+/* { dg-add-options arm_neon } */
26040
26041 #include "arm_neon.h"
26042
26043Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
26044===================================================================
26045--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
26046+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
26047@@ -3,7 +3,8 @@
26048
26049 /* { dg-do assemble } */
26050 /* { dg-require-effective-target arm_neon_ok } */
26051-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26052+/* { dg-options "-save-temps -O0" } */
26053+/* { dg-add-options arm_neon } */
26054
26055 #include "arm_neon.h"
26056
26057Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
26058===================================================================
26059--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
26060+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
26061@@ -3,7 +3,8 @@
26062
26063 /* { dg-do assemble } */
26064 /* { dg-require-effective-target arm_neon_ok } */
26065-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26066+/* { dg-options "-save-temps -O0" } */
26067+/* { dg-add-options arm_neon } */
26068
26069 #include "arm_neon.h"
26070
26071Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
26072===================================================================
26073--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
26074+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
26075@@ -3,7 +3,8 @@
26076
26077 /* { dg-do assemble } */
26078 /* { dg-require-effective-target arm_neon_ok } */
26079-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26080+/* { dg-options "-save-temps -O0" } */
26081+/* { dg-add-options arm_neon } */
26082
26083 #include "arm_neon.h"
26084
26085Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
26086===================================================================
26087--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
26088+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
26089@@ -3,7 +3,8 @@
26090
26091 /* { dg-do assemble } */
26092 /* { dg-require-effective-target arm_neon_ok } */
26093-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26094+/* { dg-options "-save-temps -O0" } */
26095+/* { dg-add-options arm_neon } */
26096
26097 #include "arm_neon.h"
26098
26099Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
26100===================================================================
26101--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
26102+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
26103@@ -3,7 +3,8 @@
26104
26105 /* { dg-do assemble } */
26106 /* { dg-require-effective-target arm_neon_ok } */
26107-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26108+/* { dg-options "-save-temps -O0" } */
26109+/* { dg-add-options arm_neon } */
26110
26111 #include "arm_neon.h"
26112
26113Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
26114===================================================================
26115--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
26116+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
26117@@ -3,7 +3,8 @@
26118
26119 /* { dg-do assemble } */
26120 /* { dg-require-effective-target arm_neon_ok } */
26121-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26122+/* { dg-options "-save-temps -O0" } */
26123+/* { dg-add-options arm_neon } */
26124
26125 #include "arm_neon.h"
26126
26127Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
26128===================================================================
26129--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
26130+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
26131@@ -3,7 +3,8 @@
26132
26133 /* { dg-do assemble } */
26134 /* { dg-require-effective-target arm_neon_ok } */
26135-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26136+/* { dg-options "-save-temps -O0" } */
26137+/* { dg-add-options arm_neon } */
26138
26139 #include "arm_neon.h"
26140
26141Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
26142===================================================================
26143--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
26144+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
26145@@ -3,7 +3,8 @@
26146
26147 /* { dg-do assemble } */
26148 /* { dg-require-effective-target arm_neon_ok } */
26149-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26150+/* { dg-options "-save-temps -O0" } */
26151+/* { dg-add-options arm_neon } */
26152
26153 #include "arm_neon.h"
26154
26155Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
26156===================================================================
26157--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
26158+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
26159@@ -3,7 +3,8 @@
26160
26161 /* { dg-do assemble } */
26162 /* { dg-require-effective-target arm_neon_ok } */
26163-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26164+/* { dg-options "-save-temps -O0" } */
26165+/* { dg-add-options arm_neon } */
26166
26167 #include "arm_neon.h"
26168
26169Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
26170===================================================================
26171--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
26172+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
26173@@ -3,7 +3,8 @@
26174
26175 /* { dg-do assemble } */
26176 /* { dg-require-effective-target arm_neon_ok } */
26177-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26178+/* { dg-options "-save-temps -O0" } */
26179+/* { dg-add-options arm_neon } */
26180
26181 #include "arm_neon.h"
26182
26183Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
26184===================================================================
26185--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
26186+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
26187@@ -3,7 +3,8 @@
26188
26189 /* { dg-do assemble } */
26190 /* { dg-require-effective-target arm_neon_ok } */
26191-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26192+/* { dg-options "-save-temps -O0" } */
26193+/* { dg-add-options arm_neon } */
26194
26195 #include "arm_neon.h"
26196
26197Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
26198===================================================================
26199--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
26200+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
26201@@ -3,7 +3,8 @@
26202
26203 /* { dg-do assemble } */
26204 /* { dg-require-effective-target arm_neon_ok } */
26205-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26206+/* { dg-options "-save-temps -O0" } */
26207+/* { dg-add-options arm_neon } */
26208
26209 #include "arm_neon.h"
26210
26211Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
26212===================================================================
26213--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
26214+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
26215@@ -3,7 +3,8 @@
26216
26217 /* { dg-do assemble } */
26218 /* { dg-require-effective-target arm_neon_ok } */
26219-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26220+/* { dg-options "-save-temps -O0" } */
26221+/* { dg-add-options arm_neon } */
26222
26223 #include "arm_neon.h"
26224
26225Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
26226===================================================================
26227--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
26228+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
26229@@ -3,7 +3,8 @@
26230
26231 /* { dg-do assemble } */
26232 /* { dg-require-effective-target arm_neon_ok } */
26233-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26234+/* { dg-options "-save-temps -O0" } */
26235+/* { dg-add-options arm_neon } */
26236
26237 #include "arm_neon.h"
26238
26239Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
26240===================================================================
26241--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
26242+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
26243@@ -3,7 +3,8 @@
26244
26245 /* { dg-do assemble } */
26246 /* { dg-require-effective-target arm_neon_ok } */
26247-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26248+/* { dg-options "-save-temps -O0" } */
26249+/* { dg-add-options arm_neon } */
26250
26251 #include "arm_neon.h"
26252
26253Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
26254===================================================================
26255--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
26256+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
26257@@ -3,7 +3,8 @@
26258
26259 /* { dg-do assemble } */
26260 /* { dg-require-effective-target arm_neon_ok } */
26261-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26262+/* { dg-options "-save-temps -O0" } */
26263+/* { dg-add-options arm_neon } */
26264
26265 #include "arm_neon.h"
26266
26267Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
26268===================================================================
26269--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
26270+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
26271@@ -3,7 +3,8 @@
26272
26273 /* { dg-do assemble } */
26274 /* { dg-require-effective-target arm_neon_ok } */
26275-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26276+/* { dg-options "-save-temps -O0" } */
26277+/* { dg-add-options arm_neon } */
26278
26279 #include "arm_neon.h"
26280
26281Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
26282===================================================================
26283--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
26284+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
26285@@ -3,7 +3,8 @@
26286
26287 /* { dg-do assemble } */
26288 /* { dg-require-effective-target arm_neon_ok } */
26289-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26290+/* { dg-options "-save-temps -O0" } */
26291+/* { dg-add-options arm_neon } */
26292
26293 #include "arm_neon.h"
26294
26295Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
26296===================================================================
26297--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
26298+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
26299@@ -3,7 +3,8 @@
26300
26301 /* { dg-do assemble } */
26302 /* { dg-require-effective-target arm_neon_ok } */
26303-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26304+/* { dg-options "-save-temps -O0" } */
26305+/* { dg-add-options arm_neon } */
26306
26307 #include "arm_neon.h"
26308
26309Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
26310===================================================================
26311--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
26312+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
26313@@ -3,7 +3,8 @@
26314
26315 /* { dg-do assemble } */
26316 /* { dg-require-effective-target arm_neon_ok } */
26317-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26318+/* { dg-options "-save-temps -O0" } */
26319+/* { dg-add-options arm_neon } */
26320
26321 #include "arm_neon.h"
26322
26323Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
26324===================================================================
26325--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
26326+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
26327@@ -3,7 +3,8 @@
26328
26329 /* { dg-do assemble } */
26330 /* { dg-require-effective-target arm_neon_ok } */
26331-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26332+/* { dg-options "-save-temps -O0" } */
26333+/* { dg-add-options arm_neon } */
26334
26335 #include "arm_neon.h"
26336
26337Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
26338===================================================================
26339--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
26340+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
26341@@ -3,7 +3,8 @@
26342
26343 /* { dg-do assemble } */
26344 /* { dg-require-effective-target arm_neon_ok } */
26345-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26346+/* { dg-options "-save-temps -O0" } */
26347+/* { dg-add-options arm_neon } */
26348
26349 #include "arm_neon.h"
26350
26351Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
26352===================================================================
26353--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
26354+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
26355@@ -3,7 +3,8 @@
26356
26357 /* { dg-do assemble } */
26358 /* { dg-require-effective-target arm_neon_ok } */
26359-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26360+/* { dg-options "-save-temps -O0" } */
26361+/* { dg-add-options arm_neon } */
26362
26363 #include "arm_neon.h"
26364
26365Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
26366===================================================================
26367--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
26368+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
26369@@ -3,7 +3,8 @@
26370
26371 /* { dg-do assemble } */
26372 /* { dg-require-effective-target arm_neon_ok } */
26373-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26374+/* { dg-options "-save-temps -O0" } */
26375+/* { dg-add-options arm_neon } */
26376
26377 #include "arm_neon.h"
26378
26379Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
26380===================================================================
26381--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
26382+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
26383@@ -3,7 +3,8 @@
26384
26385 /* { dg-do assemble } */
26386 /* { dg-require-effective-target arm_neon_ok } */
26387-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26388+/* { dg-options "-save-temps -O0" } */
26389+/* { dg-add-options arm_neon } */
26390
26391 #include "arm_neon.h"
26392
26393Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
26394===================================================================
26395--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
26396+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
26397@@ -3,7 +3,8 @@
26398
26399 /* { dg-do assemble } */
26400 /* { dg-require-effective-target arm_neon_ok } */
26401-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26402+/* { dg-options "-save-temps -O0" } */
26403+/* { dg-add-options arm_neon } */
26404
26405 #include "arm_neon.h"
26406
26407Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
26408===================================================================
26409--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
26410+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
26411@@ -3,7 +3,8 @@
26412
26413 /* { dg-do assemble } */
26414 /* { dg-require-effective-target arm_neon_ok } */
26415-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26416+/* { dg-options "-save-temps -O0" } */
26417+/* { dg-add-options arm_neon } */
26418
26419 #include "arm_neon.h"
26420
26421Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
26422===================================================================
26423--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
26424+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
26425@@ -3,7 +3,8 @@
26426
26427 /* { dg-do assemble } */
26428 /* { dg-require-effective-target arm_neon_ok } */
26429-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26430+/* { dg-options "-save-temps -O0" } */
26431+/* { dg-add-options arm_neon } */
26432
26433 #include "arm_neon.h"
26434
26435Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
26436===================================================================
26437--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
26438+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
26439@@ -3,7 +3,8 @@
26440
26441 /* { dg-do assemble } */
26442 /* { dg-require-effective-target arm_neon_ok } */
26443-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26444+/* { dg-options "-save-temps -O0" } */
26445+/* { dg-add-options arm_neon } */
26446
26447 #include "arm_neon.h"
26448
26449Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzips16.c
26450===================================================================
26451--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzips16.c
26452+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzips16.c
26453@@ -3,7 +3,8 @@
26454
26455 /* { dg-do assemble } */
26456 /* { dg-require-effective-target arm_neon_ok } */
26457-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26458+/* { dg-options "-save-temps -O0" } */
26459+/* { dg-add-options arm_neon } */
26460
26461 #include "arm_neon.h"
26462
26463Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzips32.c
26464===================================================================
26465--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzips32.c
26466+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzips32.c
26467@@ -3,7 +3,8 @@
26468
26469 /* { dg-do assemble } */
26470 /* { dg-require-effective-target arm_neon_ok } */
26471-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26472+/* { dg-options "-save-temps -O0" } */
26473+/* { dg-add-options arm_neon } */
26474
26475 #include "arm_neon.h"
26476
26477Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzips8.c
26478===================================================================
26479--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzips8.c
26480+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzips8.c
26481@@ -3,7 +3,8 @@
26482
26483 /* { dg-do assemble } */
26484 /* { dg-require-effective-target arm_neon_ok } */
26485-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26486+/* { dg-options "-save-temps -O0" } */
26487+/* { dg-add-options arm_neon } */
26488
26489 #include "arm_neon.h"
26490
26491Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
26492===================================================================
26493--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
26494+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
26495@@ -3,7 +3,8 @@
26496
26497 /* { dg-do assemble } */
26498 /* { dg-require-effective-target arm_neon_ok } */
26499-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26500+/* { dg-options "-save-temps -O0" } */
26501+/* { dg-add-options arm_neon } */
26502
26503 #include "arm_neon.h"
26504
26505Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
26506===================================================================
26507--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
26508+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
26509@@ -3,7 +3,8 @@
26510
26511 /* { dg-do assemble } */
26512 /* { dg-require-effective-target arm_neon_ok } */
26513-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26514+/* { dg-options "-save-temps -O0" } */
26515+/* { dg-add-options arm_neon } */
26516
26517 #include "arm_neon.h"
26518
26519Index: gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
26520===================================================================
26521--- gcc-4_5-branch.orig/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
26522+++ gcc-4_5-branch/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
26523@@ -3,7 +3,8 @@
26524
26525 /* { dg-do assemble } */
26526 /* { dg-require-effective-target arm_neon_ok } */
26527-/* { dg-options "-save-temps -O0 -mfpu=neon -mfloat-abi=softfp" } */
26528+/* { dg-options "-save-temps -O0" } */
26529+/* { dg-add-options arm_neon } */
26530
26531 #include "arm_neon.h"
26532
26533Index: gcc-4_5-branch/gcc/testsuite/gfortran.dg/vect/vect.exp
26534===================================================================
26535--- gcc-4_5-branch.orig/gcc/testsuite/gfortran.dg/vect/vect.exp
26536+++ gcc-4_5-branch/gcc/testsuite/gfortran.dg/vect/vect.exp
26537@@ -105,7 +105,7 @@ if [istarget "powerpc-*paired*"] {
26538 } elseif [istarget "ia64-*-*"] {
26539 set dg-do-what-default run
26540 } elseif [is-effective-target arm_neon_ok] {
26541- lappend DEFAULT_VECTCFLAGS "-mfpu=neon" "-mfloat-abi=softfp"
26542+ eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
26543 if [is-effective-target arm_neon_hw] {
26544 set dg-do-what-default run
26545 } else {
26546Index: gcc-4_5-branch/gcc/testsuite/lib/target-supports.exp
26547===================================================================
26548--- gcc-4_5-branch.orig/gcc/testsuite/lib/target-supports.exp
26549+++ gcc-4_5-branch/gcc/testsuite/lib/target-supports.exp
26550@@ -1695,19 +1695,87 @@ proc check_effective_target_arm_hard_vfp
26551 }
26552 }
26553
26554+# Add the options needed for NEON. We need either -mfloat-abi=softfp
26555+# or -mfloat-abi=hard, but if one is already specified by the
26556+# multilib, use it. Similarly, if a -mfpu option already enables
26557+# NEON, do not add -mfpu=neon.
26558+
26559+proc add_options_for_arm_neon { flags } {
26560+ if { ! [check_effective_target_arm_neon_ok] } {
26561+ return "$flags"
26562+ }
26563+ global et_arm_neon_flags
26564+ return "$flags $et_arm_neon_flags"
26565+}
26566+
26567 # Return 1 if this is an ARM target supporting -mfpu=neon
26568-# -mfloat-abi=softfp. Some multilibs may be incompatible with these
26569-# options.
26570+# -mfloat-abi=softfp or equivalent options. Some multilibs may be
26571+# incompatible with these options. Also set et_arm_neon_flags to the
26572+# best options to add.
26573+
26574+proc check_effective_target_arm_neon_ok_nocache { } {
26575+ global et_arm_neon_flags
26576+ set et_arm_neon_flags ""
26577+ if { [check_effective_target_arm32] } {
26578+ foreach flags {"" "-mfloat-abi=softfp" "-mfpu=neon" "-mfpu=neon -mfloat-abi=softfp"} {
26579+ if { [check_no_compiler_messages_nocache arm_neon_ok object {
26580+ #include "arm_neon.h"
26581+ int dummy;
26582+ } "$flags"] } {
26583+ set et_arm_neon_flags $flags
26584+ return 1
26585+ }
26586+ }
26587+ }
26588+
26589+ return 0
26590+}
26591
26592 proc check_effective_target_arm_neon_ok { } {
26593+ return [check_cached_effective_target arm_neon_ok \
26594+ check_effective_target_arm_neon_ok_nocache]
26595+}
26596+
26597+# Add the options needed for NEON. We need either -mfloat-abi=softfp
26598+# or -mfloat-abi=hard, but if one is already specified by the
26599+# multilib, use it.
26600+
26601+proc add_options_for_arm_neon_fp16 { flags } {
26602+ if { ! [check_effective_target_arm_neon_fp16_ok] } {
26603+ return "$flags"
26604+ }
26605+ global et_arm_neon_fp16_flags
26606+ return "$flags $et_arm_neon_fp16_flags"
26607+}
26608+
26609+# Return 1 if this is an ARM target supporting -mfpu=neon-fp16
26610+# -mfloat-abi=softfp or equivalent options. Some multilibs may be
26611+# incompatible with these options. Also set et_arm_neon_flags to the
26612+# best options to add.
26613+
26614+proc check_effective_target_arm_neon_fp16_ok_nocache { } {
26615+ global et_arm_neon_fp16_flags
26616+ set et_arm_neon_fp16_flags ""
26617 if { [check_effective_target_arm32] } {
26618- return [check_no_compiler_messages arm_neon_ok object {
26619- #include "arm_neon.h"
26620- int dummy;
26621- } "-mfpu=neon -mfloat-abi=softfp"]
26622- } else {
26623- return 0
26624+ # Always add -mfpu=neon-fp16, since there is no preprocessor
26625+ # macro for FP16 support.
26626+ foreach flags {"-mfpu=neon-fp16" "-mfpu=neon-fp16 -mfloat-abi=softfp"} {
26627+ if { [check_no_compiler_messages_nocache arm_neon_fp16_ok object {
26628+ #include "arm_neon.h"
26629+ int dummy;
26630+ } "$flags"] } {
26631+ set et_arm_neon_fp16_flags $flags
26632+ return 1
26633+ }
26634+ }
26635 }
26636+
26637+ return 0
26638+}
26639+
26640+proc check_effective_target_arm_neon_fp16_ok { } {
26641+ return [check_cached_effective_target arm_neon_fp16_ok \
26642+ check_effective_target_arm_neon_fp16_ok_nocache]
26643 }
26644
26645 # Return 1 is this is an ARM target where -mthumb causes Thumb-1 to be
26646@@ -1746,7 +1814,7 @@ proc check_effective_target_arm_neon_hw
26647 : "0" (a), "w" (b));
26648 return (a != 1);
26649 }
26650- } "-mfpu=neon -mfloat-abi=softfp"]
26651+ } [add_options_for_arm_neon ""]]
26652 }
26653
26654 # Return 1 if this is a ARM target with NEON enabled.
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99299.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99299.patch
new file mode 100644
index 000000000..7dea4303a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99299.patch
@@ -0,0 +1,62 @@
12010-07-07 Sandra Loosemore <sandra@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2010-03-08 Paul Brook <paul@codesourcery.com>
6
7 gcc/
8 * doc/invoke.texi: Document ARM -mcpu=cortex-m4.
9 * config/arm/arm.c (all_architectures): Change v7e-m default to
10 cortexm4.
11 * config/arm/arm-cores.def: Add cortex-m4.
12 * config/arm/arm-tune.md: Regenerate.
13
14=== modified file 'gcc/config/arm/arm-cores.def'
15--- old/gcc/config/arm/arm-cores.def 2009-11-20 17:37:30 +0000
16+++ new/gcc/config/arm/arm-cores.def 2010-07-29 15:53:39 +0000
17@@ -123,6 +123,7 @@
18 ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, 9e)
19 ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, 9e)
20 ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, 9e)
21+ARM_CORE("cortex-m4", cortexm4, 7EM, FL_LDSCHED, 9e)
22 ARM_CORE("cortex-m3", cortexm3, 7M, FL_LDSCHED, 9e)
23 ARM_CORE("cortex-m1", cortexm1, 6M, FL_LDSCHED, 9e)
24 ARM_CORE("cortex-m0", cortexm0, 6M, FL_LDSCHED, 9e)
25
26=== modified file 'gcc/config/arm/arm-tune.md'
27--- old/gcc/config/arm/arm-tune.md 2009-11-20 17:37:30 +0000
28+++ new/gcc/config/arm/arm-tune.md 2010-07-29 15:53:39 +0000
29@@ -1,5 +1,5 @@
30 ;; -*- buffer-read-only: t -*-
31 ;; Generated automatically by gentune.sh from arm-cores.def
32 (define_attr "tune"
33- "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,arm1156t2fs,cortexa5,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm3,cortexm1,cortexm0"
34+ "arm2,arm250,arm3,arm6,arm60,arm600,arm610,arm620,arm7,arm7d,arm7di,arm70,arm700,arm700i,arm710,arm720,arm710c,arm7100,arm7500,arm7500fe,arm7m,arm7dm,arm7dmi,arm8,arm810,strongarm,strongarm110,strongarm1100,strongarm1110,arm7tdmi,arm7tdmis,arm710t,arm720t,arm740t,arm9,arm9tdmi,arm920,arm920t,arm922t,arm940t,ep9312,arm10tdmi,arm1020t,arm9e,arm946es,arm966es,arm968es,arm10e,arm1020e,arm1022e,xscale,iwmmxt,iwmmxt2,arm926ejs,arm1026ejs,arm1136js,arm1136jfs,arm1176jzs,arm1176jzfs,mpcorenovfp,mpcore,arm1156t2s,arm1156t2fs,cortexa5,cortexa8,cortexa9,cortexr4,cortexr4f,cortexm4,cortexm3,cortexm1,cortexm0"
35 (const (symbol_ref "((enum attr_tune) arm_tune)")))
36
37=== modified file 'gcc/config/arm/arm.c'
38--- old/gcc/config/arm/arm.c 2010-04-02 07:32:00 +0000
39+++ new/gcc/config/arm/arm.c 2010-07-29 15:53:39 +0000
40@@ -782,7 +782,7 @@
41 {"armv7-a", cortexa8, "7A", FL_CO_PROC | FL_FOR_ARCH7A, NULL},
42 {"armv7-r", cortexr4, "7R", FL_CO_PROC | FL_FOR_ARCH7R, NULL},
43 {"armv7-m", cortexm3, "7M", FL_CO_PROC | FL_FOR_ARCH7M, NULL},
44- {"armv7e-m", cortexm3, "7EM", FL_CO_PROC | FL_FOR_ARCH7EM, NULL},
45+ {"armv7e-m", cortexm4, "7EM", FL_CO_PROC | FL_FOR_ARCH7EM, NULL},
46 {"ep9312", ep9312, "4T", FL_LDSCHED | FL_CIRRUS | FL_FOR_ARCH4, NULL},
47 {"iwmmxt", iwmmxt, "5TE", FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT , NULL},
48 {"iwmmxt2", iwmmxt2, "5TE", FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT , NULL},
49
50=== modified file 'gcc/doc/invoke.texi'
51--- old/gcc/doc/invoke.texi 2010-07-29 14:59:35 +0000
52+++ new/gcc/doc/invoke.texi 2010-07-29 15:53:39 +0000
53@@ -9826,7 +9826,7 @@
54 @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp},
55 @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s},
56 @samp{cortex-a5}, @samp{cortex-a8}, @samp{cortex-a9},
57-@samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-m3},
58+@samp{cortex-r4}, @samp{cortex-r4f}, @samp{cortex-m4}, @samp{cortex-m3},
59 @samp{cortex-m1},
60 @samp{cortex-m0},
61 @samp{xscale}, @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
62
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99300.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99300.patch
new file mode 100644
index 000000000..ae417a18f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99300.patch
@@ -0,0 +1,3094 @@
12010-07-08 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from upstream (originally from Sourcery G++ 4.4):
4
5 2010-07-02 Sandra Loosemore <sandra@codesourcery.com>
6
7 gcc/
8 * config/arm/neon.md (vec_extractv2di): Correct error in register
9 numbering to reconcile with neon_vget_lanev2di.
10
11 2010-07-02 Sandra Loosemore <sandra@codesourcery.com>
12
13 gcc/
14 * config/arm/arm.c (neon_vdup_constant): Expand into canonical RTL
15 instead of an unspec.
16 (neon_expand_vector_init): Likewise.
17 * config/arm/neon.md (UNSPEC_VCOMBINE): Delete.
18 (UNSPEC_VDUP_LANE): Delete.
19 (UNSPEC VDUP_N): Delete.
20 (UNSPEC_VGET_HIGH): Delete.
21 (UNSPEC_VGET_LANE): Delete.
22 (UNSPEC_VGET_LOW): Delete.
23 (UNSPEC_VMVN): Delete.
24 (UNSPEC_VSET_LANE): Delete.
25 (V_double_vector_mode): New.
26 (vec_set<mode>_internal): Make code emitted match that for the
27 corresponding intrinsics.
28 (vec_setv2di_internal): Likewise.
29 (neon_vget_lanedi): Rewrite to expand into emit_move_insn.
30 (neon_vget_lanev2di): Rewrite to expand into vec_extractv2di.
31 (neon_vset_lane<mode>): Combine double and quad patterns and
32 expand into vec_set<mode>_internal instead of UNSPEC_VSET_LANE.
33 (neon_vset_lanedi): Rewrite to expand into emit_move_insn.
34 (neon_vdup_n<mode>): Rewrite RTL without unspec.
35 (neon_vdup_ndi): Rewrite as define_expand and use emit_move_insn.
36 (neon_vdup_nv2di): Rewrite RTL without unspec and merge with
37 with neon_vdup_lanev2di, adjusting the pattern from the latter
38 to be predicable for consistency.
39 (neon_vdup_lane<mode>_internal): New.
40 (neon_vdup_lane<mode>): Turn into a define_expand and rewrite
41 to avoid using an unspec.
42 (neon_vdup_lanedi): Rewrite RTL pattern to avoid unspec.
43 (neon_vdup_lanev2di): Turn into a define_expand.
44 (neon_vcombine): Rewrite pattern to eliminate UNPSEC_VCOMBINE.
45 (neon_vget_high<mode>): Replace with....
46 (neon_vget_highv16qi): New pattern using canonical RTL.
47 (neon_vget_highv8hi): Likewise.
48 (neon_vget_highv4si): Likewise.
49 (neon_vget_highv4sf): Likewise.
50 (neon_vget_highv2di): Likewise.
51 (neon_vget_low<mode>): Replace with....
52 (neon_vget_lowv16qi): New pattern using canonical RTL.
53 (neon_vget_lowv8hi): Likewise.
54 (neon_vget_lowv4si): Likewise.
55 (neon_vget_lowv4sf): Likewise.
56 (neon_vget_lowv2di): Likewise.
57
58 * config/arm/neon.ml (Vget_lane): Add No_op attribute to suppress
59 test for this emitting vmov.
60 (Vset_lane): Likewise.
61 (Vdup_n): Likewise.
62 (Vmov_n): Likewise.
63
64 * doc/arm-neon-intrinsics.texi: Regenerated.
65
66 gcc/testsuite/
67 * gcc.target/arm/neon/vdup_ns64.c: Regenerated.
68 * gcc.target/arm/neon/vdup_nu64.c: Regenerated.
69 * gcc.target/arm/neon/vdupQ_ns64.c: Regenerated.
70 * gcc.target/arm/neon/vdupQ_nu64.c: Regenerated.
71 * gcc.target/arm/neon/vmov_ns64.c: Regenerated.
72 * gcc.target/arm/neon/vmov_nu64.c: Regenerated.
73 * gcc.target/arm/neon/vmovQ_ns64.c: Regenerated.
74 * gcc.target/arm/neon/vmovQ_nu64.c: Regenerated.
75 * gcc.target/arm/neon/vget_lanes64.c: Regenerated.
76 * gcc.target/arm/neon/vget_laneu64.c: Regenerated.
77 * gcc.target/arm/neon/vset_lanes64.c: Regenerated.
78 * gcc.target/arm/neon/vset_laneu64.c: Regenerated.
79 * gcc.target/arm/neon-vdup_ns64.c: New.
80 * gcc.target/arm/neon-vdup_nu64.c: New.
81 * gcc.target/arm/neon-vdupQ_ns64.c: New.
82 * gcc.target/arm/neon-vdupQ_nu64.c: New.
83 * gcc.target/arm/neon-vdupQ_lanes64.c: New.
84 * gcc.target/arm/neon-vdupQ_laneu64.c: New.
85 * gcc.target/arm/neon-vmov_ns64.c: New.
86 * gcc.target/arm/neon-vmov_nu64.c: New.
87 * gcc.target/arm/neon-vmovQ_ns64.c: New.
88 * gcc.target/arm/neon-vmovQ_nu64.c: New.
89 * gcc.target/arm/neon-vget_lanes64.c: New.
90 * gcc.target/arm/neon-vget_laneu64.c: New.
91 * gcc.target/arm/neon-vset_lanes64.c: New.
92 * gcc.target/arm/neon-vset_laneu64.c: New.
93
94 2010-07-02 Sandra Loosemore <sandra@codesourcery.com>
95 Julian Brown <julian@codesourcery.com>
96
97 gcc/
98 * config/arm/neon.md (UNSPEC_VABA): Delete.
99 (UNSPEC_VABAL): Delete.
100 (UNSPEC_VABS): Delete.
101 (UNSPEC_VMUL_N): Delete.
102 (adddi3_neon): New.
103 (subdi3_neon): New.
104 (mul<mode>3add<mode>_neon): Make the pattern named.
105 (mul<mode>3neg<mode>add<mode>_neon): Likewise.
106 (neon_vadd<mode>): Replace with define_expand, and move the remaining
107 unspec parts...
108 (neon_vadd<mode>_unspec): ...to this.
109 (neon_vmla<mode>, neon_vmla<mode>_unspec): Likewise.
110 (neon_vlms<mode>, neon_vmls<mode>_unspec): Likewise.
111 (neon_vsub<mode>, neon_vsub<mode>_unspec): Likewise.
112 (neon_vaba<mode>): Rewrite in terms of vabd.
113 (neon_vabal<mode>): Rewrite in terms of vabdl.
114 (neon_vabs<mode>): Rewrite without unspec.
115 * config/arm/arm.md (*arm_adddi3): Disable for TARGET_NEON.
116 (*arm_subdi3): Likewise.
117 * config/arm/neon.ml (Vadd, Vsub): Split out 64-bit variants and add
118 No_op attribute to disable assembly output checks.
119 * config/arm/arm_neon.h: Regenerated.
120 * doc/arm-neon-intrinsics.texi: Regenerated.
121
122 gcc/testsuite/
123 * gcc.target/arm/neon/vadds64.c: Regenerated.
124 * gcc.target/arm/neon/vaddu64.c: Regenerated.
125 * gcc.target/arm/neon/vsubs64.c: Regenerated.
126 * gcc.target/arm/neon/vsubu64.c: Regenerated.
127 * gcc.target/arm/neon-vmla-1.c: Add -ffast-math to options.
128 * gcc.target/arm/neon-vmls-1.c: Likewise.
129 * gcc.target/arm/neon-vsubs64.c: New execution test.
130 * gcc.target/arm/neon-vsubu64.c: New execution test.
131 * gcc.target/arm/neon-vadds64.c: New execution test.
132 * gcc.target/arm/neon-vaddu64.c: New execution test.
133
134=== modified file 'gcc/config/arm/arm.c'
135--- old/gcc/config/arm/arm.c 2010-07-29 15:53:39 +0000
136+++ new/gcc/config/arm/arm.c 2010-07-29 15:59:12 +0000
137@@ -8110,8 +8110,7 @@
138 load. */
139
140 x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, 0));
141- return gen_rtx_UNSPEC (mode, gen_rtvec (1, x),
142- UNSPEC_VDUP_N);
143+ return gen_rtx_VEC_DUPLICATE (mode, x);
144 }
145
146 /* Generate code to load VALS, which is a PARALLEL containing only
147@@ -8207,8 +8206,7 @@
148 {
149 x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, 0));
150 emit_insn (gen_rtx_SET (VOIDmode, target,
151- gen_rtx_UNSPEC (mode, gen_rtvec (1, x),
152- UNSPEC_VDUP_N)));
153+ gen_rtx_VEC_DUPLICATE (mode, x)));
154 return;
155 }
156
157@@ -8217,7 +8215,7 @@
158 if (n_var == 1)
159 {
160 rtx copy = copy_rtx (vals);
161- rtvec ops;
162+ rtx index = GEN_INT (one_var);
163
164 /* Load constant part of vector, substitute neighboring value for
165 varying element. */
166@@ -8226,9 +8224,38 @@
167
168 /* Insert variable. */
169 x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, one_var));
170- ops = gen_rtvec (3, x, target, GEN_INT (one_var));
171- emit_insn (gen_rtx_SET (VOIDmode, target,
172- gen_rtx_UNSPEC (mode, ops, UNSPEC_VSET_LANE)));
173+ switch (mode)
174+ {
175+ case V8QImode:
176+ emit_insn (gen_neon_vset_lanev8qi (target, x, target, index));
177+ break;
178+ case V16QImode:
179+ emit_insn (gen_neon_vset_lanev16qi (target, x, target, index));
180+ break;
181+ case V4HImode:
182+ emit_insn (gen_neon_vset_lanev4hi (target, x, target, index));
183+ break;
184+ case V8HImode:
185+ emit_insn (gen_neon_vset_lanev8hi (target, x, target, index));
186+ break;
187+ case V2SImode:
188+ emit_insn (gen_neon_vset_lanev2si (target, x, target, index));
189+ break;
190+ case V4SImode:
191+ emit_insn (gen_neon_vset_lanev4si (target, x, target, index));
192+ break;
193+ case V2SFmode:
194+ emit_insn (gen_neon_vset_lanev2sf (target, x, target, index));
195+ break;
196+ case V4SFmode:
197+ emit_insn (gen_neon_vset_lanev4sf (target, x, target, index));
198+ break;
199+ case V2DImode:
200+ emit_insn (gen_neon_vset_lanev2di (target, x, target, index));
201+ break;
202+ default:
203+ gcc_unreachable ();
204+ }
205 return;
206 }
207
208
209=== modified file 'gcc/config/arm/arm.md'
210--- old/gcc/config/arm/arm.md 2010-04-02 18:54:46 +0000
211+++ new/gcc/config/arm/arm.md 2010-07-29 15:59:12 +0000
212@@ -497,9 +497,10 @@
213 (plus:DI (match_operand:DI 1 "s_register_operand" "%0, 0")
214 (match_operand:DI 2 "s_register_operand" "r, 0")))
215 (clobber (reg:CC CC_REGNUM))]
216- "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)"
217+ "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK) && !TARGET_NEON"
218 "#"
219- "TARGET_32BIT && reload_completed"
220+ "TARGET_32BIT && reload_completed
221+ && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0])))"
222 [(parallel [(set (reg:CC_C CC_REGNUM)
223 (compare:CC_C (plus:SI (match_dup 1) (match_dup 2))
224 (match_dup 1)))
225@@ -997,7 +998,7 @@
226 (minus:DI (match_operand:DI 1 "s_register_operand" "0,r,0")
227 (match_operand:DI 2 "s_register_operand" "r,0,0")))
228 (clobber (reg:CC CC_REGNUM))]
229- "TARGET_32BIT"
230+ "TARGET_32BIT && !TARGET_NEON"
231 "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2"
232 [(set_attr "conds" "clob")
233 (set_attr "length" "8")]
234@@ -1784,6 +1785,7 @@
235 [(match_operand:DI 1 "s_register_operand" "")
236 (match_operand:DI 2 "s_register_operand" "")]))]
237 "TARGET_32BIT && reload_completed
238+ && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0])))
239 && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))"
240 [(set (match_dup 0) (match_op_dup:SI 6 [(match_dup 1) (match_dup 2)]))
241 (set (match_dup 3) (match_op_dup:SI 6 [(match_dup 4) (match_dup 5)]))]
242@@ -1857,11 +1859,19 @@
243 }"
244 )
245
246-(define_insn "anddi3"
247+(define_expand "anddi3"
248+ [(set (match_operand:DI 0 "s_register_operand" "")
249+ (and:DI (match_operand:DI 1 "s_register_operand" "")
250+ (match_operand:DI 2 "neon_inv_logic_op2" "")))]
251+ "TARGET_32BIT"
252+ ""
253+)
254+
255+(define_insn "*anddi3_insn"
256 [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
257 (and:DI (match_operand:DI 1 "s_register_operand" "%0,r")
258 (match_operand:DI 2 "s_register_operand" "r,r")))]
259- "TARGET_32BIT && ! TARGET_IWMMXT"
260+ "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON"
261 "#"
262 [(set_attr "length" "8")]
263 )
264@@ -2461,7 +2471,9 @@
265 (match_operand:DI 2 "s_register_operand" "r,0")))]
266 "TARGET_32BIT"
267 "#"
268- "TARGET_32BIT && reload_completed && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))"
269+ "TARGET_32BIT && reload_completed
270+ && ! (TARGET_NEON && IS_VFP_REGNUM (REGNO (operands[0])))
271+ && ! IS_IWMMXT_REGNUM (REGNO (operands[0]))"
272 [(set (match_dup 0) (and:SI (not:SI (match_dup 1)) (match_dup 2)))
273 (set (match_dup 3) (and:SI (not:SI (match_dup 4)) (match_dup 5)))]
274 "
275@@ -2585,11 +2597,19 @@
276 [(set_attr "conds" "set")]
277 )
278
279-(define_insn "iordi3"
280+(define_expand "iordi3"
281+ [(set (match_operand:DI 0 "s_register_operand" "")
282+ (ior:DI (match_operand:DI 1 "s_register_operand" "")
283+ (match_operand:DI 2 "neon_logic_op2" "")))]
284+ "TARGET_32BIT"
285+ ""
286+)
287+
288+(define_insn "*iordi3_insn"
289 [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
290 (ior:DI (match_operand:DI 1 "s_register_operand" "%0,r")
291 (match_operand:DI 2 "s_register_operand" "r,r")))]
292- "TARGET_32BIT && ! TARGET_IWMMXT"
293+ "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON"
294 "#"
295 [(set_attr "length" "8")
296 (set_attr "predicable" "yes")]
297@@ -2715,11 +2735,19 @@
298 [(set_attr "conds" "set")]
299 )
300
301-(define_insn "xordi3"
302+(define_expand "xordi3"
303+ [(set (match_operand:DI 0 "s_register_operand" "")
304+ (xor:DI (match_operand:DI 1 "s_register_operand" "")
305+ (match_operand:DI 2 "s_register_operand" "")))]
306+ "TARGET_32BIT"
307+ ""
308+)
309+
310+(define_insn "*xordi3_insn"
311 [(set (match_operand:DI 0 "s_register_operand" "=&r,&r")
312 (xor:DI (match_operand:DI 1 "s_register_operand" "%0,r")
313 (match_operand:DI 2 "s_register_operand" "r,r")))]
314- "TARGET_32BIT && !TARGET_IWMMXT"
315+ "TARGET_32BIT && !TARGET_IWMMXT && !TARGET_NEON"
316 "#"
317 [(set_attr "length" "8")
318 (set_attr "predicable" "yes")]
319
320=== modified file 'gcc/config/arm/arm_neon.h'
321--- old/gcc/config/arm/arm_neon.h 2009-11-03 17:58:59 +0000
322+++ new/gcc/config/arm/arm_neon.h 2010-07-29 15:59:12 +0000
323@@ -414,12 +414,6 @@
324 return (int32x2_t)__builtin_neon_vaddv2si (__a, __b, 1);
325 }
326
327-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
328-vadd_s64 (int64x1_t __a, int64x1_t __b)
329-{
330- return (int64x1_t)__builtin_neon_vadddi (__a, __b, 1);
331-}
332-
333 __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
334 vadd_f32 (float32x2_t __a, float32x2_t __b)
335 {
336@@ -444,6 +438,12 @@
337 return (uint32x2_t)__builtin_neon_vaddv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
338 }
339
340+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
341+vadd_s64 (int64x1_t __a, int64x1_t __b)
342+{
343+ return (int64x1_t)__builtin_neon_vadddi (__a, __b, 1);
344+}
345+
346 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
347 vadd_u64 (uint64x1_t __a, uint64x1_t __b)
348 {
349@@ -1368,12 +1368,6 @@
350 return (int32x2_t)__builtin_neon_vsubv2si (__a, __b, 1);
351 }
352
353-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
354-vsub_s64 (int64x1_t __a, int64x1_t __b)
355-{
356- return (int64x1_t)__builtin_neon_vsubdi (__a, __b, 1);
357-}
358-
359 __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
360 vsub_f32 (float32x2_t __a, float32x2_t __b)
361 {
362@@ -1398,6 +1392,12 @@
363 return (uint32x2_t)__builtin_neon_vsubv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
364 }
365
366+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
367+vsub_s64 (int64x1_t __a, int64x1_t __b)
368+{
369+ return (int64x1_t)__builtin_neon_vsubdi (__a, __b, 1);
370+}
371+
372 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
373 vsub_u64 (uint64x1_t __a, uint64x1_t __b)
374 {
375@@ -5808,12 +5808,6 @@
376 return (int32x2_t)__builtin_neon_vget_lowv4si (__a);
377 }
378
379-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
380-vget_low_s64 (int64x2_t __a)
381-{
382- return (int64x1_t)__builtin_neon_vget_lowv2di (__a);
383-}
384-
385 __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
386 vget_low_f32 (float32x4_t __a)
387 {
388@@ -5838,12 +5832,6 @@
389 return (uint32x2_t)__builtin_neon_vget_lowv4si ((int32x4_t) __a);
390 }
391
392-__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
393-vget_low_u64 (uint64x2_t __a)
394-{
395- return (uint64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a);
396-}
397-
398 __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
399 vget_low_p8 (poly8x16_t __a)
400 {
401@@ -5856,6 +5844,18 @@
402 return (poly16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a);
403 }
404
405+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
406+vget_low_s64 (int64x2_t __a)
407+{
408+ return (int64x1_t)__builtin_neon_vget_lowv2di (__a);
409+}
410+
411+__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
412+vget_low_u64 (uint64x2_t __a)
413+{
414+ return (uint64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a);
415+}
416+
417 __extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
418 vcvt_s32_f32 (float32x2_t __a)
419 {
420@@ -10386,12 +10386,6 @@
421 return (int32x2_t)__builtin_neon_vandv2si (__a, __b, 1);
422 }
423
424-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
425-vand_s64 (int64x1_t __a, int64x1_t __b)
426-{
427- return (int64x1_t)__builtin_neon_vanddi (__a, __b, 1);
428-}
429-
430 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
431 vand_u8 (uint8x8_t __a, uint8x8_t __b)
432 {
433@@ -10410,6 +10404,12 @@
434 return (uint32x2_t)__builtin_neon_vandv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
435 }
436
437+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
438+vand_s64 (int64x1_t __a, int64x1_t __b)
439+{
440+ return (int64x1_t)__builtin_neon_vanddi (__a, __b, 1);
441+}
442+
443 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
444 vand_u64 (uint64x1_t __a, uint64x1_t __b)
445 {
446@@ -10482,12 +10482,6 @@
447 return (int32x2_t)__builtin_neon_vorrv2si (__a, __b, 1);
448 }
449
450-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
451-vorr_s64 (int64x1_t __a, int64x1_t __b)
452-{
453- return (int64x1_t)__builtin_neon_vorrdi (__a, __b, 1);
454-}
455-
456 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
457 vorr_u8 (uint8x8_t __a, uint8x8_t __b)
458 {
459@@ -10506,6 +10500,12 @@
460 return (uint32x2_t)__builtin_neon_vorrv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
461 }
462
463+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
464+vorr_s64 (int64x1_t __a, int64x1_t __b)
465+{
466+ return (int64x1_t)__builtin_neon_vorrdi (__a, __b, 1);
467+}
468+
469 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
470 vorr_u64 (uint64x1_t __a, uint64x1_t __b)
471 {
472@@ -10578,12 +10578,6 @@
473 return (int32x2_t)__builtin_neon_veorv2si (__a, __b, 1);
474 }
475
476-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
477-veor_s64 (int64x1_t __a, int64x1_t __b)
478-{
479- return (int64x1_t)__builtin_neon_veordi (__a, __b, 1);
480-}
481-
482 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
483 veor_u8 (uint8x8_t __a, uint8x8_t __b)
484 {
485@@ -10602,6 +10596,12 @@
486 return (uint32x2_t)__builtin_neon_veorv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
487 }
488
489+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
490+veor_s64 (int64x1_t __a, int64x1_t __b)
491+{
492+ return (int64x1_t)__builtin_neon_veordi (__a, __b, 1);
493+}
494+
495 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
496 veor_u64 (uint64x1_t __a, uint64x1_t __b)
497 {
498@@ -10674,12 +10674,6 @@
499 return (int32x2_t)__builtin_neon_vbicv2si (__a, __b, 1);
500 }
501
502-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
503-vbic_s64 (int64x1_t __a, int64x1_t __b)
504-{
505- return (int64x1_t)__builtin_neon_vbicdi (__a, __b, 1);
506-}
507-
508 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
509 vbic_u8 (uint8x8_t __a, uint8x8_t __b)
510 {
511@@ -10698,6 +10692,12 @@
512 return (uint32x2_t)__builtin_neon_vbicv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
513 }
514
515+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
516+vbic_s64 (int64x1_t __a, int64x1_t __b)
517+{
518+ return (int64x1_t)__builtin_neon_vbicdi (__a, __b, 1);
519+}
520+
521 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
522 vbic_u64 (uint64x1_t __a, uint64x1_t __b)
523 {
524@@ -10770,12 +10770,6 @@
525 return (int32x2_t)__builtin_neon_vornv2si (__a, __b, 1);
526 }
527
528-__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
529-vorn_s64 (int64x1_t __a, int64x1_t __b)
530-{
531- return (int64x1_t)__builtin_neon_vorndi (__a, __b, 1);
532-}
533-
534 __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
535 vorn_u8 (uint8x8_t __a, uint8x8_t __b)
536 {
537@@ -10794,6 +10788,12 @@
538 return (uint32x2_t)__builtin_neon_vornv2si ((int32x2_t) __a, (int32x2_t) __b, 0);
539 }
540
541+__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
542+vorn_s64 (int64x1_t __a, int64x1_t __b)
543+{
544+ return (int64x1_t)__builtin_neon_vorndi (__a, __b, 1);
545+}
546+
547 __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
548 vorn_u64 (uint64x1_t __a, uint64x1_t __b)
549 {
550
551=== modified file 'gcc/config/arm/neon.md'
552--- old/gcc/config/arm/neon.md 2009-11-11 14:23:03 +0000
553+++ new/gcc/config/arm/neon.md 2010-07-29 15:59:12 +0000
554@@ -22,17 +22,12 @@
555 (define_constants
556 [(UNSPEC_ASHIFT_SIGNED 65)
557 (UNSPEC_ASHIFT_UNSIGNED 66)
558- (UNSPEC_VABA 67)
559- (UNSPEC_VABAL 68)
560 (UNSPEC_VABD 69)
561 (UNSPEC_VABDL 70)
562- (UNSPEC_VABS 71)
563 (UNSPEC_VADD 72)
564 (UNSPEC_VADDHN 73)
565 (UNSPEC_VADDL 74)
566 (UNSPEC_VADDW 75)
567- (UNSPEC_VAND 76)
568- (UNSPEC_VBIC 77)
569 (UNSPEC_VBSL 78)
570 (UNSPEC_VCAGE 79)
571 (UNSPEC_VCAGT 80)
572@@ -40,18 +35,9 @@
573 (UNSPEC_VCGE 82)
574 (UNSPEC_VCGT 83)
575 (UNSPEC_VCLS 84)
576- (UNSPEC_VCLZ 85)
577- (UNSPEC_VCNT 86)
578- (UNSPEC_VCOMBINE 87)
579 (UNSPEC_VCVT 88)
580 (UNSPEC_VCVT_N 89)
581- (UNSPEC_VDUP_LANE 90)
582- (UNSPEC_VDUP_N 91)
583- (UNSPEC_VEOR 92)
584 (UNSPEC_VEXT 93)
585- (UNSPEC_VGET_HIGH 94)
586- (UNSPEC_VGET_LANE 95)
587- (UNSPEC_VGET_LOW 96)
588 (UNSPEC_VHADD 97)
589 (UNSPEC_VHSUB 98)
590 (UNSPEC_VLD1 99)
591@@ -86,10 +72,6 @@
592 (UNSPEC_VMULL 128)
593 (UNSPEC_VMUL_LANE 129)
594 (UNSPEC_VMULL_LANE 130)
595- (UNSPEC_VMUL_N 131)
596- (UNSPEC_VMVN 132)
597- (UNSPEC_VORN 133)
598- (UNSPEC_VORR 134)
599 (UNSPEC_VPADAL 135)
600 (UNSPEC_VPADD 136)
601 (UNSPEC_VPADDL 137)
602@@ -125,7 +107,6 @@
603 (UNSPEC_VREV64 167)
604 (UNSPEC_VRSQRTE 168)
605 (UNSPEC_VRSQRTS 169)
606- (UNSPEC_VSET_LANE 170)
607 (UNSPEC_VSHL 171)
608 (UNSPEC_VSHLL_N 172)
609 (UNSPEC_VSHL_N 173)
610@@ -335,6 +316,14 @@
611 (V4HI "V2SI") (V8HI "V4SI")
612 (V2SI "DI") (V4SI "V2DI")])
613
614+;; Double-sized modes with the same element size.
615+;; Used for neon_vdup_lane, where the second operand is double-sized
616+;; even when the first one is quad.
617+(define_mode_attr V_double_vector_mode [(V16QI "V8QI") (V8HI "V4HI")
618+ (V4SI "V2SI") (V4SF "V2SF")
619+ (V8QI "V8QI") (V4HI "V4HI")
620+ (V2SI "V2SI") (V2SF "V2SF")])
621+
622 ;; Mode of result of comparison operations (and bit-select operand 1).
623 (define_mode_attr V_cmp_result [(V8QI "V8QI") (V16QI "V16QI")
624 (V4HI "V4HI") (V8HI "V8HI")
625@@ -688,7 +677,7 @@
626 elt = GET_MODE_NUNITS (<MODE>mode) - 1 - elt;
627 operands[2] = GEN_INT (elt);
628
629- return "vmov%?.<V_uf_sclr>\t%P0[%c2], %1";
630+ return "vmov%?.<V_sz_elem>\t%P0[%c2], %1";
631 }
632 [(set_attr "predicable" "yes")
633 (set_attr "neon_type" "neon_mcr")])
634@@ -714,7 +703,7 @@
635 operands[0] = gen_rtx_REG (<V_HALF>mode, regno + hi);
636 operands[2] = GEN_INT (elt);
637
638- return "vmov%?.<V_uf_sclr>\t%P0[%c2], %1";
639+ return "vmov%?.<V_sz_elem>\t%P0[%c2], %1";
640 }
641 [(set_attr "predicable" "yes")
642 (set_attr "neon_type" "neon_mcr")]
643@@ -734,7 +723,7 @@
644
645 operands[0] = gen_rtx_REG (DImode, regno);
646
647- return "vmov%?.64\t%P0, %Q1, %R1";
648+ return "vmov%?\t%P0, %Q1, %R1";
649 }
650 [(set_attr "predicable" "yes")
651 (set_attr "neon_type" "neon_mcr_2_mcrr")]
652@@ -802,11 +791,11 @@
653 (parallel [(match_operand:SI 2 "immediate_operand" "i")])))]
654 "TARGET_NEON"
655 {
656- int regno = REGNO (operands[1]) + INTVAL (operands[2]);
657+ int regno = REGNO (operands[1]) + 2 * INTVAL (operands[2]);
658
659 operands[1] = gen_rtx_REG (DImode, regno);
660
661- return "vmov%?.64\t%Q0, %R0, %P1";
662+ return "vmov%?\t%Q0, %R0, %P1 @ v2di";
663 }
664 [(set_attr "predicable" "yes")
665 (set_attr "neon_type" "neon_int_1")]
666@@ -823,11 +812,8 @@
667
668 ;; Doubleword and quadword arithmetic.
669
670-;; NOTE: vadd/vsub and some other instructions also support 64-bit integer
671-;; element size, which we could potentially use for "long long" operations. We
672-;; don't want to do this at present though, because moving values from the
673-;; vector unit to the ARM core is currently slow and 64-bit addition (etc.) is
674-;; easy to do with ARM instructions anyway.
675+;; NOTE: some other instructions also support 64-bit integer
676+;; element size, which we could potentially use for "long long" operations.
677
678 (define_insn "*add<mode>3_neon"
679 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
680@@ -843,6 +829,26 @@
681 (const_string "neon_int_1")))]
682 )
683
684+(define_insn "adddi3_neon"
685+ [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r")
686+ (plus:DI (match_operand:DI 1 "s_register_operand" "%w,0,0")
687+ (match_operand:DI 2 "s_register_operand" "w,r,0")))
688+ (clobber (reg:CC CC_REGNUM))]
689+ "TARGET_NEON"
690+{
691+ switch (which_alternative)
692+ {
693+ case 0: return "vadd.i64\t%P0, %P1, %P2";
694+ case 1: return "#";
695+ case 2: return "#";
696+ default: gcc_unreachable ();
697+ }
698+}
699+ [(set_attr "neon_type" "neon_int_1,*,*")
700+ (set_attr "conds" "*,clob,clob")
701+ (set_attr "length" "*,8,8")]
702+)
703+
704 (define_insn "*sub<mode>3_neon"
705 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
706 (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
707@@ -857,6 +863,27 @@
708 (const_string "neon_int_2")))]
709 )
710
711+(define_insn "subdi3_neon"
712+ [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?&r")
713+ (minus:DI (match_operand:DI 1 "s_register_operand" "w,0,r,0")
714+ (match_operand:DI 2 "s_register_operand" "w,r,0,0")))
715+ (clobber (reg:CC CC_REGNUM))]
716+ "TARGET_NEON"
717+{
718+ switch (which_alternative)
719+ {
720+ case 0: return "vsub.i64\t%P0, %P1, %P2";
721+ case 1: /* fall through */
722+ case 2: /* fall through */
723+ case 3: return "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2";
724+ default: gcc_unreachable ();
725+ }
726+}
727+ [(set_attr "neon_type" "neon_int_2,*,*,*")
728+ (set_attr "conds" "*,clob,clob,clob")
729+ (set_attr "length" "*,8,8,8")]
730+)
731+
732 (define_insn "*mul<mode>3_neon"
733 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
734 (mult:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
735@@ -878,7 +905,7 @@
736 (const_string "neon_mul_qqq_8_16_32_ddd_32")))))]
737 )
738
739-(define_insn "*mul<mode>3add<mode>_neon"
740+(define_insn "mul<mode>3add<mode>_neon"
741 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
742 (plus:VDQ (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w")
743 (match_operand:VDQ 3 "s_register_operand" "w"))
744@@ -900,7 +927,7 @@
745 (const_string "neon_mla_qqq_32_qqd_32_scalar")))))]
746 )
747
748-(define_insn "*mul<mode>3neg<mode>add<mode>_neon"
749+(define_insn "mul<mode>3neg<mode>add<mode>_neon"
750 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
751 (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "0")
752 (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w")
753@@ -940,10 +967,9 @@
754 )
755
756 (define_insn "iordi3_neon"
757- [(set (match_operand:DI 0 "s_register_operand" "=w,w")
758- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w,0")
759- (match_operand:DI 2 "neon_logic_op2" "w,Dl")]
760- UNSPEC_VORR))]
761+ [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r")
762+ (ior:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r")
763+ (match_operand:DI 2 "neon_logic_op2" "w,Dl,r,r")))]
764 "TARGET_NEON"
765 {
766 switch (which_alternative)
767@@ -951,10 +977,13 @@
768 case 0: return "vorr\t%P0, %P1, %P2";
769 case 1: return neon_output_logic_immediate ("vorr", &operands[2],
770 DImode, 0, VALID_NEON_QREG_MODE (DImode));
771+ case 2: return "#";
772+ case 3: return "#";
773 default: gcc_unreachable ();
774 }
775 }
776- [(set_attr "neon_type" "neon_int_1")]
777+ [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")
778+ (set_attr "length" "*,*,8,8")]
779 )
780
781 ;; The concrete forms of the Neon immediate-logic instructions are vbic and
782@@ -980,10 +1009,9 @@
783 )
784
785 (define_insn "anddi3_neon"
786- [(set (match_operand:DI 0 "s_register_operand" "=w,w")
787- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w,0")
788- (match_operand:DI 2 "neon_inv_logic_op2" "w,DL")]
789- UNSPEC_VAND))]
790+ [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r")
791+ (and:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r")
792+ (match_operand:DI 2 "neon_inv_logic_op2" "w,DL,r,r")))]
793 "TARGET_NEON"
794 {
795 switch (which_alternative)
796@@ -991,10 +1019,13 @@
797 case 0: return "vand\t%P0, %P1, %P2";
798 case 1: return neon_output_logic_immediate ("vand", &operands[2],
799 DImode, 1, VALID_NEON_QREG_MODE (DImode));
800+ case 2: return "#";
801+ case 3: return "#";
802 default: gcc_unreachable ();
803 }
804 }
805- [(set_attr "neon_type" "neon_int_1")]
806+ [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")
807+ (set_attr "length" "*,*,8,8")]
808 )
809
810 (define_insn "orn<mode>3_neon"
811@@ -1007,13 +1038,16 @@
812 )
813
814 (define_insn "orndi3_neon"
815- [(set (match_operand:DI 0 "s_register_operand" "=w")
816- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w")
817- (match_operand:DI 2 "s_register_operand" "w")]
818- UNSPEC_VORN))]
819+ [(set (match_operand:DI 0 "s_register_operand" "=w,?=&r,?&r")
820+ (ior:DI (match_operand:DI 1 "s_register_operand" "w,r,0")
821+ (not:DI (match_operand:DI 2 "s_register_operand" "w,0,r"))))]
822 "TARGET_NEON"
823- "vorn\t%P0, %P1, %P2"
824- [(set_attr "neon_type" "neon_int_1")]
825+ "@
826+ vorn\t%P0, %P1, %P2
827+ #
828+ #"
829+ [(set_attr "neon_type" "neon_int_1,*,*")
830+ (set_attr "length" "*,8,8")]
831 )
832
833 (define_insn "bic<mode>3_neon"
834@@ -1025,14 +1059,18 @@
835 [(set_attr "neon_type" "neon_int_1")]
836 )
837
838+;; Compare to *anddi_notdi_di.
839 (define_insn "bicdi3_neon"
840- [(set (match_operand:DI 0 "s_register_operand" "=w")
841- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w")
842- (match_operand:DI 2 "s_register_operand" "w")]
843- UNSPEC_VBIC))]
844+ [(set (match_operand:DI 0 "s_register_operand" "=w,?=&r,?&r")
845+ (and:DI (not:DI (match_operand:DI 2 "s_register_operand" "w,r,0"))
846+ (match_operand:DI 1 "s_register_operand" "w,0,r")))]
847 "TARGET_NEON"
848- "vbic\t%P0, %P1, %P2"
849- [(set_attr "neon_type" "neon_int_1")]
850+ "@
851+ vbic\t%P0, %P1, %P2
852+ #
853+ #"
854+ [(set_attr "neon_type" "neon_int_1,*,*")
855+ (set_attr "length" "*,8,8")]
856 )
857
858 (define_insn "xor<mode>3"
859@@ -1045,13 +1083,16 @@
860 )
861
862 (define_insn "xordi3_neon"
863- [(set (match_operand:DI 0 "s_register_operand" "=w")
864- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w")
865- (match_operand:DI 2 "s_register_operand" "w")]
866- UNSPEC_VEOR))]
867+ [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r")
868+ (xor:DI (match_operand:DI 1 "s_register_operand" "%w,0,r")
869+ (match_operand:DI 2 "s_register_operand" "w,r,r")))]
870 "TARGET_NEON"
871- "veor\t%P0, %P1, %P2"
872- [(set_attr "neon_type" "neon_int_1")]
873+ "@
874+ veor\t%P0, %P1, %P2
875+ #
876+ #"
877+ [(set_attr "neon_type" "neon_int_1,*,*")
878+ (set_attr "length" "*,8,8")]
879 )
880
881 (define_insn "one_cmpl<mode>2"
882@@ -1711,11 +1752,37 @@
883
884 ; good for plain vadd, vaddq.
885
886-(define_insn "neon_vadd<mode>"
887+(define_expand "neon_vadd<mode>"
888+ [(match_operand:VDQX 0 "s_register_operand" "=w")
889+ (match_operand:VDQX 1 "s_register_operand" "w")
890+ (match_operand:VDQX 2 "s_register_operand" "w")
891+ (match_operand:SI 3 "immediate_operand" "i")]
892+ "TARGET_NEON"
893+{
894+ if (!<Is_float_mode> || flag_unsafe_math_optimizations)
895+ emit_insn (gen_add<mode>3 (operands[0], operands[1], operands[2]));
896+ else
897+ emit_insn (gen_neon_vadd<mode>_unspec (operands[0], operands[1],
898+ operands[2]));
899+ DONE;
900+})
901+
902+; Note that NEON operations don't support the full IEEE 754 standard: in
903+; particular, denormal values are flushed to zero. This means that GCC cannot
904+; use those instructions for autovectorization, etc. unless
905+; -funsafe-math-optimizations is in effect (in which case flush-to-zero
906+; behaviour is permissible). Intrinsic operations (provided by the arm_neon.h
907+; header) must work in either case: if -funsafe-math-optimizations is given,
908+; intrinsics expand to "canonical" RTL where possible, otherwise intrinsics
909+; expand to unspecs (which may potentially limit the extent to which they might
910+; be optimized by generic code).
911+
912+; Used for intrinsics when flag_unsafe_math_optimizations is false.
913+
914+(define_insn "neon_vadd<mode>_unspec"
915 [(set (match_operand:VDQX 0 "s_register_operand" "=w")
916 (unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w")
917- (match_operand:VDQX 2 "s_register_operand" "w")
918- (match_operand:SI 3 "immediate_operand" "i")]
919+ (match_operand:VDQX 2 "s_register_operand" "w")]
920 UNSPEC_VADD))]
921 "TARGET_NEON"
922 "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
923@@ -1788,6 +1855,8 @@
924 [(set_attr "neon_type" "neon_int_4")]
925 )
926
927+;; We cannot replace this unspec with mul<mode>3 because of the odd
928+;; polynomial multiplication case that can specified by operand 3.
929 (define_insn "neon_vmul<mode>"
930 [(set (match_operand:VDQW 0 "s_register_operand" "=w")
931 (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "w")
932@@ -1811,13 +1880,31 @@
933 (const_string "neon_mul_qqq_8_16_32_ddd_32")))))]
934 )
935
936-(define_insn "neon_vmla<mode>"
937- [(set (match_operand:VDQW 0 "s_register_operand" "=w")
938- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
939- (match_operand:VDQW 2 "s_register_operand" "w")
940- (match_operand:VDQW 3 "s_register_operand" "w")
941- (match_operand:SI 4 "immediate_operand" "i")]
942- UNSPEC_VMLA))]
943+(define_expand "neon_vmla<mode>"
944+ [(match_operand:VDQW 0 "s_register_operand" "=w")
945+ (match_operand:VDQW 1 "s_register_operand" "0")
946+ (match_operand:VDQW 2 "s_register_operand" "w")
947+ (match_operand:VDQW 3 "s_register_operand" "w")
948+ (match_operand:SI 4 "immediate_operand" "i")]
949+ "TARGET_NEON"
950+{
951+ if (!<Is_float_mode> || flag_unsafe_math_optimizations)
952+ emit_insn (gen_mul<mode>3add<mode>_neon (operands[0], operands[1],
953+ operands[2], operands[3]));
954+ else
955+ emit_insn (gen_neon_vmla<mode>_unspec (operands[0], operands[1],
956+ operands[2], operands[3]));
957+ DONE;
958+})
959+
960+; Used for intrinsics when flag_unsafe_math_optimizations is false.
961+
962+(define_insn "neon_vmla<mode>_unspec"
963+ [(set (match_operand:VDQ 0 "s_register_operand" "=w")
964+ (unspec:VDQ [(match_operand:VDQ 1 "s_register_operand" "0")
965+ (match_operand:VDQ 2 "s_register_operand" "w")
966+ (match_operand:VDQ 3 "s_register_operand" "w")]
967+ UNSPEC_VMLA))]
968 "TARGET_NEON"
969 "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
970 [(set (attr "neon_type")
971@@ -1850,13 +1937,31 @@
972 (const_string "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")))]
973 )
974
975-(define_insn "neon_vmls<mode>"
976- [(set (match_operand:VDQW 0 "s_register_operand" "=w")
977- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
978- (match_operand:VDQW 2 "s_register_operand" "w")
979- (match_operand:VDQW 3 "s_register_operand" "w")
980- (match_operand:SI 4 "immediate_operand" "i")]
981- UNSPEC_VMLS))]
982+(define_expand "neon_vmls<mode>"
983+ [(match_operand:VDQW 0 "s_register_operand" "=w")
984+ (match_operand:VDQW 1 "s_register_operand" "0")
985+ (match_operand:VDQW 2 "s_register_operand" "w")
986+ (match_operand:VDQW 3 "s_register_operand" "w")
987+ (match_operand:SI 4 "immediate_operand" "i")]
988+ "TARGET_NEON"
989+{
990+ if (!<Is_float_mode> || flag_unsafe_math_optimizations)
991+ emit_insn (gen_mul<mode>3neg<mode>add<mode>_neon (operands[0],
992+ operands[1], operands[2], operands[3]));
993+ else
994+ emit_insn (gen_neon_vmls<mode>_unspec (operands[0], operands[1],
995+ operands[2], operands[3]));
996+ DONE;
997+})
998+
999+; Used for intrinsics when flag_unsafe_math_optimizations is false.
1000+
1001+(define_insn "neon_vmls<mode>_unspec"
1002+ [(set (match_operand:VDQ 0 "s_register_operand" "=w")
1003+ (unspec:VDQ [(match_operand:VDQ 1 "s_register_operand" "0")
1004+ (match_operand:VDQ 2 "s_register_operand" "w")
1005+ (match_operand:VDQ 3 "s_register_operand" "w")]
1006+ UNSPEC_VMLS))]
1007 "TARGET_NEON"
1008 "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
1009 [(set (attr "neon_type")
1010@@ -1966,11 +2071,27 @@
1011 (const_string "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")))]
1012 )
1013
1014-(define_insn "neon_vsub<mode>"
1015+(define_expand "neon_vsub<mode>"
1016+ [(match_operand:VDQX 0 "s_register_operand" "=w")
1017+ (match_operand:VDQX 1 "s_register_operand" "w")
1018+ (match_operand:VDQX 2 "s_register_operand" "w")
1019+ (match_operand:SI 3 "immediate_operand" "i")]
1020+ "TARGET_NEON"
1021+{
1022+ if (!<Is_float_mode> || flag_unsafe_math_optimizations)
1023+ emit_insn (gen_sub<mode>3 (operands[0], operands[1], operands[2]));
1024+ else
1025+ emit_insn (gen_neon_vsub<mode>_unspec (operands[0], operands[1],
1026+ operands[2]));
1027+ DONE;
1028+})
1029+
1030+; Used for intrinsics when flag_unsafe_math_optimizations is false.
1031+
1032+(define_insn "neon_vsub<mode>_unspec"
1033 [(set (match_operand:VDQX 0 "s_register_operand" "=w")
1034 (unspec:VDQX [(match_operand:VDQX 1 "s_register_operand" "w")
1035- (match_operand:VDQX 2 "s_register_operand" "w")
1036- (match_operand:SI 3 "immediate_operand" "i")]
1037+ (match_operand:VDQX 2 "s_register_operand" "w")]
1038 UNSPEC_VSUB))]
1039 "TARGET_NEON"
1040 "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
1041@@ -2153,11 +2274,11 @@
1042
1043 (define_insn "neon_vaba<mode>"
1044 [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
1045- (unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "0")
1046- (match_operand:VDQIW 2 "s_register_operand" "w")
1047- (match_operand:VDQIW 3 "s_register_operand" "w")
1048- (match_operand:SI 4 "immediate_operand" "i")]
1049- UNSPEC_VABA))]
1050+ (plus:VDQIW (match_operand:VDQIW 1 "s_register_operand" "0")
1051+ (unspec:VDQIW [(match_operand:VDQIW 2 "s_register_operand" "w")
1052+ (match_operand:VDQIW 3 "s_register_operand" "w")
1053+ (match_operand:SI 4 "immediate_operand" "i")]
1054+ UNSPEC_VABD)))]
1055 "TARGET_NEON"
1056 "vaba.%T4%#<V_sz_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
1057 [(set (attr "neon_type")
1058@@ -2167,11 +2288,11 @@
1059
1060 (define_insn "neon_vabal<mode>"
1061 [(set (match_operand:<V_widen> 0 "s_register_operand" "=w")
1062- (unspec:<V_widen> [(match_operand:<V_widen> 1 "s_register_operand" "0")
1063- (match_operand:VW 2 "s_register_operand" "w")
1064- (match_operand:VW 3 "s_register_operand" "w")
1065- (match_operand:SI 4 "immediate_operand" "i")]
1066- UNSPEC_VABAL))]
1067+ (plus:<V_widen> (match_operand:<V_widen> 1 "s_register_operand" "0")
1068+ (unspec:<V_widen> [(match_operand:VW 2 "s_register_operand" "w")
1069+ (match_operand:VW 3 "s_register_operand" "w")
1070+ (match_operand:SI 4 "immediate_operand" "i")]
1071+ UNSPEC_VABDL)))]
1072 "TARGET_NEON"
1073 "vabal.%T4%#<V_sz_elem>\t%q0, %P2, %P3"
1074 [(set_attr "neon_type" "neon_vaba")]
1075@@ -2302,22 +2423,15 @@
1076 (const_string "neon_fp_vrecps_vrsqrts_qqq")))]
1077 )
1078
1079-(define_insn "neon_vabs<mode>"
1080- [(set (match_operand:VDQW 0 "s_register_operand" "=w")
1081- (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "w")
1082- (match_operand:SI 2 "immediate_operand" "i")]
1083- UNSPEC_VABS))]
1084+(define_expand "neon_vabs<mode>"
1085+ [(match_operand:VDQW 0 "s_register_operand" "")
1086+ (match_operand:VDQW 1 "s_register_operand" "")
1087+ (match_operand:SI 2 "immediate_operand" "")]
1088 "TARGET_NEON"
1089- "vabs.<V_s_elem>\t%<V_reg>0, %<V_reg>1"
1090- [(set (attr "neon_type")
1091- (if_then_else (ior (ne (symbol_ref "<Is_float_mode>") (const_int 0))
1092- (ne (symbol_ref "<Is_float_mode>") (const_int 0)))
1093- (if_then_else
1094- (ne (symbol_ref "<Is_d_reg>") (const_int 0))
1095- (const_string "neon_fp_vadd_ddd_vabs_dd")
1096- (const_string "neon_fp_vadd_qqq_vabs_qq"))
1097- (const_string "neon_vqneg_vqabs")))]
1098-)
1099+{
1100+ emit_insn (gen_abs<mode>2 (operands[0], operands[1]));
1101+ DONE;
1102+})
1103
1104 (define_insn "neon_vqabs<mode>"
1105 [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
1106@@ -2359,26 +2473,42 @@
1107 [(set_attr "neon_type" "neon_int_1")]
1108 )
1109
1110-(define_insn "neon_vclz<mode>"
1111+(define_insn "clz<mode>2"
1112 [(set (match_operand:VDQIW 0 "s_register_operand" "=w")
1113- (unspec:VDQIW [(match_operand:VDQIW 1 "s_register_operand" "w")
1114- (match_operand:SI 2 "immediate_operand" "i")]
1115- UNSPEC_VCLZ))]
1116+ (clz:VDQIW (match_operand:VDQIW 1 "s_register_operand" "w")))]
1117 "TARGET_NEON"
1118 "vclz.<V_if_elem>\t%<V_reg>0, %<V_reg>1"
1119 [(set_attr "neon_type" "neon_int_1")]
1120 )
1121
1122-(define_insn "neon_vcnt<mode>"
1123+(define_expand "neon_vclz<mode>"
1124+ [(match_operand:VDQIW 0 "s_register_operand" "")
1125+ (match_operand:VDQIW 1 "s_register_operand" "")
1126+ (match_operand:SI 2 "immediate_operand" "")]
1127+ "TARGET_NEON"
1128+{
1129+ emit_insn (gen_clz<mode>2 (operands[0], operands[1]));
1130+ DONE;
1131+})
1132+
1133+(define_insn "popcount<mode>2"
1134 [(set (match_operand:VE 0 "s_register_operand" "=w")
1135- (unspec:VE [(match_operand:VE 1 "s_register_operand" "w")
1136- (match_operand:SI 2 "immediate_operand" "i")]
1137- UNSPEC_VCNT))]
1138+ (popcount:VE (match_operand:VE 1 "s_register_operand" "w")))]
1139 "TARGET_NEON"
1140 "vcnt.<V_sz_elem>\t%<V_reg>0, %<V_reg>1"
1141 [(set_attr "neon_type" "neon_int_1")]
1142 )
1143
1144+(define_expand "neon_vcnt<mode>"
1145+ [(match_operand:VE 0 "s_register_operand" "=w")
1146+ (match_operand:VE 1 "s_register_operand" "w")
1147+ (match_operand:SI 2 "immediate_operand" "i")]
1148+ "TARGET_NEON"
1149+{
1150+ emit_insn (gen_popcount<mode>2 (operands[0], operands[1]));
1151+ DONE;
1152+})
1153+
1154 (define_insn "neon_vrecpe<mode>"
1155 [(set (match_operand:V32 0 "s_register_operand" "=w")
1156 (unspec:V32 [(match_operand:V32 1 "s_register_operand" "w")
1157@@ -2555,126 +2685,65 @@
1158 ; Operand 3 (info word) is ignored because it does nothing useful with 64-bit
1159 ; elements.
1160
1161-(define_insn "neon_vget_lanedi"
1162- [(set (match_operand:DI 0 "s_register_operand" "=r")
1163- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w")
1164- (match_operand:SI 2 "immediate_operand" "i")
1165- (match_operand:SI 3 "immediate_operand" "i")]
1166- UNSPEC_VGET_LANE))]
1167+(define_expand "neon_vget_lanedi"
1168+ [(match_operand:DI 0 "s_register_operand" "=r")
1169+ (match_operand:DI 1 "s_register_operand" "w")
1170+ (match_operand:SI 2 "immediate_operand" "i")
1171+ (match_operand:SI 3 "immediate_operand" "i")]
1172 "TARGET_NEON"
1173 {
1174 neon_lane_bounds (operands[2], 0, 1);
1175- return "vmov%?\t%Q0, %R0, %P1 @ di";
1176-}
1177- [(set_attr "predicable" "yes")
1178- (set_attr "neon_type" "neon_bp_simple")]
1179-)
1180+ emit_move_insn (operands[0], operands[1]);
1181+ DONE;
1182+})
1183
1184-(define_insn "neon_vget_lanev2di"
1185- [(set (match_operand:DI 0 "s_register_operand" "=r")
1186- (unspec:DI [(match_operand:V2DI 1 "s_register_operand" "w")
1187- (match_operand:SI 2 "immediate_operand" "i")
1188- (match_operand:SI 3 "immediate_operand" "i")]
1189- UNSPEC_VGET_LANE))]
1190+(define_expand "neon_vget_lanev2di"
1191+ [(match_operand:DI 0 "s_register_operand" "=r")
1192+ (match_operand:V2DI 1 "s_register_operand" "w")
1193+ (match_operand:SI 2 "immediate_operand" "i")
1194+ (match_operand:SI 3 "immediate_operand" "i")]
1195 "TARGET_NEON"
1196 {
1197- rtx ops[2];
1198- unsigned int regno = REGNO (operands[1]);
1199- unsigned int elt = INTVAL (operands[2]);
1200-
1201 neon_lane_bounds (operands[2], 0, 2);
1202-
1203- ops[0] = operands[0];
1204- ops[1] = gen_rtx_REG (DImode, regno + 2 * elt);
1205- output_asm_insn ("vmov%?\t%Q0, %R0, %P1 @ v2di", ops);
1206-
1207- return "";
1208-}
1209- [(set_attr "predicable" "yes")
1210- (set_attr "neon_type" "neon_bp_simple")]
1211-)
1212-
1213-(define_insn "neon_vset_lane<mode>"
1214- [(set (match_operand:VD 0 "s_register_operand" "=w")
1215- (unspec:VD [(match_operand:<V_elem> 1 "s_register_operand" "r")
1216- (match_operand:VD 2 "s_register_operand" "0")
1217- (match_operand:SI 3 "immediate_operand" "i")]
1218- UNSPEC_VSET_LANE))]
1219+ emit_insn (gen_vec_extractv2di (operands[0], operands[1], operands[2]));
1220+ DONE;
1221+})
1222+
1223+(define_expand "neon_vset_lane<mode>"
1224+ [(match_operand:VDQ 0 "s_register_operand" "=w")
1225+ (match_operand:<V_elem> 1 "s_register_operand" "r")
1226+ (match_operand:VDQ 2 "s_register_operand" "0")
1227+ (match_operand:SI 3 "immediate_operand" "i")]
1228 "TARGET_NEON"
1229 {
1230+ unsigned int elt = INTVAL (operands[3]);
1231 neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
1232- return "vmov%?.<V_sz_elem>\t%P0[%c3], %1";
1233-}
1234- [(set_attr "predicable" "yes")
1235- (set_attr "neon_type" "neon_bp_simple")]
1236-)
1237+
1238+ if (BYTES_BIG_ENDIAN)
1239+ {
1240+ unsigned int reg_nelts
1241+ = 64 / GET_MODE_BITSIZE (GET_MODE_INNER (<MODE>mode));
1242+ elt ^= reg_nelts - 1;
1243+ }
1244+
1245+ emit_insn (gen_vec_set<mode>_internal (operands[0], operands[1],
1246+ GEN_INT (1 << elt), operands[2]));
1247+ DONE;
1248+})
1249
1250 ; See neon_vget_lanedi comment for reasons operands 2 & 3 are ignored.
1251
1252-(define_insn "neon_vset_lanedi"
1253- [(set (match_operand:DI 0 "s_register_operand" "=w")
1254- (unspec:DI [(match_operand:DI 1 "s_register_operand" "r")
1255- (match_operand:DI 2 "s_register_operand" "0")
1256- (match_operand:SI 3 "immediate_operand" "i")]
1257- UNSPEC_VSET_LANE))]
1258+(define_expand "neon_vset_lanedi"
1259+ [(match_operand:DI 0 "s_register_operand" "=w")
1260+ (match_operand:DI 1 "s_register_operand" "r")
1261+ (match_operand:DI 2 "s_register_operand" "0")
1262+ (match_operand:SI 3 "immediate_operand" "i")]
1263 "TARGET_NEON"
1264 {
1265 neon_lane_bounds (operands[3], 0, 1);
1266- return "vmov%?\t%P0, %Q1, %R1 @ di";
1267-}
1268- [(set_attr "predicable" "yes")
1269- (set_attr "neon_type" "neon_bp_simple")]
1270-)
1271-
1272-(define_insn "neon_vset_lane<mode>"
1273- [(set (match_operand:VQ 0 "s_register_operand" "=w")
1274- (unspec:VQ [(match_operand:<V_elem> 1 "s_register_operand" "r")
1275- (match_operand:VQ 2 "s_register_operand" "0")
1276- (match_operand:SI 3 "immediate_operand" "i")]
1277- UNSPEC_VSET_LANE))]
1278- "TARGET_NEON"
1279-{
1280- rtx ops[4];
1281- unsigned int regno = REGNO (operands[0]);
1282- unsigned int halfelts = GET_MODE_NUNITS (<MODE>mode) / 2;
1283- unsigned int elt = INTVAL (operands[3]);
1284-
1285- neon_lane_bounds (operands[3], 0, halfelts * 2);
1286-
1287- ops[0] = gen_rtx_REG (<V_HALF>mode, regno + 2 * (elt / halfelts));
1288- ops[1] = operands[1];
1289- ops[2] = GEN_INT (elt % halfelts);
1290- output_asm_insn ("vmov%?.<V_sz_elem>\t%P0[%c2], %1", ops);
1291-
1292- return "";
1293-}
1294- [(set_attr "predicable" "yes")
1295- (set_attr "neon_type" "neon_bp_simple")]
1296-)
1297-
1298-(define_insn "neon_vset_lanev2di"
1299- [(set (match_operand:V2DI 0 "s_register_operand" "=w")
1300- (unspec:V2DI [(match_operand:DI 1 "s_register_operand" "r")
1301- (match_operand:V2DI 2 "s_register_operand" "0")
1302- (match_operand:SI 3 "immediate_operand" "i")]
1303- UNSPEC_VSET_LANE))]
1304- "TARGET_NEON"
1305-{
1306- rtx ops[2];
1307- unsigned int regno = REGNO (operands[0]);
1308- unsigned int elt = INTVAL (operands[3]);
1309-
1310- neon_lane_bounds (operands[3], 0, 2);
1311-
1312- ops[0] = gen_rtx_REG (DImode, regno + 2 * elt);
1313- ops[1] = operands[1];
1314- output_asm_insn ("vmov%?\t%P0, %Q1, %R1 @ v2di", ops);
1315-
1316- return "";
1317-}
1318- [(set_attr "predicable" "yes")
1319- (set_attr "neon_type" "neon_bp_simple")]
1320-)
1321+ emit_move_insn (operands[0], operands[1]);
1322+ DONE;
1323+})
1324
1325 (define_expand "neon_vcreate<mode>"
1326 [(match_operand:VDX 0 "s_register_operand" "")
1327@@ -2688,8 +2757,7 @@
1328
1329 (define_insn "neon_vdup_n<mode>"
1330 [(set (match_operand:VX 0 "s_register_operand" "=w")
1331- (unspec:VX [(match_operand:<V_elem> 1 "s_register_operand" "r")]
1332- UNSPEC_VDUP_N))]
1333+ (vec_duplicate:VX (match_operand:<V_elem> 1 "s_register_operand" "r")))]
1334 "TARGET_NEON"
1335 "vdup%?.<V_sz_elem>\t%<V_reg>0, %1"
1336 ;; Assume this schedules like vmov.
1337@@ -2699,8 +2767,7 @@
1338
1339 (define_insn "neon_vdup_n<mode>"
1340 [(set (match_operand:V32 0 "s_register_operand" "=w,w")
1341- (unspec:V32 [(match_operand:<V_elem> 1 "s_register_operand" "r,t")]
1342- UNSPEC_VDUP_N))]
1343+ (vec_duplicate:V32 (match_operand:<V_elem> 1 "s_register_operand" "r,t")))]
1344 "TARGET_NEON"
1345 "@
1346 vdup%?.<V_sz_elem>\t%<V_reg>0, %1
1347@@ -2710,61 +2777,76 @@
1348 (set_attr "neon_type" "neon_bp_simple")]
1349 )
1350
1351-(define_insn "neon_vdup_ndi"
1352- [(set (match_operand:DI 0 "s_register_operand" "=w")
1353- (unspec:DI [(match_operand:DI 1 "s_register_operand" "r")]
1354- UNSPEC_VDUP_N))]
1355+(define_expand "neon_vdup_ndi"
1356+ [(match_operand:DI 0 "s_register_operand" "=w")
1357+ (match_operand:DI 1 "s_register_operand" "r")]
1358 "TARGET_NEON"
1359- "vmov%?\t%P0, %Q1, %R1"
1360- [(set_attr "predicable" "yes")
1361- (set_attr "neon_type" "neon_bp_simple")]
1362+{
1363+ emit_move_insn (operands[0], operands[1]);
1364+ DONE;
1365+}
1366 )
1367
1368 (define_insn "neon_vdup_nv2di"
1369- [(set (match_operand:V2DI 0 "s_register_operand" "=w")
1370- (unspec:V2DI [(match_operand:DI 1 "s_register_operand" "r")]
1371- UNSPEC_VDUP_N))]
1372+ [(set (match_operand:V2DI 0 "s_register_operand" "=w,w")
1373+ (vec_duplicate:V2DI (match_operand:DI 1 "s_register_operand" "r,w")))]
1374 "TARGET_NEON"
1375- "vmov%?\t%e0, %Q1, %R1\;vmov%?\t%f0, %Q1, %R1"
1376+ "@
1377+ vmov%?\t%e0, %Q1, %R1\;vmov%?\t%f0, %Q1, %R1
1378+ vmov%?\t%e0, %P1\;vmov%?\t%f0, %P1"
1379 [(set_attr "predicable" "yes")
1380 (set_attr "length" "8")
1381 (set_attr "neon_type" "neon_bp_simple")]
1382 )
1383
1384-(define_insn "neon_vdup_lane<mode>"
1385- [(set (match_operand:VD 0 "s_register_operand" "=w")
1386- (unspec:VD [(match_operand:VD 1 "s_register_operand" "w")
1387- (match_operand:SI 2 "immediate_operand" "i")]
1388- UNSPEC_VDUP_LANE))]
1389+(define_insn "neon_vdup_lane<mode>_internal"
1390+ [(set (match_operand:VDQW 0 "s_register_operand" "=w")
1391+ (vec_duplicate:VDQW
1392+ (vec_select:<V_elem>
1393+ (match_operand:<V_double_vector_mode> 1 "s_register_operand" "w")
1394+ (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))]
1395 "TARGET_NEON"
1396 {
1397- neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (<MODE>mode));
1398- return "vdup.<V_sz_elem>\t%P0, %P1[%c2]";
1399+ if (BYTES_BIG_ENDIAN)
1400+ {
1401+ int elt = INTVAL (operands[2]);
1402+ elt = GET_MODE_NUNITS (<V_double_vector_mode>mode) - 1 - elt;
1403+ operands[2] = GEN_INT (elt);
1404+ }
1405+ if (<Is_d_reg>)
1406+ return "vdup.<V_sz_elem>\t%P0, %P1[%c2]";
1407+ else
1408+ return "vdup.<V_sz_elem>\t%q0, %P1[%c2]";
1409 }
1410 ;; Assume this schedules like vmov.
1411 [(set_attr "neon_type" "neon_bp_simple")]
1412 )
1413
1414-(define_insn "neon_vdup_lane<mode>"
1415- [(set (match_operand:VQ 0 "s_register_operand" "=w")
1416- (unspec:VQ [(match_operand:<V_HALF> 1 "s_register_operand" "w")
1417- (match_operand:SI 2 "immediate_operand" "i")]
1418- UNSPEC_VDUP_LANE))]
1419+(define_expand "neon_vdup_lane<mode>"
1420+ [(match_operand:VDQW 0 "s_register_operand" "=w")
1421+ (match_operand:<V_double_vector_mode> 1 "s_register_operand" "w")
1422+ (match_operand:SI 2 "immediate_operand" "i")]
1423 "TARGET_NEON"
1424 {
1425- neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (<V_HALF>mode));
1426- return "vdup.<V_sz_elem>\t%q0, %P1[%c2]";
1427-}
1428- ;; Assume this schedules like vmov.
1429- [(set_attr "neon_type" "neon_bp_simple")]
1430-)
1431+ neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (<V_double_vector_mode>mode));
1432+ if (BYTES_BIG_ENDIAN)
1433+ {
1434+ unsigned int elt = INTVAL (operands[2]);
1435+ unsigned int reg_nelts
1436+ = 64 / GET_MODE_BITSIZE (GET_MODE_INNER (<V_double_vector_mode>mode));
1437+ elt ^= reg_nelts - 1;
1438+ operands[2] = GEN_INT (elt);
1439+ }
1440+ emit_insn (gen_neon_vdup_lane<mode>_internal (operands[0], operands[1],
1441+ operands[2]));
1442+ DONE;
1443+})
1444
1445 ; Scalar index is ignored, since only zero is valid here.
1446 (define_expand "neon_vdup_lanedi"
1447- [(set (match_operand:DI 0 "s_register_operand" "=w")
1448- (unspec:DI [(match_operand:DI 1 "s_register_operand" "w")
1449- (match_operand:SI 2 "immediate_operand" "i")]
1450- UNSPEC_VDUP_LANE))]
1451+ [(match_operand:DI 0 "s_register_operand" "=w")
1452+ (match_operand:DI 1 "s_register_operand" "w")
1453+ (match_operand:SI 2 "immediate_operand" "i")]
1454 "TARGET_NEON"
1455 {
1456 neon_lane_bounds (operands[2], 0, 1);
1457@@ -2772,20 +2854,17 @@
1458 DONE;
1459 })
1460
1461-; Likewise.
1462-(define_insn "neon_vdup_lanev2di"
1463- [(set (match_operand:V2DI 0 "s_register_operand" "=w")
1464- (unspec:V2DI [(match_operand:DI 1 "s_register_operand" "w")
1465- (match_operand:SI 2 "immediate_operand" "i")]
1466- UNSPEC_VDUP_LANE))]
1467+; Likewise for v2di, as the DImode second operand has only a single element.
1468+(define_expand "neon_vdup_lanev2di"
1469+ [(match_operand:V2DI 0 "s_register_operand" "=w")
1470+ (match_operand:DI 1 "s_register_operand" "w")
1471+ (match_operand:SI 2 "immediate_operand" "i")]
1472 "TARGET_NEON"
1473 {
1474 neon_lane_bounds (operands[2], 0, 1);
1475- return "vmov\t%e0, %P1\;vmov\t%f0, %P1";
1476-}
1477- [(set_attr "length" "8")
1478- (set_attr "neon_type" "neon_bp_simple")]
1479-)
1480+ emit_insn (gen_neon_vdup_nv2di (operands[0], operands[1]));
1481+ DONE;
1482+})
1483
1484 ;; In this insn, operand 1 should be low, and operand 2 the high part of the
1485 ;; dest vector.
1486@@ -2796,9 +2875,8 @@
1487
1488 (define_insn "neon_vcombine<mode>"
1489 [(set (match_operand:<V_DOUBLE> 0 "s_register_operand" "=w")
1490- (unspec:<V_DOUBLE> [(match_operand:VDX 1 "s_register_operand" "w")
1491- (match_operand:VDX 2 "s_register_operand" "w")]
1492- UNSPEC_VCOMBINE))]
1493+ (vec_concat:<V_DOUBLE> (match_operand:VDX 1 "s_register_operand" "w")
1494+ (match_operand:VDX 2 "s_register_operand" "w")))]
1495 "TARGET_NEON"
1496 {
1497 int dest = REGNO (operands[0]);
1498@@ -2838,27 +2916,171 @@
1499 (set_attr "neon_type" "neon_bp_simple")]
1500 )
1501
1502-(define_insn "neon_vget_high<mode>"
1503- [(set (match_operand:<V_HALF> 0 "s_register_operand" "=w")
1504- (unspec:<V_HALF> [(match_operand:VQX 1 "s_register_operand" "w")]
1505- UNSPEC_VGET_HIGH))]
1506- "TARGET_NEON"
1507-{
1508- int dest = REGNO (operands[0]);
1509- int src = REGNO (operands[1]);
1510-
1511- if (dest != src + 2)
1512- return "vmov\t%P0, %f1";
1513- else
1514- return "";
1515-}
1516- [(set_attr "neon_type" "neon_bp_simple")]
1517-)
1518-
1519-(define_insn "neon_vget_low<mode>"
1520- [(set (match_operand:<V_HALF> 0 "s_register_operand" "=w")
1521- (unspec:<V_HALF> [(match_operand:VQX 1 "s_register_operand" "w")]
1522- UNSPEC_VGET_LOW))]
1523+(define_insn "neon_vget_highv16qi"
1524+ [(set (match_operand:V8QI 0 "s_register_operand" "=w")
1525+ (vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w")
1526+ (parallel [(const_int 8) (const_int 9)
1527+ (const_int 10) (const_int 11)
1528+ (const_int 12) (const_int 13)
1529+ (const_int 14) (const_int 15)])))]
1530+ "TARGET_NEON"
1531+{
1532+ int dest = REGNO (operands[0]);
1533+ int src = REGNO (operands[1]);
1534+
1535+ if (dest != src + 2)
1536+ return "vmov\t%P0, %f1";
1537+ else
1538+ return "";
1539+}
1540+ [(set_attr "neon_type" "neon_bp_simple")]
1541+)
1542+
1543+(define_insn "neon_vget_highv8hi"
1544+ [(set (match_operand:V4HI 0 "s_register_operand" "=w")
1545+ (vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w")
1546+ (parallel [(const_int 4) (const_int 5)
1547+ (const_int 6) (const_int 7)])))]
1548+ "TARGET_NEON"
1549+{
1550+ int dest = REGNO (operands[0]);
1551+ int src = REGNO (operands[1]);
1552+
1553+ if (dest != src + 2)
1554+ return "vmov\t%P0, %f1";
1555+ else
1556+ return "";
1557+}
1558+ [(set_attr "neon_type" "neon_bp_simple")]
1559+)
1560+
1561+(define_insn "neon_vget_highv4si"
1562+ [(set (match_operand:V2SI 0 "s_register_operand" "=w")
1563+ (vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w")
1564+ (parallel [(const_int 2) (const_int 3)])))]
1565+ "TARGET_NEON"
1566+{
1567+ int dest = REGNO (operands[0]);
1568+ int src = REGNO (operands[1]);
1569+
1570+ if (dest != src + 2)
1571+ return "vmov\t%P0, %f1";
1572+ else
1573+ return "";
1574+}
1575+ [(set_attr "neon_type" "neon_bp_simple")]
1576+)
1577+
1578+(define_insn "neon_vget_highv4sf"
1579+ [(set (match_operand:V2SF 0 "s_register_operand" "=w")
1580+ (vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w")
1581+ (parallel [(const_int 2) (const_int 3)])))]
1582+ "TARGET_NEON"
1583+{
1584+ int dest = REGNO (operands[0]);
1585+ int src = REGNO (operands[1]);
1586+
1587+ if (dest != src + 2)
1588+ return "vmov\t%P0, %f1";
1589+ else
1590+ return "";
1591+}
1592+ [(set_attr "neon_type" "neon_bp_simple")]
1593+)
1594+
1595+(define_insn "neon_vget_highv2di"
1596+ [(set (match_operand:DI 0 "s_register_operand" "=w")
1597+ (vec_select:DI (match_operand:V2DI 1 "s_register_operand" "w")
1598+ (parallel [(const_int 1)])))]
1599+ "TARGET_NEON"
1600+{
1601+ int dest = REGNO (operands[0]);
1602+ int src = REGNO (operands[1]);
1603+
1604+ if (dest != src + 2)
1605+ return "vmov\t%P0, %f1";
1606+ else
1607+ return "";
1608+}
1609+ [(set_attr "neon_type" "neon_bp_simple")]
1610+)
1611+
1612+(define_insn "neon_vget_lowv16qi"
1613+ [(set (match_operand:V8QI 0 "s_register_operand" "=w")
1614+ (vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w")
1615+ (parallel [(const_int 0) (const_int 1)
1616+ (const_int 2) (const_int 3)
1617+ (const_int 4) (const_int 5)
1618+ (const_int 6) (const_int 7)])))]
1619+ "TARGET_NEON"
1620+{
1621+ int dest = REGNO (operands[0]);
1622+ int src = REGNO (operands[1]);
1623+
1624+ if (dest != src)
1625+ return "vmov\t%P0, %e1";
1626+ else
1627+ return "";
1628+}
1629+ [(set_attr "neon_type" "neon_bp_simple")]
1630+)
1631+
1632+(define_insn "neon_vget_lowv8hi"
1633+ [(set (match_operand:V4HI 0 "s_register_operand" "=w")
1634+ (vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w")
1635+ (parallel [(const_int 0) (const_int 1)
1636+ (const_int 2) (const_int 3)])))]
1637+ "TARGET_NEON"
1638+{
1639+ int dest = REGNO (operands[0]);
1640+ int src = REGNO (operands[1]);
1641+
1642+ if (dest != src)
1643+ return "vmov\t%P0, %e1";
1644+ else
1645+ return "";
1646+}
1647+ [(set_attr "neon_type" "neon_bp_simple")]
1648+)
1649+
1650+(define_insn "neon_vget_lowv4si"
1651+ [(set (match_operand:V2SI 0 "s_register_operand" "=w")
1652+ (vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w")
1653+ (parallel [(const_int 0) (const_int 1)])))]
1654+ "TARGET_NEON"
1655+{
1656+ int dest = REGNO (operands[0]);
1657+ int src = REGNO (operands[1]);
1658+
1659+ if (dest != src)
1660+ return "vmov\t%P0, %e1";
1661+ else
1662+ return "";
1663+}
1664+ [(set_attr "neon_type" "neon_bp_simple")]
1665+)
1666+
1667+(define_insn "neon_vget_lowv4sf"
1668+ [(set (match_operand:V2SF 0 "s_register_operand" "=w")
1669+ (vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w")
1670+ (parallel [(const_int 0) (const_int 1)])))]
1671+ "TARGET_NEON"
1672+{
1673+ int dest = REGNO (operands[0]);
1674+ int src = REGNO (operands[1]);
1675+
1676+ if (dest != src)
1677+ return "vmov\t%P0, %e1";
1678+ else
1679+ return "";
1680+}
1681+ [(set_attr "neon_type" "neon_bp_simple")]
1682+)
1683+
1684+(define_insn "neon_vget_lowv2di"
1685+ [(set (match_operand:DI 0 "s_register_operand" "=w")
1686+ (vec_select:DI (match_operand:V2DI 1 "s_register_operand" "w")
1687+ (parallel [(const_int 0)])))]
1688 "TARGET_NEON"
1689 {
1690 int dest = REGNO (operands[0]);
1691
1692=== modified file 'gcc/config/arm/neon.ml'
1693--- old/gcc/config/arm/neon.ml 2010-01-19 14:21:14 +0000
1694+++ new/gcc/config/arm/neon.ml 2010-07-29 15:59:12 +0000
1695@@ -709,7 +709,8 @@
1696 let ops =
1697 [
1698 (* Addition. *)
1699- Vadd, [], All (3, Dreg), "vadd", sign_invar_2, F32 :: su_8_64;
1700+ Vadd, [], All (3, Dreg), "vadd", sign_invar_2, F32 :: su_8_32;
1701+ Vadd, [No_op], All (3, Dreg), "vadd", sign_invar_2, [S64; U64];
1702 Vadd, [], All (3, Qreg), "vaddQ", sign_invar_2, F32 :: su_8_64;
1703 Vadd, [], Long, "vaddl", elts_same_2, su_8_32;
1704 Vadd, [], Wide, "vaddw", elts_same_2, su_8_32;
1705@@ -758,7 +759,8 @@
1706 Vmls, [Saturating; Doubling], Long, "vqdmlsl", elts_same_io, [S16; S32];
1707
1708 (* Subtraction. *)
1709- Vsub, [], All (3, Dreg), "vsub", sign_invar_2, F32 :: su_8_64;
1710+ Vsub, [], All (3, Dreg), "vsub", sign_invar_2, F32 :: su_8_32;
1711+ Vsub, [No_op], All (3, Dreg), "vsub", sign_invar_2, [S64; U64];
1712 Vsub, [], All (3, Qreg), "vsubQ", sign_invar_2, F32 :: su_8_64;
1713 Vsub, [], Long, "vsubl", elts_same_2, su_8_32;
1714 Vsub, [], Wide, "vsubw", elts_same_2, su_8_32;
1715@@ -967,7 +969,8 @@
1716 Use_operands [| Corereg; Dreg; Immed |],
1717 "vget_lane", get_lane, pf_su_8_32;
1718 Vget_lane,
1719- [InfoWord;
1720+ [No_op;
1721+ InfoWord;
1722 Disassembles_as [Use_operands [| Corereg; Corereg; Dreg |]];
1723 Instruction_name ["vmov"]; Const_valuator (fun _ -> 0)],
1724 Use_operands [| Corereg; Dreg; Immed |],
1725@@ -989,7 +992,8 @@
1726 Instruction_name ["vmov"]],
1727 Use_operands [| Dreg; Corereg; Dreg; Immed |], "vset_lane",
1728 set_lane, pf_su_8_32;
1729- Vset_lane, [Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]];
1730+ Vset_lane, [No_op;
1731+ Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]];
1732 Instruction_name ["vmov"]; Const_valuator (fun _ -> 0)],
1733 Use_operands [| Dreg; Corereg; Dreg; Immed |], "vset_lane",
1734 set_lane_notype, [S64; U64];
1735@@ -1017,7 +1021,8 @@
1736 Use_operands [| Dreg; Corereg |], "vdup_n", bits_1,
1737 pf_su_8_32;
1738 Vdup_n,
1739- [Instruction_name ["vmov"];
1740+ [No_op;
1741+ Instruction_name ["vmov"];
1742 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]],
1743 Use_operands [| Dreg; Corereg |], "vdup_n", notype_1,
1744 [S64; U64];
1745@@ -1028,7 +1033,8 @@
1746 Use_operands [| Qreg; Corereg |], "vdupQ_n", bits_1,
1747 pf_su_8_32;
1748 Vdup_n,
1749- [Instruction_name ["vmov"];
1750+ [No_op;
1751+ Instruction_name ["vmov"];
1752 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |];
1753 Use_operands [| Dreg; Corereg; Corereg |]]],
1754 Use_operands [| Qreg; Corereg |], "vdupQ_n", notype_1,
1755@@ -1043,7 +1049,8 @@
1756 Use_operands [| Dreg; Corereg |],
1757 "vmov_n", bits_1, pf_su_8_32;
1758 Vmov_n,
1759- [Builtin_name "vdup_n";
1760+ [No_op;
1761+ Builtin_name "vdup_n";
1762 Instruction_name ["vmov"];
1763 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |]]],
1764 Use_operands [| Dreg; Corereg |],
1765@@ -1056,7 +1063,8 @@
1766 Use_operands [| Qreg; Corereg |],
1767 "vmovQ_n", bits_1, pf_su_8_32;
1768 Vmov_n,
1769- [Builtin_name "vdupQ_n";
1770+ [No_op;
1771+ Builtin_name "vdupQ_n";
1772 Instruction_name ["vmov"];
1773 Disassembles_as [Use_operands [| Dreg; Corereg; Corereg |];
1774 Use_operands [| Dreg; Corereg; Corereg |]]],
1775@@ -1613,23 +1621,28 @@
1776 store_3, [P16; F32; U16; U32; S16; S32];
1777
1778 (* Logical operations. And. *)
1779- Vand, [], All (3, Dreg), "vand", notype_2, su_8_64;
1780+ Vand, [], All (3, Dreg), "vand", notype_2, su_8_32;
1781+ Vand, [No_op], All (3, Dreg), "vand", notype_2, [S64; U64];
1782 Vand, [], All (3, Qreg), "vandQ", notype_2, su_8_64;
1783
1784 (* Or. *)
1785- Vorr, [], All (3, Dreg), "vorr", notype_2, su_8_64;
1786+ Vorr, [], All (3, Dreg), "vorr", notype_2, su_8_32;
1787+ Vorr, [No_op], All (3, Dreg), "vorr", notype_2, [S64; U64];
1788 Vorr, [], All (3, Qreg), "vorrQ", notype_2, su_8_64;
1789
1790 (* Eor. *)
1791- Veor, [], All (3, Dreg), "veor", notype_2, su_8_64;
1792+ Veor, [], All (3, Dreg), "veor", notype_2, su_8_32;
1793+ Veor, [No_op], All (3, Dreg), "veor", notype_2, [S64; U64];
1794 Veor, [], All (3, Qreg), "veorQ", notype_2, su_8_64;
1795
1796 (* Bic (And-not). *)
1797- Vbic, [], All (3, Dreg), "vbic", notype_2, su_8_64;
1798+ Vbic, [], All (3, Dreg), "vbic", notype_2, su_8_32;
1799+ Vbic, [No_op], All (3, Dreg), "vbic", notype_2, [S64; U64];
1800 Vbic, [], All (3, Qreg), "vbicQ", notype_2, su_8_64;
1801
1802 (* Or-not. *)
1803- Vorn, [], All (3, Dreg), "vorn", notype_2, su_8_64;
1804+ Vorn, [], All (3, Dreg), "vorn", notype_2, su_8_32;
1805+ Vorn, [No_op], All (3, Dreg), "vorn", notype_2, [S64; U64];
1806 Vorn, [], All (3, Qreg), "vornQ", notype_2, su_8_64;
1807 ]
1808
1809
1810=== modified file 'gcc/config/arm/predicates.md'
1811--- old/gcc/config/arm/predicates.md 2009-07-15 09:12:22 +0000
1812+++ new/gcc/config/arm/predicates.md 2010-07-29 15:59:12 +0000
1813@@ -499,13 +499,15 @@
1814 (define_predicate "imm_for_neon_logic_operand"
1815 (match_code "const_vector")
1816 {
1817- return neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL);
1818+ return (TARGET_NEON
1819+ && neon_immediate_valid_for_logic (op, mode, 0, NULL, NULL));
1820 })
1821
1822 (define_predicate "imm_for_neon_inv_logic_operand"
1823 (match_code "const_vector")
1824 {
1825- return neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL);
1826+ return (TARGET_NEON
1827+ && neon_immediate_valid_for_logic (op, mode, 1, NULL, NULL));
1828 })
1829
1830 (define_predicate "neon_logic_op2"
1831
1832=== modified file 'gcc/doc/arm-neon-intrinsics.texi'
1833--- old/gcc/doc/arm-neon-intrinsics.texi 2009-11-18 17:06:46 +0000
1834+++ new/gcc/doc/arm-neon-intrinsics.texi 2010-07-29 15:59:12 +0000
1835@@ -43,20 +43,18 @@
1836
1837
1838 @itemize @bullet
1839+@item float32x2_t vadd_f32 (float32x2_t, float32x2_t)
1840+@*@emph{Form of expected instruction(s):} @code{vadd.f32 @var{d0}, @var{d0}, @var{d0}}
1841+@end itemize
1842+
1843+
1844+@itemize @bullet
1845 @item uint64x1_t vadd_u64 (uint64x1_t, uint64x1_t)
1846-@*@emph{Form of expected instruction(s):} @code{vadd.i64 @var{d0}, @var{d0}, @var{d0}}
1847 @end itemize
1848
1849
1850 @itemize @bullet
1851 @item int64x1_t vadd_s64 (int64x1_t, int64x1_t)
1852-@*@emph{Form of expected instruction(s):} @code{vadd.i64 @var{d0}, @var{d0}, @var{d0}}
1853-@end itemize
1854-
1855-
1856-@itemize @bullet
1857-@item float32x2_t vadd_f32 (float32x2_t, float32x2_t)
1858-@*@emph{Form of expected instruction(s):} @code{vadd.f32 @var{d0}, @var{d0}, @var{d0}}
1859 @end itemize
1860
1861
1862@@ -1013,20 +1011,18 @@
1863
1864
1865 @itemize @bullet
1866+@item float32x2_t vsub_f32 (float32x2_t, float32x2_t)
1867+@*@emph{Form of expected instruction(s):} @code{vsub.f32 @var{d0}, @var{d0}, @var{d0}}
1868+@end itemize
1869+
1870+
1871+@itemize @bullet
1872 @item uint64x1_t vsub_u64 (uint64x1_t, uint64x1_t)
1873-@*@emph{Form of expected instruction(s):} @code{vsub.i64 @var{d0}, @var{d0}, @var{d0}}
1874 @end itemize
1875
1876
1877 @itemize @bullet
1878 @item int64x1_t vsub_s64 (int64x1_t, int64x1_t)
1879-@*@emph{Form of expected instruction(s):} @code{vsub.i64 @var{d0}, @var{d0}, @var{d0}}
1880-@end itemize
1881-
1882-
1883-@itemize @bullet
1884-@item float32x2_t vsub_f32 (float32x2_t, float32x2_t)
1885-@*@emph{Form of expected instruction(s):} @code{vsub.f32 @var{d0}, @var{d0}, @var{d0}}
1886 @end itemize
1887
1888
1889@@ -4750,13 +4746,11 @@
1890
1891 @itemize @bullet
1892 @item uint64_t vget_lane_u64 (uint64x1_t, const int)
1893-@*@emph{Form of expected instruction(s):} @code{vmov @var{r0}, @var{r0}, @var{d0}}
1894 @end itemize
1895
1896
1897 @itemize @bullet
1898 @item int64_t vget_lane_s64 (int64x1_t, const int)
1899-@*@emph{Form of expected instruction(s):} @code{vmov @var{r0}, @var{r0}, @var{d0}}
1900 @end itemize
1901
1902
1903@@ -4886,13 +4880,11 @@
1904
1905 @itemize @bullet
1906 @item uint64x1_t vset_lane_u64 (uint64_t, uint64x1_t, const int)
1907-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1908 @end itemize
1909
1910
1911 @itemize @bullet
1912 @item int64x1_t vset_lane_s64 (int64_t, int64x1_t, const int)
1913-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1914 @end itemize
1915
1916
1917@@ -5081,13 +5073,11 @@
1918
1919 @itemize @bullet
1920 @item uint64x1_t vdup_n_u64 (uint64_t)
1921-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1922 @end itemize
1923
1924
1925 @itemize @bullet
1926 @item int64x1_t vdup_n_s64 (int64_t)
1927-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1928 @end itemize
1929
1930
1931@@ -5147,13 +5137,11 @@
1932
1933 @itemize @bullet
1934 @item uint64x2_t vdupq_n_u64 (uint64_t)
1935-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1936 @end itemize
1937
1938
1939 @itemize @bullet
1940 @item int64x2_t vdupq_n_s64 (int64_t)
1941-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1942 @end itemize
1943
1944
1945@@ -5213,13 +5201,11 @@
1946
1947 @itemize @bullet
1948 @item uint64x1_t vmov_n_u64 (uint64_t)
1949-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1950 @end itemize
1951
1952
1953 @itemize @bullet
1954 @item int64x1_t vmov_n_s64 (int64_t)
1955-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1956 @end itemize
1957
1958
1959@@ -5279,13 +5265,11 @@
1960
1961 @itemize @bullet
1962 @item uint64x2_t vmovq_n_u64 (uint64_t)
1963-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1964 @end itemize
1965
1966
1967 @itemize @bullet
1968 @item int64x2_t vmovq_n_s64 (int64_t)
1969-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{r0}, @var{r0}}
1970 @end itemize
1971
1972
1973@@ -5572,18 +5556,6 @@
1974
1975
1976 @itemize @bullet
1977-@item uint64x1_t vget_low_u64 (uint64x2_t)
1978-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}}
1979-@end itemize
1980-
1981-
1982-@itemize @bullet
1983-@item int64x1_t vget_low_s64 (int64x2_t)
1984-@*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}}
1985-@end itemize
1986-
1987-
1988-@itemize @bullet
1989 @item float32x2_t vget_low_f32 (float32x4_t)
1990 @*@emph{Form of expected instruction(s):} @code{vmov @var{d0}, @var{d0}}
1991 @end itemize
1992@@ -5601,6 +5573,16 @@
1993 @end itemize
1994
1995
1996+@itemize @bullet
1997+@item uint64x1_t vget_low_u64 (uint64x2_t)
1998+@end itemize
1999+
2000+
2001+@itemize @bullet
2002+@item int64x1_t vget_low_s64 (int64x2_t)
2003+@end itemize
2004+
2005+
2006
2007
2008 @subsubsection Conversions
2009@@ -9727,13 +9709,11 @@
2010
2011 @itemize @bullet
2012 @item uint64x1_t vand_u64 (uint64x1_t, uint64x1_t)
2013-@*@emph{Form of expected instruction(s):} @code{vand @var{d0}, @var{d0}, @var{d0}}
2014 @end itemize
2015
2016
2017 @itemize @bullet
2018 @item int64x1_t vand_s64 (int64x1_t, int64x1_t)
2019-@*@emph{Form of expected instruction(s):} @code{vand @var{d0}, @var{d0}, @var{d0}}
2020 @end itemize
2021
2022
2023@@ -9827,13 +9807,11 @@
2024
2025 @itemize @bullet
2026 @item uint64x1_t vorr_u64 (uint64x1_t, uint64x1_t)
2027-@*@emph{Form of expected instruction(s):} @code{vorr @var{d0}, @var{d0}, @var{d0}}
2028 @end itemize
2029
2030
2031 @itemize @bullet
2032 @item int64x1_t vorr_s64 (int64x1_t, int64x1_t)
2033-@*@emph{Form of expected instruction(s):} @code{vorr @var{d0}, @var{d0}, @var{d0}}
2034 @end itemize
2035
2036
2037@@ -9927,13 +9905,11 @@
2038
2039 @itemize @bullet
2040 @item uint64x1_t veor_u64 (uint64x1_t, uint64x1_t)
2041-@*@emph{Form of expected instruction(s):} @code{veor @var{d0}, @var{d0}, @var{d0}}
2042 @end itemize
2043
2044
2045 @itemize @bullet
2046 @item int64x1_t veor_s64 (int64x1_t, int64x1_t)
2047-@*@emph{Form of expected instruction(s):} @code{veor @var{d0}, @var{d0}, @var{d0}}
2048 @end itemize
2049
2050
2051@@ -10027,13 +10003,11 @@
2052
2053 @itemize @bullet
2054 @item uint64x1_t vbic_u64 (uint64x1_t, uint64x1_t)
2055-@*@emph{Form of expected instruction(s):} @code{vbic @var{d0}, @var{d0}, @var{d0}}
2056 @end itemize
2057
2058
2059 @itemize @bullet
2060 @item int64x1_t vbic_s64 (int64x1_t, int64x1_t)
2061-@*@emph{Form of expected instruction(s):} @code{vbic @var{d0}, @var{d0}, @var{d0}}
2062 @end itemize
2063
2064
2065@@ -10127,13 +10101,11 @@
2066
2067 @itemize @bullet
2068 @item uint64x1_t vorn_u64 (uint64x1_t, uint64x1_t)
2069-@*@emph{Form of expected instruction(s):} @code{vorn @var{d0}, @var{d0}, @var{d0}}
2070 @end itemize
2071
2072
2073 @itemize @bullet
2074 @item int64x1_t vorn_s64 (int64x1_t, int64x1_t)
2075-@*@emph{Form of expected instruction(s):} @code{vorn @var{d0}, @var{d0}, @var{d0}}
2076 @end itemize
2077
2078
2079
2080=== added file 'gcc/testsuite/gcc.target/arm/neon-vadds64.c'
2081--- old/gcc/testsuite/gcc.target/arm/neon-vadds64.c 1970-01-01 00:00:00 +0000
2082+++ new/gcc/testsuite/gcc.target/arm/neon-vadds64.c 2010-07-29 15:59:12 +0000
2083@@ -0,0 +1,21 @@
2084+/* Test the `vadd_s64' ARM Neon intrinsic. */
2085+
2086+/* { dg-do run } */
2087+/* { dg-require-effective-target arm_neon_hw } */
2088+/* { dg-options "-O0" } */
2089+/* { dg-add-options arm_neon } */
2090+
2091+#include "arm_neon.h"
2092+#include <stdlib.h>
2093+
2094+int main (void)
2095+{
2096+ int64x1_t out_int64x1_t = 0;
2097+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeef00000000LL;
2098+ int64x1_t arg1_int64x1_t = (int64x1_t)0x00000000deadbeefLL;
2099+
2100+ out_int64x1_t = vadd_s64 (arg0_int64x1_t, arg1_int64x1_t);
2101+ if (out_int64x1_t != (int64x1_t)0xdeadbeefdeadbeefLL)
2102+ abort();
2103+ return 0;
2104+}
2105
2106=== added file 'gcc/testsuite/gcc.target/arm/neon-vaddu64.c'
2107--- old/gcc/testsuite/gcc.target/arm/neon-vaddu64.c 1970-01-01 00:00:00 +0000
2108+++ new/gcc/testsuite/gcc.target/arm/neon-vaddu64.c 2010-07-29 15:59:12 +0000
2109@@ -0,0 +1,21 @@
2110+/* Test the `vadd_u64' ARM Neon intrinsic. */
2111+
2112+/* { dg-do run } */
2113+/* { dg-require-effective-target arm_neon_hw } */
2114+/* { dg-options "-O0" } */
2115+/* { dg-add-options arm_neon } */
2116+
2117+#include "arm_neon.h"
2118+#include <stdlib.h>
2119+
2120+int main (void)
2121+{
2122+ uint64x1_t out_uint64x1_t = 0;
2123+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeef00000000LL;
2124+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)0x00000000deadbeefLL;
2125+
2126+ out_uint64x1_t = vadd_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2127+ if (out_uint64x1_t != (uint64x1_t)0xdeadbeefdeadbeefLL)
2128+ abort();
2129+ return 0;
2130+}
2131
2132=== added file 'gcc/testsuite/gcc.target/arm/neon-vands64.c'
2133--- old/gcc/testsuite/gcc.target/arm/neon-vands64.c 1970-01-01 00:00:00 +0000
2134+++ new/gcc/testsuite/gcc.target/arm/neon-vands64.c 2010-07-29 15:59:12 +0000
2135@@ -0,0 +1,21 @@
2136+/* Test the `vand_s64' ARM Neon intrinsic. */
2137+
2138+/* { dg-do run } */
2139+/* { dg-require-effective-target arm_neon_hw } */
2140+/* { dg-options "-O0" } */
2141+/* { dg-add-options arm_neon } */
2142+
2143+#include "arm_neon.h"
2144+#include <stdlib.h>
2145+
2146+int main (void)
2147+{
2148+ int64x1_t out_int64x1_t = 0;
2149+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeef00000000LL;
2150+ int64x1_t arg1_int64x1_t = (int64x1_t)0xdead00000000beefLL;
2151+
2152+ out_int64x1_t = vand_s64 (arg0_int64x1_t, arg1_int64x1_t);
2153+ if (out_int64x1_t != (int64x1_t)0xdead000000000000LL)
2154+ abort();
2155+ return 0;
2156+}
2157
2158=== added file 'gcc/testsuite/gcc.target/arm/neon-vandu64.c'
2159--- old/gcc/testsuite/gcc.target/arm/neon-vandu64.c 1970-01-01 00:00:00 +0000
2160+++ new/gcc/testsuite/gcc.target/arm/neon-vandu64.c 2010-07-29 15:59:12 +0000
2161@@ -0,0 +1,21 @@
2162+/* Test the `vand_u64' ARM Neon intrinsic. */
2163+
2164+/* { dg-do run } */
2165+/* { dg-require-effective-target arm_neon_hw } */
2166+/* { dg-options "-O0" } */
2167+/* { dg-add-options arm_neon } */
2168+
2169+#include "arm_neon.h"
2170+#include <stdlib.h>
2171+
2172+int main (void)
2173+{
2174+ uint64x1_t out_uint64x1_t = 0;
2175+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeef00000000LL;
2176+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)0xdead00000000beefLL;
2177+
2178+ out_uint64x1_t = vand_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2179+ if (out_uint64x1_t != (uint64x1_t)0xdead000000000000LL)
2180+ abort();
2181+ return 0;
2182+}
2183
2184=== added file 'gcc/testsuite/gcc.target/arm/neon-vbics64.c'
2185--- old/gcc/testsuite/gcc.target/arm/neon-vbics64.c 1970-01-01 00:00:00 +0000
2186+++ new/gcc/testsuite/gcc.target/arm/neon-vbics64.c 2010-07-29 15:59:12 +0000
2187@@ -0,0 +1,21 @@
2188+/* Test the `vbic_s64' ARM Neon intrinsic. */
2189+
2190+/* { dg-do run } */
2191+/* { dg-require-effective-target arm_neon_hw } */
2192+/* { dg-options "-O0" } */
2193+/* { dg-add-options arm_neon } */
2194+
2195+#include "arm_neon.h"
2196+#include <stdlib.h>
2197+
2198+int main (void)
2199+{
2200+ int64x1_t out_int64x1_t = 0;
2201+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeef00000000LL;
2202+ int64x1_t arg1_int64x1_t = (int64x1_t)(~0xdead00000000beefLL);
2203+
2204+ out_int64x1_t = vbic_s64 (arg0_int64x1_t, arg1_int64x1_t);
2205+ if (out_int64x1_t != (int64x1_t)0xdead000000000000LL)
2206+ abort();
2207+ return 0;
2208+}
2209
2210=== added file 'gcc/testsuite/gcc.target/arm/neon-vbicu64.c'
2211--- old/gcc/testsuite/gcc.target/arm/neon-vbicu64.c 1970-01-01 00:00:00 +0000
2212+++ new/gcc/testsuite/gcc.target/arm/neon-vbicu64.c 2010-07-29 15:59:12 +0000
2213@@ -0,0 +1,21 @@
2214+/* Test the `vbic_u64' ARM Neon intrinsic. */
2215+
2216+/* { dg-do run } */
2217+/* { dg-require-effective-target arm_neon_hw } */
2218+/* { dg-options "-O0" } */
2219+/* { dg-add-options arm_neon } */
2220+
2221+#include "arm_neon.h"
2222+#include <stdlib.h>
2223+
2224+int main (void)
2225+{
2226+ uint64x1_t out_uint64x1_t = 0;
2227+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeef00000000LL;
2228+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)(~0xdead00000000beefLL);
2229+
2230+ out_uint64x1_t = vbic_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2231+ if (out_uint64x1_t != (uint64x1_t)0xdead000000000000LL)
2232+ abort();
2233+ return 0;
2234+}
2235
2236=== added file 'gcc/testsuite/gcc.target/arm/neon-vdupQ_lanes64.c'
2237--- old/gcc/testsuite/gcc.target/arm/neon-vdupQ_lanes64.c 1970-01-01 00:00:00 +0000
2238+++ new/gcc/testsuite/gcc.target/arm/neon-vdupQ_lanes64.c 2010-07-29 15:59:12 +0000
2239@@ -0,0 +1,22 @@
2240+/* Test the `vdupq_lanes64' ARM Neon intrinsic. */
2241+
2242+/* { dg-do run } */
2243+/* { dg-require-effective-target arm_neon_hw } */
2244+/* { dg-options "-O0" } */
2245+/* { dg-add-options arm_neon } */
2246+
2247+#include "arm_neon.h"
2248+#include <stdlib.h>
2249+
2250+int main (void)
2251+{
2252+ int64x2_t out_int64x2_t = {0, 0};
2253+ int64_t arg0_int64_t = (int64_t) 0xdeadbeef;
2254+
2255+ out_int64x2_t = vdupq_lane_s64 ((int64x1_t)arg0_int64_t, 0);
2256+ if (vgetq_lane_s64 (out_int64x2_t, 0) != arg0_int64_t)
2257+ abort();
2258+ if (vgetq_lane_s64 (out_int64x2_t, 1) != arg0_int64_t)
2259+ abort();
2260+ return 0;
2261+}
2262
2263=== added file 'gcc/testsuite/gcc.target/arm/neon-vdupQ_laneu64.c'
2264--- old/gcc/testsuite/gcc.target/arm/neon-vdupQ_laneu64.c 1970-01-01 00:00:00 +0000
2265+++ new/gcc/testsuite/gcc.target/arm/neon-vdupQ_laneu64.c 2010-07-29 15:59:12 +0000
2266@@ -0,0 +1,22 @@
2267+/* Test the `vdupq_laneu64' ARM Neon intrinsic. */
2268+
2269+/* { dg-do run } */
2270+/* { dg-require-effective-target arm_neon_hw } */
2271+/* { dg-options "-O0" } */
2272+/* { dg-add-options arm_neon } */
2273+
2274+#include "arm_neon.h"
2275+#include <stdlib.h>
2276+
2277+int main (void)
2278+{
2279+ uint64x2_t out_uint64x2_t = {0, 0};
2280+ uint64_t arg0_uint64_t = (uint64_t) 0xdeadbeef;
2281+
2282+ out_uint64x2_t = vdupq_lane_u64 ((uint64x1_t)arg0_uint64_t, 0);
2283+ if (vgetq_lane_u64 (out_uint64x2_t, 0) != arg0_uint64_t)
2284+ abort();
2285+ if (vgetq_lane_u64 (out_uint64x2_t, 1) != arg0_uint64_t)
2286+ abort();
2287+ return 0;
2288+}
2289
2290=== added file 'gcc/testsuite/gcc.target/arm/neon-vdupQ_ns64.c'
2291--- old/gcc/testsuite/gcc.target/arm/neon-vdupQ_ns64.c 1970-01-01 00:00:00 +0000
2292+++ new/gcc/testsuite/gcc.target/arm/neon-vdupQ_ns64.c 2010-07-29 15:59:12 +0000
2293@@ -0,0 +1,22 @@
2294+/* Test the `vdupq_ns64' ARM Neon intrinsic. */
2295+
2296+/* { dg-do run } */
2297+/* { dg-require-effective-target arm_neon_hw } */
2298+/* { dg-options "-O0" } */
2299+/* { dg-add-options arm_neon } */
2300+
2301+#include "arm_neon.h"
2302+#include <stdlib.h>
2303+
2304+int main (void)
2305+{
2306+ int64x2_t out_int64x2_t = {0, 0};
2307+ int64_t arg0_int64_t = (int64_t) 0xdeadbeef;
2308+
2309+ out_int64x2_t = vdupq_n_s64 (arg0_int64_t);
2310+ if (vgetq_lane_s64 (out_int64x2_t, 0) != arg0_int64_t)
2311+ abort();
2312+ if (vgetq_lane_s64 (out_int64x2_t, 1) != arg0_int64_t)
2313+ abort();
2314+ return 0;
2315+}
2316
2317=== added file 'gcc/testsuite/gcc.target/arm/neon-vdupQ_nu64.c'
2318--- old/gcc/testsuite/gcc.target/arm/neon-vdupQ_nu64.c 1970-01-01 00:00:00 +0000
2319+++ new/gcc/testsuite/gcc.target/arm/neon-vdupQ_nu64.c 2010-07-29 15:59:12 +0000
2320@@ -0,0 +1,22 @@
2321+/* Test the `vdupq_nu64' ARM Neon intrinsic. */
2322+
2323+/* { dg-do run } */
2324+/* { dg-require-effective-target arm_neon_hw } */
2325+/* { dg-options "-O0" } */
2326+/* { dg-add-options arm_neon } */
2327+
2328+#include "arm_neon.h"
2329+#include <stdlib.h>
2330+
2331+int main (void)
2332+{
2333+ uint64x2_t out_uint64x2_t = {0, 0};
2334+ uint64_t arg0_uint64_t = (uint64_t) 0xdeadbeef;
2335+
2336+ out_uint64x2_t = vdupq_n_u64 (arg0_uint64_t);
2337+ if (vgetq_lane_u64 (out_uint64x2_t, 0) != arg0_uint64_t)
2338+ abort();
2339+ if (vgetq_lane_u64 (out_uint64x2_t, 1) != arg0_uint64_t)
2340+ abort();
2341+ return 0;
2342+}
2343
2344=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup_ns64.c'
2345--- old/gcc/testsuite/gcc.target/arm/neon-vdup_ns64.c 1970-01-01 00:00:00 +0000
2346+++ new/gcc/testsuite/gcc.target/arm/neon-vdup_ns64.c 2010-07-29 15:59:12 +0000
2347@@ -0,0 +1,20 @@
2348+/* Test the `vdup_ns64' ARM Neon intrinsic. */
2349+
2350+/* { dg-do run } */
2351+/* { dg-require-effective-target arm_neon_hw } */
2352+/* { dg-options "-O0" } */
2353+/* { dg-add-options arm_neon } */
2354+
2355+#include "arm_neon.h"
2356+#include <stdlib.h>
2357+
2358+int main (void)
2359+{
2360+ int64x1_t out_int64x1_t = 0;
2361+ int64_t arg0_int64_t = (int64_t) 0xdeadbeef;
2362+
2363+ out_int64x1_t = vdup_n_s64 (arg0_int64_t);
2364+ if ((int64_t)out_int64x1_t != arg0_int64_t)
2365+ abort();
2366+ return 0;
2367+}
2368
2369=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup_nu64.c'
2370--- old/gcc/testsuite/gcc.target/arm/neon-vdup_nu64.c 1970-01-01 00:00:00 +0000
2371+++ new/gcc/testsuite/gcc.target/arm/neon-vdup_nu64.c 2010-07-29 15:59:12 +0000
2372@@ -0,0 +1,20 @@
2373+/* Test the `vdup_nu64' ARM Neon intrinsic. */
2374+
2375+/* { dg-do run } */
2376+/* { dg-require-effective-target arm_neon_hw } */
2377+/* { dg-options "-O0" } */
2378+/* { dg-add-options arm_neon } */
2379+
2380+#include "arm_neon.h"
2381+#include <stdlib.h>
2382+
2383+int main (void)
2384+{
2385+ uint64x1_t out_uint64x1_t = 0;
2386+ uint64_t arg0_uint64_t = (uint64_t) 0xdeadbeef;
2387+
2388+ out_uint64x1_t = vdup_n_u64 (arg0_uint64_t);
2389+ if ((uint64_t)out_uint64x1_t != arg0_uint64_t)
2390+ abort();
2391+ return 0;
2392+}
2393
2394=== added file 'gcc/testsuite/gcc.target/arm/neon-veors64.c'
2395--- old/gcc/testsuite/gcc.target/arm/neon-veors64.c 1970-01-01 00:00:00 +0000
2396+++ new/gcc/testsuite/gcc.target/arm/neon-veors64.c 2010-07-29 15:59:12 +0000
2397@@ -0,0 +1,21 @@
2398+/* Test the `veor_s64' ARM Neon intrinsic. */
2399+
2400+/* { dg-do run } */
2401+/* { dg-require-effective-target arm_neon_hw } */
2402+/* { dg-options "-O0" } */
2403+/* { dg-add-options arm_neon } */
2404+
2405+#include "arm_neon.h"
2406+#include <stdlib.h>
2407+
2408+int main (void)
2409+{
2410+ int64x1_t out_int64x1_t = 0;
2411+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeef00000000LL;
2412+ int64x1_t arg1_int64x1_t = (int64x1_t)0xdead00000000beefLL;
2413+
2414+ out_int64x1_t = veor_s64 (arg0_int64x1_t, arg1_int64x1_t);
2415+ if (out_int64x1_t != (int64x1_t)0x0000beef0000beefLL)
2416+ abort();
2417+ return 0;
2418+}
2419
2420=== added file 'gcc/testsuite/gcc.target/arm/neon-veoru64.c'
2421--- old/gcc/testsuite/gcc.target/arm/neon-veoru64.c 1970-01-01 00:00:00 +0000
2422+++ new/gcc/testsuite/gcc.target/arm/neon-veoru64.c 2010-07-29 15:59:12 +0000
2423@@ -0,0 +1,21 @@
2424+/* Test the `veor_u64' ARM Neon intrinsic. */
2425+
2426+/* { dg-do run } */
2427+/* { dg-require-effective-target arm_neon_hw } */
2428+/* { dg-options "-O0" } */
2429+/* { dg-add-options arm_neon } */
2430+
2431+#include "arm_neon.h"
2432+#include <stdlib.h>
2433+
2434+int main (void)
2435+{
2436+ uint64x1_t out_uint64x1_t = 0;
2437+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeef00000000LL;
2438+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)0xdead00000000beefLL;
2439+
2440+ out_uint64x1_t = veor_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2441+ if (out_uint64x1_t != (uint64x1_t)0x0000beef0000beefLL)
2442+ abort();
2443+ return 0;
2444+}
2445
2446=== added file 'gcc/testsuite/gcc.target/arm/neon-vget_lanes64.c'
2447--- old/gcc/testsuite/gcc.target/arm/neon-vget_lanes64.c 1970-01-01 00:00:00 +0000
2448+++ new/gcc/testsuite/gcc.target/arm/neon-vget_lanes64.c 2010-07-29 15:59:12 +0000
2449@@ -0,0 +1,20 @@
2450+/* Test the `vget_lane_s64' ARM Neon intrinsic. */
2451+
2452+/* { dg-do run } */
2453+/* { dg-require-effective-target arm_neon_hw } */
2454+/* { dg-options "-O0" } */
2455+/* { dg-add-options arm_neon } */
2456+
2457+#include "arm_neon.h"
2458+#include <stdlib.h>
2459+
2460+int main (void)
2461+{
2462+ int64_t out_int64_t = 0;
2463+ int64x1_t arg0_int64x1_t = (int64x1_t) 0xdeadbeefbadf00dLL;
2464+
2465+ out_int64_t = vget_lane_s64 (arg0_int64x1_t, 0);
2466+ if (out_int64_t != (int64_t)arg0_int64x1_t)
2467+ abort();
2468+ return 0;
2469+}
2470
2471=== added file 'gcc/testsuite/gcc.target/arm/neon-vget_laneu64.c'
2472--- old/gcc/testsuite/gcc.target/arm/neon-vget_laneu64.c 1970-01-01 00:00:00 +0000
2473+++ new/gcc/testsuite/gcc.target/arm/neon-vget_laneu64.c 2010-07-29 15:59:12 +0000
2474@@ -0,0 +1,20 @@
2475+/* Test the `vget_lane_u64' ARM Neon intrinsic. */
2476+
2477+/* { dg-do run } */
2478+/* { dg-require-effective-target arm_neon_hw } */
2479+/* { dg-options "-O0" } */
2480+/* { dg-add-options arm_neon } */
2481+
2482+#include "arm_neon.h"
2483+#include <stdlib.h>
2484+
2485+int main (void)
2486+{
2487+ uint64_t out_uint64_t = 0;
2488+ uint64x1_t arg0_uint64x1_t = (uint64x1_t) 0xdeadbeefbadf00dLL;
2489+
2490+ out_uint64_t = vget_lane_u64 (arg0_uint64x1_t, 0);
2491+ if (out_uint64_t != (uint64_t)arg0_uint64x1_t)
2492+ abort();
2493+ return 0;
2494+}
2495
2496=== modified file 'gcc/testsuite/gcc.target/arm/neon-vmla-1.c'
2497--- old/gcc/testsuite/gcc.target/arm/neon-vmla-1.c 2010-07-29 15:38:15 +0000
2498+++ new/gcc/testsuite/gcc.target/arm/neon-vmla-1.c 2010-07-29 15:59:12 +0000
2499@@ -1,5 +1,5 @@
2500 /* { dg-require-effective-target arm_neon_hw } */
2501-/* { dg-options "-O2 -ftree-vectorize" } */
2502+/* { dg-options "-O2 -ftree-vectorize -ffast-math" } */
2503 /* { dg-add-options arm_neon } */
2504 /* { dg-final { scan-assembler "vmla\\.f32" } } */
2505
2506
2507=== modified file 'gcc/testsuite/gcc.target/arm/neon-vmls-1.c'
2508--- old/gcc/testsuite/gcc.target/arm/neon-vmls-1.c 2010-07-29 15:38:15 +0000
2509+++ new/gcc/testsuite/gcc.target/arm/neon-vmls-1.c 2010-07-29 15:59:12 +0000
2510@@ -1,5 +1,5 @@
2511 /* { dg-require-effective-target arm_neon_hw } */
2512-/* { dg-options "-O2 -ftree-vectorize" } */
2513+/* { dg-options "-O2 -ftree-vectorize -ffast-math" } */
2514 /* { dg-add-options arm_neon } */
2515 /* { dg-final { scan-assembler "vmls\\.f32" } } */
2516
2517
2518=== added file 'gcc/testsuite/gcc.target/arm/neon-vmovQ_ns64.c'
2519--- old/gcc/testsuite/gcc.target/arm/neon-vmovQ_ns64.c 1970-01-01 00:00:00 +0000
2520+++ new/gcc/testsuite/gcc.target/arm/neon-vmovQ_ns64.c 2010-07-29 15:59:12 +0000
2521@@ -0,0 +1,22 @@
2522+/* Test the `vmovq_ns64' ARM Neon intrinsic. */
2523+
2524+/* { dg-do run } */
2525+/* { dg-require-effective-target arm_neon_hw } */
2526+/* { dg-options "-O0" } */
2527+/* { dg-add-options arm_neon } */
2528+
2529+#include "arm_neon.h"
2530+#include <stdlib.h>
2531+
2532+int main (void)
2533+{
2534+ int64x2_t out_int64x2_t = {0, 0};
2535+ int64_t arg0_int64_t = (int64_t) 0xdeadbeef;
2536+
2537+ out_int64x2_t = vmovq_n_s64 (arg0_int64_t);
2538+ if (vgetq_lane_s64 (out_int64x2_t, 0) != arg0_int64_t)
2539+ abort();
2540+ if (vgetq_lane_s64 (out_int64x2_t, 1) != arg0_int64_t)
2541+ abort();
2542+ return 0;
2543+}
2544
2545=== added file 'gcc/testsuite/gcc.target/arm/neon-vmovQ_nu64.c'
2546--- old/gcc/testsuite/gcc.target/arm/neon-vmovQ_nu64.c 1970-01-01 00:00:00 +0000
2547+++ new/gcc/testsuite/gcc.target/arm/neon-vmovQ_nu64.c 2010-07-29 15:59:12 +0000
2548@@ -0,0 +1,23 @@
2549+/* Test the `vmovq_nu64' ARM Neon intrinsic. */
2550+
2551+/* { dg-do run } */
2552+/* { dg-require-effective-target arm_neon_hw } */
2553+/* { dg-options "-O0" } */
2554+/* { dg-add-options arm_neon } */
2555+
2556+#include "arm_neon.h"
2557+#include <stdlib.h>
2558+
2559+int main (void)
2560+{
2561+ uint64x2_t out_uint64x2_t = {0, 0};
2562+ uint64_t arg0_uint64_t = (uint64_t) 0xdeadbeef;
2563+
2564+ out_uint64x2_t = vmovq_n_u64 (arg0_uint64_t);
2565+ if (vgetq_lane_u64 (out_uint64x2_t, 0) != arg0_uint64_t)
2566+ abort();
2567+ if (vgetq_lane_u64 (out_uint64x2_t, 1) != arg0_uint64_t)
2568+ abort();
2569+ return 0;
2570+}
2571+
2572
2573=== added file 'gcc/testsuite/gcc.target/arm/neon-vmov_ns64.c'
2574--- old/gcc/testsuite/gcc.target/arm/neon-vmov_ns64.c 1970-01-01 00:00:00 +0000
2575+++ new/gcc/testsuite/gcc.target/arm/neon-vmov_ns64.c 2010-07-29 15:59:12 +0000
2576@@ -0,0 +1,20 @@
2577+/* Test the `vmov_ns64' ARM Neon intrinsic. */
2578+
2579+/* { dg-do run } */
2580+/* { dg-require-effective-target arm_neon_hw } */
2581+/* { dg-options "-O0" } */
2582+/* { dg-add-options arm_neon } */
2583+
2584+#include "arm_neon.h"
2585+#include <stdlib.h>
2586+
2587+int main (void)
2588+{
2589+ int64x1_t out_int64x1_t = 0;
2590+ int64_t arg0_int64_t = (int64_t) 0xdeadbeef;
2591+
2592+ out_int64x1_t = vmov_n_s64 (arg0_int64_t);
2593+ if ((int64_t)out_int64x1_t != arg0_int64_t)
2594+ abort();
2595+ return 0;
2596+}
2597
2598=== added file 'gcc/testsuite/gcc.target/arm/neon-vmov_nu64.c'
2599--- old/gcc/testsuite/gcc.target/arm/neon-vmov_nu64.c 1970-01-01 00:00:00 +0000
2600+++ new/gcc/testsuite/gcc.target/arm/neon-vmov_nu64.c 2010-07-29 15:59:12 +0000
2601@@ -0,0 +1,20 @@
2602+/* Test the `vmov_nu64' ARM Neon intrinsic. */
2603+
2604+/* { dg-do run } */
2605+/* { dg-require-effective-target arm_neon_hw } */
2606+/* { dg-options "-O0" } */
2607+/* { dg-add-options arm_neon } */
2608+
2609+#include "arm_neon.h"
2610+#include <stdlib.h>
2611+
2612+int main (void)
2613+{
2614+ uint64x1_t out_uint64x1_t = 0;
2615+ uint64_t arg0_uint64_t = (uint64_t) 0xdeadbeef;
2616+
2617+ out_uint64x1_t = vmov_n_u64 (arg0_uint64_t);
2618+ if ((uint64_t)out_uint64x1_t != arg0_uint64_t)
2619+ abort();
2620+ return 0;
2621+}
2622
2623=== added file 'gcc/testsuite/gcc.target/arm/neon-vorns64.c'
2624--- old/gcc/testsuite/gcc.target/arm/neon-vorns64.c 1970-01-01 00:00:00 +0000
2625+++ new/gcc/testsuite/gcc.target/arm/neon-vorns64.c 2010-07-29 15:59:12 +0000
2626@@ -0,0 +1,21 @@
2627+/* Test the `vorn_s64' ARM Neon intrinsic. */
2628+
2629+/* { dg-do run } */
2630+/* { dg-require-effective-target arm_neon_hw } */
2631+/* { dg-options "-O0" } */
2632+/* { dg-add-options arm_neon } */
2633+
2634+#include "arm_neon.h"
2635+#include <stdlib.h>
2636+
2637+int main (void)
2638+{
2639+ int64x1_t out_int64x1_t = 0;
2640+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeef00000000LL;
2641+ int64x1_t arg1_int64x1_t = (int64x1_t)(~0xdead00000000beefLL);
2642+
2643+ out_int64x1_t = vorn_s64 (arg0_int64x1_t, arg1_int64x1_t);
2644+ if (out_int64x1_t != (int64x1_t)0xdeadbeef0000beefLL)
2645+ abort();
2646+ return 0;
2647+}
2648
2649=== added file 'gcc/testsuite/gcc.target/arm/neon-vornu64.c'
2650--- old/gcc/testsuite/gcc.target/arm/neon-vornu64.c 1970-01-01 00:00:00 +0000
2651+++ new/gcc/testsuite/gcc.target/arm/neon-vornu64.c 2010-07-29 15:59:12 +0000
2652@@ -0,0 +1,21 @@
2653+/* Test the `vorn_u64' ARM Neon intrinsic. */
2654+
2655+/* { dg-do run } */
2656+/* { dg-require-effective-target arm_neon_hw } */
2657+/* { dg-options "-O0" } */
2658+/* { dg-add-options arm_neon } */
2659+
2660+#include "arm_neon.h"
2661+#include <stdlib.h>
2662+
2663+int main (void)
2664+{
2665+ uint64x1_t out_uint64x1_t = 0;
2666+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeef00000000LL;
2667+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)(~0xdead00000000beefLL);
2668+
2669+ out_uint64x1_t = vorn_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2670+ if (out_uint64x1_t != (uint64x1_t)0xdeadbeef0000beefLL)
2671+ abort();
2672+ return 0;
2673+}
2674
2675=== added file 'gcc/testsuite/gcc.target/arm/neon-vorrs64.c'
2676--- old/gcc/testsuite/gcc.target/arm/neon-vorrs64.c 1970-01-01 00:00:00 +0000
2677+++ new/gcc/testsuite/gcc.target/arm/neon-vorrs64.c 2010-07-29 15:59:12 +0000
2678@@ -0,0 +1,21 @@
2679+/* Test the `vorr_s64' ARM Neon intrinsic. */
2680+
2681+/* { dg-do run } */
2682+/* { dg-require-effective-target arm_neon_hw } */
2683+/* { dg-options "-O0" } */
2684+/* { dg-add-options arm_neon } */
2685+
2686+#include "arm_neon.h"
2687+#include <stdlib.h>
2688+
2689+int main (void)
2690+{
2691+ int64x1_t out_int64x1_t = 0;
2692+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeef00000000LL;
2693+ int64x1_t arg1_int64x1_t = (int64x1_t)0xdead00000000beefLL;
2694+
2695+ out_int64x1_t = vorr_s64 (arg0_int64x1_t, arg1_int64x1_t);
2696+ if (out_int64x1_t != (int64x1_t)0xdeadbeef0000beefLL)
2697+ abort();
2698+ return 0;
2699+}
2700
2701=== added file 'gcc/testsuite/gcc.target/arm/neon-vorru64.c'
2702--- old/gcc/testsuite/gcc.target/arm/neon-vorru64.c 1970-01-01 00:00:00 +0000
2703+++ new/gcc/testsuite/gcc.target/arm/neon-vorru64.c 2010-07-29 15:59:12 +0000
2704@@ -0,0 +1,21 @@
2705+/* Test the `vorr_u64' ARM Neon intrinsic. */
2706+
2707+/* { dg-do run } */
2708+/* { dg-require-effective-target arm_neon_hw } */
2709+/* { dg-options "-O0" } */
2710+/* { dg-add-options arm_neon } */
2711+
2712+#include "arm_neon.h"
2713+#include <stdlib.h>
2714+
2715+int main (void)
2716+{
2717+ uint64x1_t out_uint64x1_t = 0;
2718+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeef00000000LL;
2719+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)0xdead00000000beefLL;
2720+
2721+ out_uint64x1_t = vorr_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2722+ if (out_uint64x1_t != (uint64x1_t)0xdeadbeef0000beefLL)
2723+ abort();
2724+ return 0;
2725+}
2726
2727=== added file 'gcc/testsuite/gcc.target/arm/neon-vset_lanes64.c'
2728--- old/gcc/testsuite/gcc.target/arm/neon-vset_lanes64.c 1970-01-01 00:00:00 +0000
2729+++ new/gcc/testsuite/gcc.target/arm/neon-vset_lanes64.c 2010-07-29 15:59:12 +0000
2730@@ -0,0 +1,21 @@
2731+/* Test the `vset_lane_s64' ARM Neon intrinsic. */
2732+
2733+/* { dg-do run } */
2734+/* { dg-require-effective-target arm_neon_hw } */
2735+/* { dg-options "-O0" } */
2736+/* { dg-add-options arm_neon } */
2737+
2738+#include "arm_neon.h"
2739+#include <stdlib.h>
2740+
2741+int main (void)
2742+{
2743+ int64x1_t out_int64x1_t = 0;
2744+ int64_t arg0_int64_t = 0xf00f00f00LL;
2745+ int64x1_t arg1_int64x1_t = (int64x1_t) 0xdeadbeefbadf00dLL;
2746+
2747+ out_int64x1_t = vset_lane_s64 (arg0_int64_t, arg1_int64x1_t, 0);
2748+ if ((int64_t)out_int64x1_t != arg0_int64_t)
2749+ abort();
2750+ return 0;
2751+}
2752
2753=== added file 'gcc/testsuite/gcc.target/arm/neon-vset_laneu64.c'
2754--- old/gcc/testsuite/gcc.target/arm/neon-vset_laneu64.c 1970-01-01 00:00:00 +0000
2755+++ new/gcc/testsuite/gcc.target/arm/neon-vset_laneu64.c 2010-07-29 15:59:12 +0000
2756@@ -0,0 +1,21 @@
2757+/* Test the `vset_lane_s64' ARM Neon intrinsic. */
2758+
2759+/* { dg-do run } */
2760+/* { dg-require-effective-target arm_neon_hw } */
2761+/* { dg-options "-O0" } */
2762+/* { dg-add-options arm_neon } */
2763+
2764+#include "arm_neon.h"
2765+#include <stdlib.h>
2766+
2767+int main (void)
2768+{
2769+ uint64x1_t out_uint64x1_t = 0;
2770+ uint64_t arg0_uint64_t = 0xf00f00f00LL;
2771+ uint64x1_t arg1_uint64x1_t = (uint64x1_t) 0xdeadbeefbadf00dLL;
2772+
2773+ out_uint64x1_t = vset_lane_u64 (arg0_uint64_t, arg1_uint64x1_t, 0);
2774+ if ((uint64_t)out_uint64x1_t != arg0_uint64_t)
2775+ abort();
2776+ return 0;
2777+}
2778
2779=== added file 'gcc/testsuite/gcc.target/arm/neon-vsubs64.c'
2780--- old/gcc/testsuite/gcc.target/arm/neon-vsubs64.c 1970-01-01 00:00:00 +0000
2781+++ new/gcc/testsuite/gcc.target/arm/neon-vsubs64.c 2010-07-29 15:59:12 +0000
2782@@ -0,0 +1,21 @@
2783+/* Test the `vsub_s64' ARM Neon intrinsic. */
2784+
2785+/* { dg-do run } */
2786+/* { dg-require-effective-target arm_neon_hw } */
2787+/* { dg-options "-O0" } */
2788+/* { dg-add-options arm_neon } */
2789+
2790+#include "arm_neon.h"
2791+#include <stdlib.h>
2792+
2793+int main (void)
2794+{
2795+ int64x1_t out_int64x1_t = 0;
2796+ int64x1_t arg0_int64x1_t = (int64x1_t)0xdeadbeefdeadbeefLL;
2797+ int64x1_t arg1_int64x1_t = (int64x1_t)0x0000beefdead0000LL;
2798+
2799+ out_int64x1_t = vsub_s64 (arg0_int64x1_t, arg1_int64x1_t);
2800+ if (out_int64x1_t != (int64x1_t)0xdead00000000beefLL)
2801+ abort();
2802+ return 0;
2803+}
2804
2805=== added file 'gcc/testsuite/gcc.target/arm/neon-vsubu64.c'
2806--- old/gcc/testsuite/gcc.target/arm/neon-vsubu64.c 1970-01-01 00:00:00 +0000
2807+++ new/gcc/testsuite/gcc.target/arm/neon-vsubu64.c 2010-07-29 15:59:12 +0000
2808@@ -0,0 +1,21 @@
2809+/* Test the `vsub_u64' ARM Neon intrinsic. */
2810+
2811+/* { dg-do run } */
2812+/* { dg-require-effective-target arm_neon_hw } */
2813+/* { dg-options "-O0" } */
2814+/* { dg-add-options arm_neon } */
2815+
2816+#include "arm_neon.h"
2817+#include <stdlib.h>
2818+
2819+int main (void)
2820+{
2821+ uint64x1_t out_uint64x1_t = 0;
2822+ uint64x1_t arg0_uint64x1_t = (uint64x1_t)0xdeadbeefdeadbeefLL;
2823+ uint64x1_t arg1_uint64x1_t = (uint64x1_t)0x0000beefdead0000LL;
2824+
2825+ out_uint64x1_t = vsub_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2826+ if (out_uint64x1_t != (uint64x1_t)0xdead00000000beefLL)
2827+ abort();
2828+ return 0;
2829+}
2830
2831=== modified file 'gcc/testsuite/gcc.target/arm/neon/vadds64.c'
2832--- old/gcc/testsuite/gcc.target/arm/neon/vadds64.c 2010-07-29 15:38:15 +0000
2833+++ new/gcc/testsuite/gcc.target/arm/neon/vadds64.c 2010-07-29 15:59:12 +0000
2834@@ -17,5 +17,4 @@
2835 out_int64x1_t = vadd_s64 (arg0_int64x1_t, arg1_int64x1_t);
2836 }
2837
2838-/* { dg-final { scan-assembler "vadd\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2839 /* { dg-final { cleanup-saved-temps } } */
2840
2841=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddu64.c'
2842--- old/gcc/testsuite/gcc.target/arm/neon/vaddu64.c 2010-07-29 15:38:15 +0000
2843+++ new/gcc/testsuite/gcc.target/arm/neon/vaddu64.c 2010-07-29 15:59:12 +0000
2844@@ -17,5 +17,4 @@
2845 out_uint64x1_t = vadd_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2846 }
2847
2848-/* { dg-final { scan-assembler "vadd\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2849 /* { dg-final { cleanup-saved-temps } } */
2850
2851=== modified file 'gcc/testsuite/gcc.target/arm/neon/vands64.c'
2852--- old/gcc/testsuite/gcc.target/arm/neon/vands64.c 2010-07-29 15:38:15 +0000
2853+++ new/gcc/testsuite/gcc.target/arm/neon/vands64.c 2010-07-29 15:59:12 +0000
2854@@ -17,5 +17,4 @@
2855 out_int64x1_t = vand_s64 (arg0_int64x1_t, arg1_int64x1_t);
2856 }
2857
2858-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2859 /* { dg-final { cleanup-saved-temps } } */
2860
2861=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandu64.c'
2862--- old/gcc/testsuite/gcc.target/arm/neon/vandu64.c 2010-07-29 15:38:15 +0000
2863+++ new/gcc/testsuite/gcc.target/arm/neon/vandu64.c 2010-07-29 15:59:12 +0000
2864@@ -17,5 +17,4 @@
2865 out_uint64x1_t = vand_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2866 }
2867
2868-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2869 /* { dg-final { cleanup-saved-temps } } */
2870
2871=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbics64.c'
2872--- old/gcc/testsuite/gcc.target/arm/neon/vbics64.c 2010-07-29 15:38:15 +0000
2873+++ new/gcc/testsuite/gcc.target/arm/neon/vbics64.c 2010-07-29 15:59:12 +0000
2874@@ -17,5 +17,4 @@
2875 out_int64x1_t = vbic_s64 (arg0_int64x1_t, arg1_int64x1_t);
2876 }
2877
2878-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2879 /* { dg-final { cleanup-saved-temps } } */
2880
2881=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicu64.c'
2882--- old/gcc/testsuite/gcc.target/arm/neon/vbicu64.c 2010-07-29 15:38:15 +0000
2883+++ new/gcc/testsuite/gcc.target/arm/neon/vbicu64.c 2010-07-29 15:59:12 +0000
2884@@ -17,5 +17,4 @@
2885 out_uint64x1_t = vbic_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2886 }
2887
2888-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2889 /* { dg-final { cleanup-saved-temps } } */
2890
2891=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c'
2892--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c 2010-07-29 15:38:15 +0000
2893+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c 2010-07-29 15:59:12 +0000
2894@@ -16,6 +16,4 @@
2895 out_int64x2_t = vdupq_n_s64 (arg0_int64_t);
2896 }
2897
2898-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2899-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2900 /* { dg-final { cleanup-saved-temps } } */
2901
2902=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c'
2903--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c 2010-07-29 15:38:15 +0000
2904+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c 2010-07-29 15:59:12 +0000
2905@@ -16,6 +16,4 @@
2906 out_uint64x2_t = vdupq_n_u64 (arg0_uint64_t);
2907 }
2908
2909-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2910-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2911 /* { dg-final { cleanup-saved-temps } } */
2912
2913=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c'
2914--- old/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c 2010-07-29 15:38:15 +0000
2915+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c 2010-07-29 15:59:12 +0000
2916@@ -16,5 +16,4 @@
2917 out_int64x1_t = vdup_n_s64 (arg0_int64_t);
2918 }
2919
2920-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2921 /* { dg-final { cleanup-saved-temps } } */
2922
2923=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c'
2924--- old/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c 2010-07-29 15:38:15 +0000
2925+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c 2010-07-29 15:59:12 +0000
2926@@ -16,5 +16,4 @@
2927 out_uint64x1_t = vdup_n_u64 (arg0_uint64_t);
2928 }
2929
2930-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2931 /* { dg-final { cleanup-saved-temps } } */
2932
2933=== modified file 'gcc/testsuite/gcc.target/arm/neon/veors64.c'
2934--- old/gcc/testsuite/gcc.target/arm/neon/veors64.c 2010-07-29 15:38:15 +0000
2935+++ new/gcc/testsuite/gcc.target/arm/neon/veors64.c 2010-07-29 15:59:12 +0000
2936@@ -17,5 +17,4 @@
2937 out_int64x1_t = veor_s64 (arg0_int64x1_t, arg1_int64x1_t);
2938 }
2939
2940-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2941 /* { dg-final { cleanup-saved-temps } } */
2942
2943=== modified file 'gcc/testsuite/gcc.target/arm/neon/veoru64.c'
2944--- old/gcc/testsuite/gcc.target/arm/neon/veoru64.c 2010-07-29 15:38:15 +0000
2945+++ new/gcc/testsuite/gcc.target/arm/neon/veoru64.c 2010-07-29 15:59:12 +0000
2946@@ -17,5 +17,4 @@
2947 out_uint64x1_t = veor_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
2948 }
2949
2950-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2951 /* { dg-final { cleanup-saved-temps } } */
2952
2953=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c'
2954--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c 2010-07-29 15:38:15 +0000
2955+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c 2010-07-29 15:59:12 +0000
2956@@ -16,5 +16,4 @@
2957 out_int64_t = vget_lane_s64 (arg0_int64x1_t, 0);
2958 }
2959
2960-/* { dg-final { scan-assembler "vmov\[ \]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2961 /* { dg-final { cleanup-saved-temps } } */
2962
2963=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c'
2964--- old/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c 2010-07-29 15:38:15 +0000
2965+++ new/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c 2010-07-29 15:59:12 +0000
2966@@ -16,5 +16,4 @@
2967 out_uint64_t = vget_lane_u64 (arg0_uint64x1_t, 0);
2968 }
2969
2970-/* { dg-final { scan-assembler "vmov\[ \]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2971 /* { dg-final { cleanup-saved-temps } } */
2972
2973=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c'
2974--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c 2010-07-29 15:38:15 +0000
2975+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c 2010-07-29 15:59:12 +0000
2976@@ -16,6 +16,4 @@
2977 out_int64x2_t = vmovq_n_s64 (arg0_int64_t);
2978 }
2979
2980-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2981-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2982 /* { dg-final { cleanup-saved-temps } } */
2983
2984=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c'
2985--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c 2010-07-29 15:38:15 +0000
2986+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c 2010-07-29 15:59:12 +0000
2987@@ -16,6 +16,4 @@
2988 out_uint64x2_t = vmovq_n_u64 (arg0_uint64_t);
2989 }
2990
2991-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2992-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2993 /* { dg-final { cleanup-saved-temps } } */
2994
2995=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c'
2996--- old/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c 2010-07-29 15:38:15 +0000
2997+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c 2010-07-29 15:59:12 +0000
2998@@ -16,5 +16,4 @@
2999 out_int64x1_t = vmov_n_s64 (arg0_int64_t);
3000 }
3001
3002-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3003 /* { dg-final { cleanup-saved-temps } } */
3004
3005=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c'
3006--- old/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c 2010-07-29 15:38:15 +0000
3007+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c 2010-07-29 15:59:12 +0000
3008@@ -16,5 +16,4 @@
3009 out_uint64x1_t = vmov_n_u64 (arg0_uint64_t);
3010 }
3011
3012-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3013 /* { dg-final { cleanup-saved-temps } } */
3014
3015=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorns64.c'
3016--- old/gcc/testsuite/gcc.target/arm/neon/vorns64.c 2010-07-29 15:38:15 +0000
3017+++ new/gcc/testsuite/gcc.target/arm/neon/vorns64.c 2010-07-29 15:59:12 +0000
3018@@ -17,5 +17,4 @@
3019 out_int64x1_t = vorn_s64 (arg0_int64x1_t, arg1_int64x1_t);
3020 }
3021
3022-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3023 /* { dg-final { cleanup-saved-temps } } */
3024
3025=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornu64.c'
3026--- old/gcc/testsuite/gcc.target/arm/neon/vornu64.c 2010-07-29 15:38:15 +0000
3027+++ new/gcc/testsuite/gcc.target/arm/neon/vornu64.c 2010-07-29 15:59:12 +0000
3028@@ -17,5 +17,4 @@
3029 out_uint64x1_t = vorn_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
3030 }
3031
3032-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3033 /* { dg-final { cleanup-saved-temps } } */
3034
3035=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrs64.c'
3036--- old/gcc/testsuite/gcc.target/arm/neon/vorrs64.c 2010-07-29 15:38:15 +0000
3037+++ new/gcc/testsuite/gcc.target/arm/neon/vorrs64.c 2010-07-29 15:59:12 +0000
3038@@ -17,5 +17,4 @@
3039 out_int64x1_t = vorr_s64 (arg0_int64x1_t, arg1_int64x1_t);
3040 }
3041
3042-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3043 /* { dg-final { cleanup-saved-temps } } */
3044
3045=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorru64.c'
3046--- old/gcc/testsuite/gcc.target/arm/neon/vorru64.c 2010-07-29 15:38:15 +0000
3047+++ new/gcc/testsuite/gcc.target/arm/neon/vorru64.c 2010-07-29 15:59:12 +0000
3048@@ -17,5 +17,4 @@
3049 out_uint64x1_t = vorr_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
3050 }
3051
3052-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3053 /* { dg-final { cleanup-saved-temps } } */
3054
3055=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c'
3056--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c 2010-07-29 15:38:15 +0000
3057+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c 2010-07-29 15:59:12 +0000
3058@@ -17,5 +17,4 @@
3059 out_int64x1_t = vset_lane_s64 (arg0_int64_t, arg1_int64x1_t, 0);
3060 }
3061
3062-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3063 /* { dg-final { cleanup-saved-temps } } */
3064
3065=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c'
3066--- old/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c 2010-07-29 15:38:15 +0000
3067+++ new/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c 2010-07-29 15:59:12 +0000
3068@@ -17,5 +17,4 @@
3069 out_uint64x1_t = vset_lane_u64 (arg0_uint64_t, arg1_uint64x1_t, 0);
3070 }
3071
3072-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3073 /* { dg-final { cleanup-saved-temps } } */
3074
3075=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubs64.c'
3076--- old/gcc/testsuite/gcc.target/arm/neon/vsubs64.c 2010-07-29 15:38:15 +0000
3077+++ new/gcc/testsuite/gcc.target/arm/neon/vsubs64.c 2010-07-29 15:59:12 +0000
3078@@ -17,5 +17,4 @@
3079 out_int64x1_t = vsub_s64 (arg0_int64x1_t, arg1_int64x1_t);
3080 }
3081
3082-/* { dg-final { scan-assembler "vsub\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3083 /* { dg-final { cleanup-saved-temps } } */
3084
3085=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubu64.c'
3086--- old/gcc/testsuite/gcc.target/arm/neon/vsubu64.c 2010-07-29 15:38:15 +0000
3087+++ new/gcc/testsuite/gcc.target/arm/neon/vsubu64.c 2010-07-29 15:59:12 +0000
3088@@ -17,5 +17,4 @@
3089 out_uint64x1_t = vsub_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
3090 }
3091
3092-/* { dg-final { scan-assembler "vsub\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3093 /* { dg-final { cleanup-saved-temps } } */
3094
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99301.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99301.patch
new file mode 100644
index 000000000..95907eeb8
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99301.patch
@@ -0,0 +1,675 @@
1 2010-07-02 Daniel Jacobowitz <dan@codesourcery.com>
2 Julian Brown <julian@codesourcery.com>
3 Sandra Loosemore <sandra@codesourcery.com>
4
5 gcc/
6 * config/arm/arm.c (arm_canonicalize_comparison): Canonicalize DImode
7 comparisons. Adjust to take both operands.
8 (arm_select_cc_mode): Handle DImode comparisons.
9 (arm_gen_compare_reg): Generate a scratch register for DImode
10 comparisons which require one. Use xor for Thumb equality checks.
11 (arm_const_double_by_immediates): New.
12 (arm_print_operand): Allow 'Q' and 'R' for constants.
13 (get_arm_condition_code): Handle new CC_CZmode and CC_NCVmode.
14 * config/arm/arm.h (CANONICALIZE_COMPARISON): Always use
15 arm_canonicalize_comparison.
16 * config/arm/arm-modes.def: Add CC_CZmode and CC_NCVmode.
17 * config/arm/arm-protos.h (arm_canonicalize_comparison): Update
18 prototype.
19 (arm_const_double_by_immediates): Declare.
20 * config/arm/constraints.md (Di): New constraint.
21 * config/arm/predicates.md (arm_immediate_di_operand)
22 (arm_di_operand, cmpdi_operand): New.
23 * config/arm/arm.md (cbranchdi4): Handle non-Cirrus also.
24 (*arm_cmpdi_insn, *arm_cmpdi_unsigned)
25 (*arm_cmpdi_zero, *thumb_cmpdi_zero): New insns.
26 (cstoredi4): Handle non-Cirrus also.
27
28 gcc/testsuite/
29 * gcc.c-torture/execute/20100416-1.c: New test case.
30
312010-07-08 Sandra Loosemore <sandra@codesourcery.com>
32
33 Backport from upstream (originally from Sourcery G++ 4.4):
34
35 2010-07-02 Sandra Loosemore <sandra@codesourcery.com>
36
37 gcc/
38
39=== modified file 'gcc/config/arm/arm-modes.def'
40--- old/gcc/config/arm/arm-modes.def 2009-06-18 11:24:10 +0000
41+++ new/gcc/config/arm/arm-modes.def 2010-07-29 16:58:56 +0000
42@@ -35,10 +35,16 @@
43 CC_NOOVmode should be used with SImode integer equalities.
44 CC_Zmode should be used if only the Z flag is set correctly
45 CC_Nmode should be used if only the N (sign) flag is set correctly
46+ CC_CZmode should be used if only the C and Z flags are correct
47+ (used for DImode unsigned comparisons).
48+ CC_NCVmode should be used if only the N, C, and V flags are correct
49+ (used for DImode signed comparisons).
50 CCmode should be used otherwise. */
51
52 CC_MODE (CC_NOOV);
53 CC_MODE (CC_Z);
54+CC_MODE (CC_CZ);
55+CC_MODE (CC_NCV);
56 CC_MODE (CC_SWP);
57 CC_MODE (CCFP);
58 CC_MODE (CCFPE);
59
60=== modified file 'gcc/config/arm/arm-protos.h'
61--- old/gcc/config/arm/arm-protos.h 2009-11-11 14:23:03 +0000
62+++ new/gcc/config/arm/arm-protos.h 2010-07-29 16:58:56 +0000
63@@ -49,8 +49,7 @@
64 extern int const_ok_for_arm (HOST_WIDE_INT);
65 extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx,
66 HOST_WIDE_INT, rtx, rtx, int);
67-extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, enum machine_mode,
68- rtx *);
69+extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, rtx *, rtx *);
70 extern int legitimate_pic_operand_p (rtx);
71 extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx);
72 extern rtx legitimize_tls_address (rtx, rtx);
73@@ -116,6 +115,7 @@
74 extern void arm_reload_out_hi (rtx *);
75 extern int arm_const_double_inline_cost (rtx);
76 extern bool arm_const_double_by_parts (rtx);
77+extern bool arm_const_double_by_immediates (rtx);
78 extern const char *fp_immediate_constant (rtx);
79 extern void arm_emit_call_insn (rtx, rtx);
80 extern const char *output_call (rtx *);
81
82=== modified file 'gcc/config/arm/arm.c'
83--- old/gcc/config/arm/arm.c 2010-07-29 15:59:12 +0000
84+++ new/gcc/config/arm/arm.c 2010-07-29 16:58:56 +0000
85@@ -3190,13 +3190,82 @@
86 immediate value easier to load. */
87
88 enum rtx_code
89-arm_canonicalize_comparison (enum rtx_code code, enum machine_mode mode,
90- rtx * op1)
91+arm_canonicalize_comparison (enum rtx_code code, rtx *op0, rtx *op1)
92 {
93- unsigned HOST_WIDE_INT i = INTVAL (*op1);
94- unsigned HOST_WIDE_INT maxval;
95+ enum machine_mode mode;
96+ unsigned HOST_WIDE_INT i, maxval;
97+
98+ mode = GET_MODE (*op0);
99+ if (mode == VOIDmode)
100+ mode = GET_MODE (*op1);
101+
102 maxval = (((unsigned HOST_WIDE_INT) 1) << (GET_MODE_BITSIZE(mode) - 1)) - 1;
103
104+ /* For DImode, we have GE/LT/GEU/LTU comparisons. In ARM mode
105+ we can also use cmp/cmpeq for GTU/LEU. GT/LE must be either
106+ reversed or (for constant OP1) adjusted to GE/LT. Similarly
107+ for GTU/LEU in Thumb mode. */
108+ if (mode == DImode)
109+ {
110+ rtx tem;
111+
112+ /* To keep things simple, always use the Cirrus cfcmp64 if it is
113+ available. */
114+ if (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK)
115+ return code;
116+
117+ if (code == GT || code == LE
118+ || (!TARGET_ARM && (code == GTU || code == LEU)))
119+ {
120+ /* Missing comparison. First try to use an available
121+ comparison. */
122+ if (GET_CODE (*op1) == CONST_INT)
123+ {
124+ i = INTVAL (*op1);
125+ switch (code)
126+ {
127+ case GT:
128+ case LE:
129+ if (i != maxval
130+ && arm_const_double_by_immediates (GEN_INT (i + 1)))
131+ {
132+ *op1 = GEN_INT (i + 1);
133+ return code == GT ? GE : LT;
134+ }
135+ break;
136+ case GTU:
137+ case LEU:
138+ if (i != ~((unsigned HOST_WIDE_INT) 0)
139+ && arm_const_double_by_immediates (GEN_INT (i + 1)))
140+ {
141+ *op1 = GEN_INT (i + 1);
142+ return code == GTU ? GEU : LTU;
143+ }
144+ break;
145+ default:
146+ gcc_unreachable ();
147+ }
148+ }
149+
150+ /* If that did not work, reverse the condition. */
151+ tem = *op0;
152+ *op0 = *op1;
153+ *op1 = tem;
154+ return swap_condition (code);
155+ }
156+
157+ return code;
158+ }
159+
160+ /* Comparisons smaller than DImode. Only adjust comparisons against
161+ an out-of-range constant. */
162+ if (GET_CODE (*op1) != CONST_INT
163+ || const_ok_for_arm (INTVAL (*op1))
164+ || const_ok_for_arm (- INTVAL (*op1)))
165+ return code;
166+
167+ i = INTVAL (*op1);
168+
169 switch (code)
170 {
171 case EQ:
172@@ -9912,6 +9981,55 @@
173 && (rtx_equal_p (XEXP (x, 0), y) || rtx_equal_p (XEXP (x, 1), y)))
174 return CC_Cmode;
175
176+ if (GET_MODE (x) == DImode || GET_MODE (y) == DImode)
177+ {
178+ /* To keep things simple, always use the Cirrus cfcmp64 if it is
179+ available. */
180+ if (TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK)
181+ return CCmode;
182+
183+ switch (op)
184+ {
185+ case EQ:
186+ case NE:
187+ /* A DImode comparison against zero can be implemented by
188+ or'ing the two halves together. */
189+ if (y == const0_rtx)
190+ return CC_Zmode;
191+
192+ /* We can do an equality test in three Thumb instructions. */
193+ if (!TARGET_ARM)
194+ return CC_Zmode;
195+
196+ /* FALLTHROUGH */
197+
198+ case LTU:
199+ case LEU:
200+ case GTU:
201+ case GEU:
202+ /* DImode unsigned comparisons can be implemented by cmp +
203+ cmpeq without a scratch register. Not worth doing in
204+ Thumb-2. */
205+ if (TARGET_ARM)
206+ return CC_CZmode;
207+
208+ /* FALLTHROUGH */
209+
210+ case LT:
211+ case LE:
212+ case GT:
213+ case GE:
214+ /* DImode signed and unsigned comparisons can be implemented
215+ by cmp + sbcs with a scratch register, but that does not
216+ set the Z flag - we must reverse GT/LE/GTU/LEU. */
217+ gcc_assert (op != EQ && op != NE);
218+ return CC_NCVmode;
219+
220+ default:
221+ gcc_unreachable ();
222+ }
223+ }
224+
225 return CCmode;
226 }
227
228@@ -9921,10 +10039,39 @@
229 rtx
230 arm_gen_compare_reg (enum rtx_code code, rtx x, rtx y)
231 {
232- enum machine_mode mode = SELECT_CC_MODE (code, x, y);
233- rtx cc_reg = gen_rtx_REG (mode, CC_REGNUM);
234-
235- emit_set_insn (cc_reg, gen_rtx_COMPARE (mode, x, y));
236+ enum machine_mode mode;
237+ rtx cc_reg;
238+ int dimode_comparison = GET_MODE (x) == DImode || GET_MODE (y) == DImode;
239+
240+ /* We might have X as a constant, Y as a register because of the predicates
241+ used for cmpdi. If so, force X to a register here. */
242+ if (dimode_comparison && !REG_P (x))
243+ x = force_reg (DImode, x);
244+
245+ mode = SELECT_CC_MODE (code, x, y);
246+ cc_reg = gen_rtx_REG (mode, CC_REGNUM);
247+
248+ if (dimode_comparison
249+ && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)
250+ && mode != CC_CZmode)
251+ {
252+ rtx clobber, set;
253+
254+ /* To compare two non-zero values for equality, XOR them and
255+ then compare against zero. Not used for ARM mode; there
256+ CC_CZmode is cheaper. */
257+ if (mode == CC_Zmode && y != const0_rtx)
258+ {
259+ x = expand_binop (DImode, xor_optab, x, y, NULL_RTX, 0, OPTAB_WIDEN);
260+ y = const0_rtx;
261+ }
262+ /* A scratch register is required. */
263+ clobber = gen_rtx_CLOBBER (VOIDmode, gen_rtx_SCRATCH (SImode));
264+ set = gen_rtx_SET (VOIDmode, cc_reg, gen_rtx_COMPARE (mode, x, y));
265+ emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set, clobber)));
266+ }
267+ else
268+ emit_set_insn (cc_reg, gen_rtx_COMPARE (mode, x, y));
269
270 return cc_reg;
271 }
272@@ -11253,6 +11400,34 @@
273 return false;
274 }
275
276+/* Return true if it is possible to inline both the high and low parts
277+ of a 64-bit constant into 32-bit data processing instructions. */
278+bool
279+arm_const_double_by_immediates (rtx val)
280+{
281+ enum machine_mode mode = GET_MODE (val);
282+ rtx part;
283+
284+ if (mode == VOIDmode)
285+ mode = DImode;
286+
287+ part = gen_highpart_mode (SImode, mode, val);
288+
289+ gcc_assert (GET_CODE (part) == CONST_INT);
290+
291+ if (!const_ok_for_arm (INTVAL (part)))
292+ return false;
293+
294+ part = gen_lowpart (SImode, val);
295+
296+ gcc_assert (GET_CODE (part) == CONST_INT);
297+
298+ if (!const_ok_for_arm (INTVAL (part)))
299+ return false;
300+
301+ return true;
302+}
303+
304 /* Scan INSN and note any of its operands that need fixing.
305 If DO_PUSHES is false we do not actually push any of the fixups
306 needed. The function returns TRUE if any fixups were needed/pushed.
307@@ -15097,8 +15272,18 @@
308 the value being loaded is big-wordian or little-wordian. The
309 order of the two register loads can matter however, if the address
310 of the memory location is actually held in one of the registers
311- being overwritten by the load. */
312+ being overwritten by the load.
313+
314+ The 'Q' and 'R' constraints are also available for 64-bit
315+ constants. */
316 case 'Q':
317+ if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
318+ {
319+ rtx part = gen_lowpart (SImode, x);
320+ fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, INTVAL (part));
321+ return;
322+ }
323+
324 if (GET_CODE (x) != REG || REGNO (x) > LAST_ARM_REGNUM)
325 {
326 output_operand_lossage ("invalid operand for code '%c'", code);
327@@ -15109,6 +15294,18 @@
328 return;
329
330 case 'R':
331+ if (GET_CODE (x) == CONST_INT || GET_CODE (x) == CONST_DOUBLE)
332+ {
333+ enum machine_mode mode = GET_MODE (x);
334+ rtx part;
335+
336+ if (mode == VOIDmode)
337+ mode = DImode;
338+ part = gen_highpart_mode (SImode, mode, x);
339+ fprintf (stream, "#" HOST_WIDE_INT_PRINT_DEC, INTVAL (part));
340+ return;
341+ }
342+
343 if (GET_CODE (x) != REG || REGNO (x) > LAST_ARM_REGNUM)
344 {
345 output_operand_lossage ("invalid operand for code '%c'", code);
346@@ -15801,6 +15998,28 @@
347 default: gcc_unreachable ();
348 }
349
350+ case CC_CZmode:
351+ switch (comp_code)
352+ {
353+ case NE: return ARM_NE;
354+ case EQ: return ARM_EQ;
355+ case GEU: return ARM_CS;
356+ case GTU: return ARM_HI;
357+ case LEU: return ARM_LS;
358+ case LTU: return ARM_CC;
359+ default: gcc_unreachable ();
360+ }
361+
362+ case CC_NCVmode:
363+ switch (comp_code)
364+ {
365+ case GE: return ARM_GE;
366+ case LT: return ARM_LT;
367+ case GEU: return ARM_CS;
368+ case LTU: return ARM_CC;
369+ default: gcc_unreachable ();
370+ }
371+
372 case CCmode:
373 switch (comp_code)
374 {
375
376=== modified file 'gcc/config/arm/arm.h'
377--- old/gcc/config/arm/arm.h 2009-12-23 16:36:40 +0000
378+++ new/gcc/config/arm/arm.h 2010-07-29 16:58:56 +0000
379@@ -2253,19 +2253,7 @@
380 : reverse_condition (code))
381
382 #define CANONICALIZE_COMPARISON(CODE, OP0, OP1) \
383- do \
384- { \
385- if (GET_CODE (OP1) == CONST_INT \
386- && ! (const_ok_for_arm (INTVAL (OP1)) \
387- || (const_ok_for_arm (- INTVAL (OP1))))) \
388- { \
389- rtx const_op = OP1; \
390- CODE = arm_canonicalize_comparison ((CODE), GET_MODE (OP0), \
391- &const_op); \
392- OP1 = const_op; \
393- } \
394- } \
395- while (0)
396+ (CODE) = arm_canonicalize_comparison (CODE, &(OP0), &(OP1))
397
398 /* The arm5 clz instruction returns 32. */
399 #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 32, 1)
400
401=== modified file 'gcc/config/arm/arm.md'
402--- old/gcc/config/arm/arm.md 2010-07-29 15:59:12 +0000
403+++ new/gcc/config/arm/arm.md 2010-07-29 16:58:56 +0000
404@@ -6718,17 +6718,45 @@
405 operands[3])); DONE;"
406 )
407
408-;; this uses the Cirrus DI compare instruction
409 (define_expand "cbranchdi4"
410 [(set (pc) (if_then_else
411 (match_operator 0 "arm_comparison_operator"
412- [(match_operand:DI 1 "cirrus_fp_register" "")
413- (match_operand:DI 2 "cirrus_fp_register" "")])
414+ [(match_operand:DI 1 "cmpdi_operand" "")
415+ (match_operand:DI 2 "cmpdi_operand" "")])
416 (label_ref (match_operand 3 "" ""))
417 (pc)))]
418- "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
419- "emit_jump_insn (gen_cbranch_cc (operands[0], operands[1], operands[2],
420- operands[3])); DONE;"
421+ "TARGET_32BIT"
422+ "{
423+ rtx swap = NULL_RTX;
424+ enum rtx_code code = GET_CODE (operands[0]);
425+
426+ /* We should not have two constants. */
427+ gcc_assert (GET_MODE (operands[1]) == DImode
428+ || GET_MODE (operands[2]) == DImode);
429+
430+ /* Flip unimplemented DImode comparisons to a form that
431+ arm_gen_compare_reg can handle. */
432+ switch (code)
433+ {
434+ case GT:
435+ swap = gen_rtx_LT (VOIDmode, operands[2], operands[1]); break;
436+ case LE:
437+ swap = gen_rtx_GE (VOIDmode, operands[2], operands[1]); break;
438+ case GTU:
439+ swap = gen_rtx_LTU (VOIDmode, operands[2], operands[1]); break;
440+ case LEU:
441+ swap = gen_rtx_GEU (VOIDmode, operands[2], operands[1]); break;
442+ default:
443+ break;
444+ }
445+ if (swap)
446+ emit_jump_insn (gen_cbranch_cc (swap, operands[2], operands[1],
447+ operands[3]));
448+ else
449+ emit_jump_insn (gen_cbranch_cc (operands[0], operands[1], operands[2],
450+ operands[3]));
451+ DONE;
452+ }"
453 )
454
455 (define_insn "*cbranchsi4_insn"
456@@ -7880,6 +7908,52 @@
457 (const_string "alu_shift_reg")))]
458 )
459
460+;; DImode comparisons. The generic code generates branches that
461+;; if-conversion can not reduce to a conditional compare, so we do
462+;; that directly.
463+
464+(define_insn "*arm_cmpdi_insn"
465+ [(set (reg:CC_NCV CC_REGNUM)
466+ (compare:CC_NCV (match_operand:DI 0 "s_register_operand" "r")
467+ (match_operand:DI 1 "arm_di_operand" "rDi")))
468+ (clobber (match_scratch:SI 2 "=r"))]
469+ "TARGET_32BIT && !(TARGET_HARD_FLOAT && TARGET_MAVERICK)"
470+ "cmp\\t%Q0, %Q1\;sbcs\\t%2, %R0, %R1"
471+ [(set_attr "conds" "set")
472+ (set_attr "length" "8")]
473+)
474+
475+(define_insn "*arm_cmpdi_unsigned"
476+ [(set (reg:CC_CZ CC_REGNUM)
477+ (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r")
478+ (match_operand:DI 1 "arm_di_operand" "rDi")))]
479+ "TARGET_ARM"
480+ "cmp%?\\t%R0, %R1\;cmpeq\\t%Q0, %Q1"
481+ [(set_attr "conds" "set")
482+ (set_attr "length" "8")]
483+)
484+
485+(define_insn "*arm_cmpdi_zero"
486+ [(set (reg:CC_Z CC_REGNUM)
487+ (compare:CC_Z (match_operand:DI 0 "s_register_operand" "r")
488+ (const_int 0)))
489+ (clobber (match_scratch:SI 1 "=r"))]
490+ "TARGET_32BIT"
491+ "orr%.\\t%1, %Q0, %R0"
492+ [(set_attr "conds" "set")]
493+)
494+
495+(define_insn "*thumb_cmpdi_zero"
496+ [(set (reg:CC_Z CC_REGNUM)
497+ (compare:CC_Z (match_operand:DI 0 "s_register_operand" "l")
498+ (const_int 0)))
499+ (clobber (match_scratch:SI 1 "=l"))]
500+ "TARGET_THUMB1"
501+ "orr\\t%1, %Q0, %R0"
502+ [(set_attr "conds" "set")
503+ (set_attr "length" "2")]
504+)
505+
506 ;; Cirrus SF compare instruction
507 (define_insn "*cirrus_cmpsf"
508 [(set (reg:CCFP CC_REGNUM)
509@@ -8183,18 +8257,45 @@
510 operands[2], operands[3])); DONE;"
511 )
512
513-;; this uses the Cirrus DI compare instruction
514 (define_expand "cstoredi4"
515 [(set (match_operand:SI 0 "s_register_operand" "")
516 (match_operator:SI 1 "arm_comparison_operator"
517- [(match_operand:DI 2 "cirrus_fp_register" "")
518- (match_operand:DI 3 "cirrus_fp_register" "")]))]
519- "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_MAVERICK"
520- "emit_insn (gen_cstore_cc (operands[0], operands[1],
521- operands[2], operands[3])); DONE;"
522+ [(match_operand:DI 2 "cmpdi_operand" "")
523+ (match_operand:DI 3 "cmpdi_operand" "")]))]
524+ "TARGET_32BIT"
525+ "{
526+ rtx swap = NULL_RTX;
527+ enum rtx_code code = GET_CODE (operands[1]);
528+
529+ /* We should not have two constants. */
530+ gcc_assert (GET_MODE (operands[2]) == DImode
531+ || GET_MODE (operands[3]) == DImode);
532+
533+ /* Flip unimplemented DImode comparisons to a form that
534+ arm_gen_compare_reg can handle. */
535+ switch (code)
536+ {
537+ case GT:
538+ swap = gen_rtx_LT (VOIDmode, operands[3], operands[2]); break;
539+ case LE:
540+ swap = gen_rtx_GE (VOIDmode, operands[3], operands[2]); break;
541+ case GTU:
542+ swap = gen_rtx_LTU (VOIDmode, operands[3], operands[2]); break;
543+ case LEU:
544+ swap = gen_rtx_GEU (VOIDmode, operands[3], operands[2]); break;
545+ default:
546+ break;
547+ }
548+ if (swap)
549+ emit_insn (gen_cstore_cc (operands[0], swap, operands[3],
550+ operands[2]));
551+ else
552+ emit_insn (gen_cstore_cc (operands[0], operands[1], operands[2],
553+ operands[3]));
554+ DONE;
555+ }"
556 )
557
558-
559 (define_expand "cstoresi_eq0_thumb1"
560 [(parallel
561 [(set (match_operand:SI 0 "s_register_operand" "")
562
563=== modified file 'gcc/config/arm/constraints.md'
564--- old/gcc/config/arm/constraints.md 2009-12-07 20:34:53 +0000
565+++ new/gcc/config/arm/constraints.md 2010-07-29 16:58:56 +0000
566@@ -29,7 +29,7 @@
567 ;; in Thumb-1 state: I, J, K, L, M, N, O
568
569 ;; The following multi-letter normal constraints have been used:
570-;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy
571+;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di
572 ;; in Thumb-1 state: Pa, Pb
573 ;; in Thumb-2 state: Ps, Pt
574
575@@ -191,6 +191,13 @@
576 (match_test "TARGET_32BIT && arm_const_double_inline_cost (op) == 4
577 && !(optimize_size || arm_ld_sched)")))
578
579+(define_constraint "Di"
580+ "@internal
581+ In ARM/Thumb-2 state a const_int or const_double where both the high
582+ and low SImode words can be generated as immediates in 32-bit instructions."
583+ (and (match_code "const_double,const_int")
584+ (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)")))
585+
586 (define_constraint "Dn"
587 "@internal
588 In ARM/Thumb-2 state a const_vector which can be loaded with a Neon vmov
589
590=== modified file 'gcc/config/arm/predicates.md'
591--- old/gcc/config/arm/predicates.md 2010-07-29 15:59:12 +0000
592+++ new/gcc/config/arm/predicates.md 2010-07-29 16:58:56 +0000
593@@ -86,6 +86,12 @@
594 (and (match_code "const_int")
595 (match_test "const_ok_for_arm (INTVAL (op))")))
596
597+;; A constant value which fits into two instructions, each taking
598+;; an arithmetic constant operand for one of the words.
599+(define_predicate "arm_immediate_di_operand"
600+ (and (match_code "const_int,const_double")
601+ (match_test "arm_const_double_by_immediates (op)")))
602+
603 (define_predicate "arm_neg_immediate_operand"
604 (and (match_code "const_int")
605 (match_test "const_ok_for_arm (-INTVAL (op))")))
606@@ -115,6 +121,10 @@
607 (ior (match_operand 0 "arm_rhs_operand")
608 (match_operand 0 "arm_not_immediate_operand")))
609
610+(define_predicate "arm_di_operand"
611+ (ior (match_operand 0 "s_register_operand")
612+ (match_operand 0 "arm_immediate_di_operand")))
613+
614 ;; True if the operand is a memory reference which contains an
615 ;; offsettable address.
616 (define_predicate "offsettable_memory_operand"
617@@ -522,4 +532,12 @@
618 (define_predicate "neon_lane_number"
619 (and (match_code "const_int")
620 (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 7")))
621+;; Predicates for named expanders that overlap multiple ISAs.
622+
623+(define_predicate "cmpdi_operand"
624+ (if_then_else (match_test "TARGET_HARD_FLOAT && TARGET_MAVERICK")
625+ (and (match_test "TARGET_ARM")
626+ (match_operand 0 "cirrus_fp_register"))
627+ (and (match_test "TARGET_32BIT")
628+ (match_operand 0 "arm_di_operand"))))
629
630
631=== added file 'gcc/testsuite/gcc.c-torture/execute/20100416-1.c'
632--- old/gcc/testsuite/gcc.c-torture/execute/20100416-1.c 1970-01-01 00:00:00 +0000
633+++ new/gcc/testsuite/gcc.c-torture/execute/20100416-1.c 2010-07-29 16:58:56 +0000
634@@ -0,0 +1,40 @@
635+void abort(void);
636+
637+int
638+movegt(int x, int y, long long a)
639+{
640+ int i;
641+ int ret = 0;
642+ for (i = 0; i < y; i++)
643+ {
644+ if (a >= (long long) 0xf000000000000000LL)
645+ ret = x;
646+ else
647+ ret = y;
648+ }
649+ return ret;
650+}
651+
652+struct test
653+{
654+ long long val;
655+ int ret;
656+} tests[] = {
657+ { 0xf000000000000000LL, -1 },
658+ { 0xefffffffffffffffLL, 1 },
659+ { 0xf000000000000001LL, -1 },
660+ { 0x0000000000000000LL, -1 },
661+ { 0x8000000000000000LL, 1 },
662+};
663+
664+int
665+main()
666+{
667+ int i;
668+ for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++)
669+ {
670+ if (movegt (-1, 1, tests[i].val) != tests[i].ret)
671+ abort ();
672+ }
673+ return 0;
674+}
675
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99302.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99302.patch
new file mode 100644
index 000000000..635d3f8bd
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99302.patch
@@ -0,0 +1,244 @@
12010-07-09 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from mainline (originally on Sourcery G++ 4.4):
4
5 2010-07-02 Julian Brown <julian@codesourcery.com>
6 Sandra Loosemore <sandra@codesourcery.com>
7
8 PR target/43703
9
10 gcc/
11 * config/arm/vec-common.md (add<mode>3, sub<mode>3, smin<mode>3)
12 (smax<mode>3): Disable for NEON float modes when
13 flag_unsafe_math_optimizations is false.
14 * config/arm/neon.md (*add<mode>3_neon, *sub<mode>3_neon)
15 (*mul<mode>3_neon)
16 (mul<mode>3add<mode>_neon, mul<mode>3neg<mode>add<mode>_neon)
17 (reduc_splus_<mode>, reduc_smin_<mode>, reduc_smax_<mode>): Disable
18 for NEON float modes when flag_unsafe_math_optimizations is false.
19 (quad_halves_<code>v4sf): Only enable if flag_unsafe_math_optimizations
20 is true.
21 * doc/invoke.texi (ARM Options): Add note about floating point
22 vectorization requiring -funsafe-math-optimizations.
23
24 gcc/testsuite/
25 * gcc.dg/vect/vect.exp: Add -ffast-math for NEON.
26 * gcc.dg/vect/vect-reduc-6.c: Add XFAIL for NEON.
27
28 2010-07-08 Sandra Loosemore <sandra@codesourcery.com>
29
30 Backport from upstream (originally from Sourcery G++ 4.4):
31
32=== modified file 'gcc/config/arm/neon.md'
33--- old/gcc/config/arm/neon.md 2010-07-29 15:59:12 +0000
34+++ new/gcc/config/arm/neon.md 2010-07-29 17:03:20 +0000
35@@ -819,7 +819,7 @@
36 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
37 (plus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
38 (match_operand:VDQ 2 "s_register_operand" "w")))]
39- "TARGET_NEON"
40+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
41 "vadd.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
42 [(set (attr "neon_type")
43 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
44@@ -853,7 +853,7 @@
45 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
46 (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
47 (match_operand:VDQ 2 "s_register_operand" "w")))]
48- "TARGET_NEON"
49+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
50 "vsub.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
51 [(set (attr "neon_type")
52 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
53@@ -888,7 +888,7 @@
54 [(set (match_operand:VDQ 0 "s_register_operand" "=w")
55 (mult:VDQ (match_operand:VDQ 1 "s_register_operand" "w")
56 (match_operand:VDQ 2 "s_register_operand" "w")))]
57- "TARGET_NEON"
58+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
59 "vmul.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
60 [(set (attr "neon_type")
61 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
62@@ -910,7 +910,7 @@
63 (plus:VDQ (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w")
64 (match_operand:VDQ 3 "s_register_operand" "w"))
65 (match_operand:VDQ 1 "s_register_operand" "0")))]
66- "TARGET_NEON"
67+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
68 "vmla.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
69 [(set (attr "neon_type")
70 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
71@@ -932,7 +932,7 @@
72 (minus:VDQ (match_operand:VDQ 1 "s_register_operand" "0")
73 (mult:VDQ (match_operand:VDQ 2 "s_register_operand" "w")
74 (match_operand:VDQ 3 "s_register_operand" "w"))))]
75- "TARGET_NEON"
76+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
77 "vmls.<V_if_elem>\t%<V_reg>0, %<V_reg>2, %<V_reg>3"
78 [(set (attr "neon_type")
79 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
80@@ -1361,7 +1361,7 @@
81 (parallel [(const_int 0) (const_int 1)]))
82 (vec_select:V2SF (match_dup 1)
83 (parallel [(const_int 2) (const_int 3)]))))]
84- "TARGET_NEON"
85+ "TARGET_NEON && flag_unsafe_math_optimizations"
86 "<VQH_mnem>.f32\t%P0, %e1, %f1"
87 [(set_attr "vqh_mnem" "<VQH_mnem>")
88 (set (attr "neon_type")
89@@ -1496,7 +1496,7 @@
90 (define_expand "reduc_splus_<mode>"
91 [(match_operand:VD 0 "s_register_operand" "")
92 (match_operand:VD 1 "s_register_operand" "")]
93- "TARGET_NEON"
94+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
95 {
96 neon_pairwise_reduce (operands[0], operands[1], <MODE>mode,
97 &gen_neon_vpadd_internal<mode>);
98@@ -1506,7 +1506,7 @@
99 (define_expand "reduc_splus_<mode>"
100 [(match_operand:VQ 0 "s_register_operand" "")
101 (match_operand:VQ 1 "s_register_operand" "")]
102- "TARGET_NEON"
103+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
104 {
105 rtx step1 = gen_reg_rtx (<V_HALF>mode);
106 rtx res_d = gen_reg_rtx (<V_HALF>mode);
107@@ -1541,7 +1541,7 @@
108 (define_expand "reduc_smin_<mode>"
109 [(match_operand:VD 0 "s_register_operand" "")
110 (match_operand:VD 1 "s_register_operand" "")]
111- "TARGET_NEON"
112+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
113 {
114 neon_pairwise_reduce (operands[0], operands[1], <MODE>mode,
115 &gen_neon_vpsmin<mode>);
116@@ -1551,7 +1551,7 @@
117 (define_expand "reduc_smin_<mode>"
118 [(match_operand:VQ 0 "s_register_operand" "")
119 (match_operand:VQ 1 "s_register_operand" "")]
120- "TARGET_NEON"
121+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
122 {
123 rtx step1 = gen_reg_rtx (<V_HALF>mode);
124 rtx res_d = gen_reg_rtx (<V_HALF>mode);
125@@ -1566,7 +1566,7 @@
126 (define_expand "reduc_smax_<mode>"
127 [(match_operand:VD 0 "s_register_operand" "")
128 (match_operand:VD 1 "s_register_operand" "")]
129- "TARGET_NEON"
130+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
131 {
132 neon_pairwise_reduce (operands[0], operands[1], <MODE>mode,
133 &gen_neon_vpsmax<mode>);
134@@ -1576,7 +1576,7 @@
135 (define_expand "reduc_smax_<mode>"
136 [(match_operand:VQ 0 "s_register_operand" "")
137 (match_operand:VQ 1 "s_register_operand" "")]
138- "TARGET_NEON"
139+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
140 {
141 rtx step1 = gen_reg_rtx (<V_HALF>mode);
142 rtx res_d = gen_reg_rtx (<V_HALF>mode);
143
144=== modified file 'gcc/config/arm/vec-common.md'
145--- old/gcc/config/arm/vec-common.md 2009-11-11 14:23:03 +0000
146+++ new/gcc/config/arm/vec-common.md 2010-07-29 17:03:20 +0000
147@@ -57,7 +57,8 @@
148 [(set (match_operand:VALL 0 "s_register_operand" "")
149 (plus:VALL (match_operand:VALL 1 "s_register_operand" "")
150 (match_operand:VALL 2 "s_register_operand" "")))]
151- "TARGET_NEON
152+ "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
153+ || flag_unsafe_math_optimizations))
154 || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
155 {
156 })
157@@ -66,7 +67,8 @@
158 [(set (match_operand:VALL 0 "s_register_operand" "")
159 (minus:VALL (match_operand:VALL 1 "s_register_operand" "")
160 (match_operand:VALL 2 "s_register_operand" "")))]
161- "TARGET_NEON
162+ "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
163+ || flag_unsafe_math_optimizations))
164 || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
165 {
166 })
167@@ -75,7 +77,9 @@
168 [(set (match_operand:VALLW 0 "s_register_operand" "")
169 (mult:VALLW (match_operand:VALLW 1 "s_register_operand" "")
170 (match_operand:VALLW 2 "s_register_operand" "")))]
171- "TARGET_NEON || (<MODE>mode == V4HImode && TARGET_REALLY_IWMMXT)"
172+ "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
173+ || flag_unsafe_math_optimizations))
174+ || (<MODE>mode == V4HImode && TARGET_REALLY_IWMMXT)"
175 {
176 })
177
178@@ -83,7 +87,8 @@
179 [(set (match_operand:VALLW 0 "s_register_operand" "")
180 (smin:VALLW (match_operand:VALLW 1 "s_register_operand" "")
181 (match_operand:VALLW 2 "s_register_operand" "")))]
182- "TARGET_NEON
183+ "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
184+ || flag_unsafe_math_optimizations))
185 || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
186 {
187 })
188@@ -101,7 +106,8 @@
189 [(set (match_operand:VALLW 0 "s_register_operand" "")
190 (smax:VALLW (match_operand:VALLW 1 "s_register_operand" "")
191 (match_operand:VALLW 2 "s_register_operand" "")))]
192- "TARGET_NEON
193+ "(TARGET_NEON && ((<MODE>mode != V2SFmode && <MODE>mode != V4SFmode)
194+ || flag_unsafe_math_optimizations))
195 || (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (<MODE>mode))"
196 {
197 })
198
199=== modified file 'gcc/doc/invoke.texi'
200--- old/gcc/doc/invoke.texi 2010-07-29 15:53:39 +0000
201+++ new/gcc/doc/invoke.texi 2010-07-29 17:03:20 +0000
202@@ -9874,6 +9874,14 @@
203 If @option{-msoft-float} is specified this specifies the format of
204 floating point values.
205
206+If the selected floating-point hardware includes the NEON extension
207+(e.g. @option{-mfpu}=@samp{neon}), note that floating-point
208+operations will not be used by GCC's auto-vectorization pass unless
209+@option{-funsafe-math-optimizations} is also specified. This is
210+because NEON hardware does not fully implement the IEEE 754 standard for
211+floating-point arithmetic (in particular denormal values are treated as
212+zero), so the use of NEON instructions may lead to a loss of precision.
213+
214 @item -mfp16-format=@var{name}
215 @opindex mfp16-format
216 Specify the format of the @code{__fp16} half-precision floating-point type.
217
218=== modified file 'gcc/testsuite/gcc.dg/vect/vect-reduc-6.c'
219--- old/gcc/testsuite/gcc.dg/vect/vect-reduc-6.c 2007-09-04 12:05:19 +0000
220+++ new/gcc/testsuite/gcc.dg/vect/vect-reduc-6.c 2010-07-29 17:03:20 +0000
221@@ -49,5 +49,6 @@
222 }
223
224 /* need -ffast-math to vectorizer these loops. */
225-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
226+/* ARM NEON passes -ffast-math to these tests, so expect this to fail. */
227+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail arm_neon_ok } } } */
228 /* { dg-final { cleanup-tree-dump "vect" } } */
229
230=== modified file 'gcc/testsuite/gcc.dg/vect/vect.exp'
231--- old/gcc/testsuite/gcc.dg/vect/vect.exp 2010-07-29 15:38:15 +0000
232+++ new/gcc/testsuite/gcc.dg/vect/vect.exp 2010-07-29 17:03:20 +0000
233@@ -102,6 +102,10 @@
234 set dg-do-what-default run
235 } elseif [is-effective-target arm_neon_ok] {
236 eval lappend DEFAULT_VECTCFLAGS [add_options_for_arm_neon ""]
237+ # NEON does not support denormals, so is not used for vectorization by
238+ # default to avoid loss of precision. We must pass -ffast-math to test
239+ # vectorization of float operations.
240+ lappend DEFAULT_VECTCFLAGS "-ffast-math"
241 if [is-effective-target arm_neon_hw] {
242 set dg-do-what-default run
243 } else {
244
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99303.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99303.patch
new file mode 100644
index 000000000..53d1d08d5
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99303.patch
@@ -0,0 +1,131 @@
1 Merge from Sourcery G++ 4.4:
2
3 2009-05-21 Sandra Loosemore <sandra@codesourcery.com>
4
5 Merge from Sourcery G++ 4.3:
6
7 2009-04-04 Sandra Loosemore <sandra@codesourcery.com>
8
9 Issue #5104
10 PR tree-optimization/39604
11
12 gcc/testsuite
13 * g++.dg/tree-ssa/sink-1.C: New.
14
15 gcc/
16 * tree_ssa-sink.c (sink_code_in_bb): Do not sink statements out
17 of a lexical block containing variable definitions.
18
192010-07-09 Sandra Loosemore <sandra@codesourcery.com>
20
21 Backport from mainline (originally on Sourcery G++ 4.4):
22
23 2010-07-02 Julian Brown <julian@codesourcery.com>
24
25=== added file 'gcc/testsuite/g++.dg/tree-ssa/sink-1.C'
26--- old/gcc/testsuite/g++.dg/tree-ssa/sink-1.C 1970-01-01 00:00:00 +0000
27+++ new/gcc/testsuite/g++.dg/tree-ssa/sink-1.C 2010-07-30 12:14:18 +0000
28@@ -0,0 +1,50 @@
29+/* { dg-do run } */
30+/* { dg-options "-O1" } */
31+
32+class A {
33+ public:
34+ A() {}
35+ virtual ~A() {}
36+ void * dostuff();
37+
38+ virtual int dovirtual() = 0;
39+};
40+
41+
42+class B : public A {
43+ public:
44+ B() {}
45+ int dovirtual() { return 0;}
46+ virtual ~B() {};
47+};
48+
49+class C : public B {
50+ public:
51+ C() {}
52+ virtual ~C() {};
53+};
54+
55+void* A::dostuff()
56+{
57+ return (void*)dovirtual();
58+}
59+
60+/* tree-ssa-sink was sinking the inlined destructor for STUFF out of
61+ the first inner block and into the second one, where it was ending up
62+ after the inlined constructor for STUFF2. This is bad because
63+ cfgexpand aliases STUFF and STUFF2 to the same storage at -O1
64+ (i.e., without -fstrict-aliasing), with the result that STUFF2's
65+ vtable was getting trashed. */
66+
67+int main() {
68+ {
69+ B stuff;
70+ stuff.dostuff();
71+ }
72+ {
73+ C stuff2;
74+ stuff2.dostuff();
75+ }
76+ return 0;
77+}
78+
79
80=== modified file 'gcc/tree-ssa-sink.c'
81--- old/gcc/tree-ssa-sink.c 2009-11-28 16:21:00 +0000
82+++ new/gcc/tree-ssa-sink.c 2010-07-30 12:14:18 +0000
83@@ -470,6 +470,47 @@
84 last = false;
85 continue;
86 }
87+
88+ /* We cannot move statements that contain references to block-scope
89+ variables out of that block, as this may lead to incorrect aliasing
90+ when we lay out the stack frame in cfgexpand.c.
91+ In lieu of more sophisticated analysis, be very conservative here
92+ and prohibit moving any statement that references memory out of a
93+ block with variables. */
94+ if (gimple_references_memory_p (stmt))
95+ {
96+ tree fromblock = gimple_block (stmt);
97+ while (fromblock
98+ && fromblock != current_function_decl
99+ && !BLOCK_VARS (fromblock))
100+ fromblock = BLOCK_SUPERCONTEXT (fromblock);
101+ if (fromblock && fromblock != current_function_decl)
102+ {
103+ gimple tostmt;
104+ tree toblock;
105+
106+ if (gsi_end_p (togsi))
107+ tostmt = gimple_seq_last_stmt (gsi_seq (togsi));
108+ else
109+ tostmt = gsi_stmt (togsi);
110+ if (tostmt)
111+ toblock = gimple_block (tostmt);
112+ else
113+ toblock = NULL;
114+ while (toblock
115+ && toblock != current_function_decl
116+ && toblock != fromblock)
117+ toblock = BLOCK_SUPERCONTEXT (toblock);
118+ if (!toblock || toblock != fromblock)
119+ {
120+ if (!gsi_end_p (gsi))
121+ gsi_prev (&gsi);
122+ last = false;
123+ continue;
124+ }
125+ }
126+ }
127+
128 if (dump_file)
129 {
130 fprintf (dump_file, "Sinking ");
131
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99304.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99304.patch
new file mode 100644
index 000000000..ab1296347
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99304.patch
@@ -0,0 +1,81 @@
12010-07-10 Yao Qi <yao@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2009-05-28 Julian Brown <julian@codesourcery.com>
6
7 Merged from Sourcery G++ 4.3:
8
9 libgcc/
10 * config.host (arm*-*-linux*, arm*-*-uclinux*, arm*-*-eabi*)
11 (arm*-*-symbianelf): Add arm/t-divmod-ef to tmake_file.
12 * Makefile.in (LIB2_DIVMOD_EXCEPTION_FLAGS): Set to previous
13 default if not set by a target-specific Makefile fragment.
14 (lib2-divmod-o, lib2-divmod-s-o): Use above.
15 * config/arm/t-divmod-ef: New.
16
17 2010-07-09 Sandra Loosemore <sandra@codesourcery.com>
18
19 Merge from Sourcery G++ 4.4:
20
21=== modified file 'libgcc/Makefile.in'
22--- old/libgcc/Makefile.in 2010-03-30 12:08:52 +0000
23+++ new/libgcc/Makefile.in 2010-07-30 12:21:02 +0000
24@@ -400,18 +400,24 @@
25 endif
26 endif
27
28+ifeq ($(LIB2_DIVMOD_EXCEPTION_FLAGS),)
29+# Provide default flags for compiling divmod functions, if they haven't been
30+# set already by a target-specific Makefile fragment.
31+LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions -fnon-call-exceptions
32+endif
33+
34 # Build LIB2_DIVMOD_FUNCS.
35 lib2-divmod-o = $(patsubst %,%$(objext),$(LIB2_DIVMOD_FUNCS))
36 $(lib2-divmod-o): %$(objext): $(gcc_srcdir)/libgcc2.c
37 $(gcc_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
38- -fexceptions -fnon-call-exceptions $(vis_hide)
39+ $(LIB2_DIVMOD_EXCEPTION_FLAGS) $(vis_hide)
40 libgcc-objects += $(lib2-divmod-o)
41
42 ifeq ($(enable_shared),yes)
43 lib2-divmod-s-o = $(patsubst %,%_s$(objext),$(LIB2_DIVMOD_FUNCS))
44 $(lib2-divmod-s-o): %_s$(objext): $(gcc_srcdir)/libgcc2.c
45 $(gcc_s_compile) -DL$* -c $(gcc_srcdir)/libgcc2.c \
46- -fexceptions -fnon-call-exceptions
47+ $(LIB2_DIVMOD_EXCEPTION_FLAGS)
48 libgcc-s-objects += $(lib2-divmod-s-o)
49 endif
50
51
52=== modified file 'libgcc/config.host'
53--- old/libgcc/config.host 2010-04-02 02:02:18 +0000
54+++ new/libgcc/config.host 2010-07-30 12:21:02 +0000
55@@ -208,12 +208,15 @@
56 arm*-*-netbsd*)
57 ;;
58 arm*-*-linux*) # ARM GNU/Linux with ELF
59+ tmake_file="${tmake_file} arm/t-divmod-ef"
60 ;;
61 arm*-*-uclinux*) # ARM ucLinux
62+ tmake_file="${tmake_file} arm/t-divmod-ef"
63 ;;
64 arm*-*-ecos-elf)
65 ;;
66 arm*-*-eabi* | arm*-*-symbianelf* )
67+ tmake_file="${tmake_file} arm/t-divmod-ef"
68 ;;
69 arm*-*-rtems*)
70 ;;
71
72=== added directory 'libgcc/config/arm'
73=== added file 'libgcc/config/arm/t-divmod-ef'
74--- old/libgcc/config/arm/t-divmod-ef 1970-01-01 00:00:00 +0000
75+++ new/libgcc/config/arm/t-divmod-ef 2010-07-30 12:21:02 +0000
76@@ -0,0 +1,4 @@
77+# On ARM, specifying -fnon-call-exceptions will needlessly pull in
78+# the unwinder in simple programs which use 64-bit division. Omitting
79+# the option is safe.
80+LIB2_DIVMOD_EXCEPTION_FLAGS := -fexceptions
81
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99305.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99305.patch
new file mode 100644
index 000000000..ed25334df
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99305.patch
@@ -0,0 +1,52 @@
1 2009-09-02 Daniel Jacobowitz <dan@codesourcery.com>
2
3 libgcc/
4 * shared-object.mk (c_flags-$(base)$(objext)): New.
5 ($(base)$(objext)): Use above.
6 ($(base)_s$(objext)): Likewise.
7 * static-object.mk (c_flags-$(base)$(objext)): New.
8 ($(base)$(objext)): Use above.
9
102010-07-10 Yao Qi <yao@codesourcery.com>
11
12 Merge from Sourcery G++ 4.4:
13
14 2009-05-28 Julian Brown <julian@codesourcery.com>
15
16 Merged from Sourcery G++ 4.3:
17
18=== modified file 'libgcc/shared-object.mk'
19--- old/libgcc/shared-object.mk 2008-07-03 18:22:00 +0000
20+++ new/libgcc/shared-object.mk 2010-07-30 13:11:02 +0000
21@@ -8,11 +8,13 @@
22
23 ifeq ($(suffix $o),.c)
24
25+c_flags-$(base)$(objext) := $(c_flags)
26 $(base)$(objext): $o
27- $(gcc_compile) $(c_flags) -c $< $(vis_hide)
28+ $(gcc_compile) $(c_flags-$@) -c $< $(vis_hide)
29
30+c_flags-$(base)_s$(objext) := $(c_flags)
31 $(base)_s$(objext): $o
32- $(gcc_s_compile) $(c_flags) -c $<
33+ $(gcc_s_compile) $(c_flags-$@) -c $<
34
35 else
36
37
38=== modified file 'libgcc/static-object.mk'
39--- old/libgcc/static-object.mk 2007-01-04 04:22:37 +0000
40+++ new/libgcc/static-object.mk 2010-07-30 13:11:02 +0000
41@@ -8,8 +8,9 @@
42
43 ifeq ($(suffix $o),.c)
44
45+c_flags-$(base)$(objext) := $(c_flags)
46 $(base)$(objext): $o
47- $(gcc_compile) $(c_flags) -c $< $(vis_hide)
48+ $(gcc_compile) $(c_flags-$@) -c $< $(vis_hide)
49
50 else
51
52
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99306.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99306.patch
new file mode 100644
index 000000000..423cd5652
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99306.patch
@@ -0,0 +1,1401 @@
12010-07-10 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-05-08 Sandra Loosemore <sandra@codesourcery.com>
6
7 PR middle-end/28685
8
9 gcc/
10 * tree-ssa-reassoc.c (eliminate_redundant_comparison): New function.
11 (optimize_ops_list): Call it.
12
13 gcc/testsuite/
14 * gcc.dg/pr28685-1.c: New file.
15
16 2010-06-08 Sandra Loosemore <sandra@codesourcery.com>
17
18 PR tree-optimization/39874
19 PR middle-end/28685
20
21 gcc/
22 * gimple.h (maybe_fold_and_comparisons, maybe_fold_or_comparisons):
23 Declare.
24 * gimple-fold.c (canonicalize_bool, same_bool_comparison_p,
25 same_bool_result_p): New.
26 (and_var_with_comparison, and_var_with_comparison_1,
27 and_comparisons_1, and_comparisons, maybe_fold_and_comparisons): New.
28 (or_var_with_comparison, or_var_with_comparison_1,
29 or_comparisons_1, or_comparisons, maybe_fold_or_comparisons): New.
30 * tree-ssa-reassoc.c (eliminate_redundant_comparison): Use
31 maybe_fold_and_comparisons or maybe_fold_or_comparisons instead
32 of combine_comparisons.
33 * tree-ssa-ifcombine.c (ifcombine_ifandif, ifcombine_iforif): Likewise.
34
35 gcc/testsuite/
36 * gcc.dg/pr39874.c: New file.
37
38 2010-07-10 Yao Qi <yao@codesourcery.com>
39
40 Merge from Sourcery G++ 4.4:
41
42=== modified file 'gcc/gimple.h'
43--- old/gcc/gimple.h 2010-04-02 18:54:46 +0000
44+++ new/gcc/gimple.h 2010-07-30 13:21:51 +0000
45@@ -4743,4 +4743,9 @@
46
47 extern void dump_gimple_statistics (void);
48
49+extern tree maybe_fold_and_comparisons (enum tree_code, tree, tree,
50+ enum tree_code, tree, tree);
51+extern tree maybe_fold_or_comparisons (enum tree_code, tree, tree,
52+ enum tree_code, tree, tree);
53+
54 #endif /* GCC_GIMPLE_H */
55
56=== added file 'gcc/testsuite/gcc.dg/pr28685-1.c'
57--- old/gcc/testsuite/gcc.dg/pr28685-1.c 1970-01-01 00:00:00 +0000
58+++ new/gcc/testsuite/gcc.dg/pr28685-1.c 2010-07-30 13:21:51 +0000
59@@ -0,0 +1,50 @@
60+/* { dg-do compile } */
61+/* { dg-options "-O2 -fdump-tree-optimized" } */
62+
63+/* Should produce <=. */
64+int test1 (int a, int b)
65+{
66+ return (a < b || a == b);
67+}
68+
69+/* Should produce <=. */
70+int test2 (int a, int b)
71+{
72+ int lt = a < b;
73+ int eq = a == b;
74+
75+ return (lt || eq);
76+}
77+
78+/* Should produce <= (just deleting redundant test). */
79+int test3 (int a, int b)
80+{
81+ int lt = a <= b;
82+ int eq = a == b;
83+
84+ return (lt || eq);
85+}
86+
87+/* Should produce <= (operands reversed to test the swap logic). */
88+int test4 (int a, int b)
89+{
90+ int lt = a < b;
91+ int eq = b == a;
92+
93+ return (lt || eq);
94+}
95+
96+/* Should produce constant 0. */
97+int test5 (int a, int b)
98+{
99+ int lt = a < b;
100+ int eq = a == b;
101+
102+ return (lt && eq);
103+}
104+
105+/* { dg-final { scan-tree-dump-times " <= " 4 "optimized" } } */
106+/* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
107+/* { dg-final { scan-tree-dump-not " < " "optimized" } } */
108+/* { dg-final { scan-tree-dump-not " == " "optimized" } } */
109+/* { dg-final { cleanup-tree-dump "optimized" } } */
110
111=== added file 'gcc/testsuite/gcc.dg/pr39874.c'
112--- old/gcc/testsuite/gcc.dg/pr39874.c 1970-01-01 00:00:00 +0000
113+++ new/gcc/testsuite/gcc.dg/pr39874.c 2010-07-30 13:21:51 +0000
114@@ -0,0 +1,29 @@
115+/* { dg-do compile } */
116+/* { dg-options "-O2 -fdump-tree-optimized" } */
117+
118+extern void func();
119+
120+void test1(char *signature)
121+{
122+ char ch = signature[0];
123+ if (ch == 15 || ch == 3)
124+ {
125+ if (ch == 15) func();
126+ }
127+}
128+
129+
130+void test2(char *signature)
131+{
132+ char ch = signature[0];
133+ if (ch == 15 || ch == 3)
134+ {
135+ if (ch > 14) func();
136+ }
137+}
138+
139+/* { dg-final { scan-tree-dump-times " == 15" 2 "optimized" } } */
140+/* { dg-final { scan-tree-dump-not " == 3" "optimized" } } */
141+/* { dg-final { cleanup-tree-dump "optimized" } } */
142+
143+
144
145=== modified file 'gcc/tree-ssa-ccp.c'
146--- old/gcc/tree-ssa-ccp.c 2010-04-02 15:50:04 +0000
147+++ new/gcc/tree-ssa-ccp.c 2010-07-30 13:21:51 +0000
148@@ -3176,6 +3176,1056 @@
149 return changed;
150 }
151
152+/* Canonicalize and possibly invert the boolean EXPR; return NULL_TREE
153+ if EXPR is null or we don't know how.
154+ If non-null, the result always has boolean type. */
155+
156+static tree
157+canonicalize_bool (tree expr, bool invert)
158+{
159+ if (!expr)
160+ return NULL_TREE;
161+ else if (invert)
162+ {
163+ if (integer_nonzerop (expr))
164+ return boolean_false_node;
165+ else if (integer_zerop (expr))
166+ return boolean_true_node;
167+ else if (TREE_CODE (expr) == SSA_NAME)
168+ return fold_build2 (EQ_EXPR, boolean_type_node, expr,
169+ build_int_cst (TREE_TYPE (expr), 0));
170+ else if (TREE_CODE_CLASS (TREE_CODE (expr)) == tcc_comparison)
171+ return fold_build2 (invert_tree_comparison (TREE_CODE (expr), false),
172+ boolean_type_node,
173+ TREE_OPERAND (expr, 0),
174+ TREE_OPERAND (expr, 1));
175+ else
176+ return NULL_TREE;
177+ }
178+ else
179+ {
180+ if (TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE)
181+ return expr;
182+ if (integer_nonzerop (expr))
183+ return boolean_true_node;
184+ else if (integer_zerop (expr))
185+ return boolean_false_node;
186+ else if (TREE_CODE (expr) == SSA_NAME)
187+ return fold_build2 (NE_EXPR, boolean_type_node, expr,
188+ build_int_cst (TREE_TYPE (expr), 0));
189+ else if (TREE_CODE_CLASS (TREE_CODE (expr)) == tcc_comparison)
190+ return fold_build2 (TREE_CODE (expr),
191+ boolean_type_node,
192+ TREE_OPERAND (expr, 0),
193+ TREE_OPERAND (expr, 1));
194+ else
195+ return NULL_TREE;
196+ }
197+}
198+
199+/* Check to see if a boolean expression EXPR is logically equivalent to the
200+ comparison (OP1 CODE OP2). Check for various identities involving
201+ SSA_NAMEs. */
202+
203+static bool
204+same_bool_comparison_p (const_tree expr, enum tree_code code,
205+ const_tree op1, const_tree op2)
206+{
207+ gimple s;
208+
209+ /* The obvious case. */
210+ if (TREE_CODE (expr) == code
211+ && operand_equal_p (TREE_OPERAND (expr, 0), op1, 0)
212+ && operand_equal_p (TREE_OPERAND (expr, 1), op2, 0))
213+ return true;
214+
215+ /* Check for comparing (name, name != 0) and the case where expr
216+ is an SSA_NAME with a definition matching the comparison. */
217+ if (TREE_CODE (expr) == SSA_NAME
218+ && TREE_CODE (TREE_TYPE (expr)) == BOOLEAN_TYPE)
219+ {
220+ if (operand_equal_p (expr, op1, 0))
221+ return ((code == NE_EXPR && integer_zerop (op2))
222+ || (code == EQ_EXPR && integer_nonzerop (op2)));
223+ s = SSA_NAME_DEF_STMT (expr);
224+ if (is_gimple_assign (s)
225+ && gimple_assign_rhs_code (s) == code
226+ && operand_equal_p (gimple_assign_rhs1 (s), op1, 0)
227+ && operand_equal_p (gimple_assign_rhs2 (s), op2, 0))
228+ return true;
229+ }
230+
231+ /* If op1 is of the form (name != 0) or (name == 0), and the definition
232+ of name is a comparison, recurse. */
233+ if (TREE_CODE (op1) == SSA_NAME
234+ && TREE_CODE (TREE_TYPE (op1)) == BOOLEAN_TYPE)
235+ {
236+ s = SSA_NAME_DEF_STMT (op1);
237+ if (is_gimple_assign (s)
238+ && TREE_CODE_CLASS (gimple_assign_rhs_code (s)) == tcc_comparison)
239+ {
240+ enum tree_code c = gimple_assign_rhs_code (s);
241+ if ((c == NE_EXPR && integer_zerop (op2))
242+ || (c == EQ_EXPR && integer_nonzerop (op2)))
243+ return same_bool_comparison_p (expr, c,
244+ gimple_assign_rhs1 (s),
245+ gimple_assign_rhs2 (s));
246+ if ((c == EQ_EXPR && integer_zerop (op2))
247+ || (c == NE_EXPR && integer_nonzerop (op2)))
248+ return same_bool_comparison_p (expr,
249+ invert_tree_comparison (c, false),
250+ gimple_assign_rhs1 (s),
251+ gimple_assign_rhs2 (s));
252+ }
253+ }
254+ return false;
255+}
256+
257+/* Check to see if two boolean expressions OP1 and OP2 are logically
258+ equivalent. */
259+
260+static bool
261+same_bool_result_p (const_tree op1, const_tree op2)
262+{
263+ /* Simple cases first. */
264+ if (operand_equal_p (op1, op2, 0))
265+ return true;
266+
267+ /* Check the cases where at least one of the operands is a comparison.
268+ These are a bit smarter than operand_equal_p in that they apply some
269+ identifies on SSA_NAMEs. */
270+ if (TREE_CODE_CLASS (TREE_CODE (op2)) == tcc_comparison
271+ && same_bool_comparison_p (op1, TREE_CODE (op2),
272+ TREE_OPERAND (op2, 0),
273+ TREE_OPERAND (op2, 1)))
274+ return true;
275+ if (TREE_CODE_CLASS (TREE_CODE (op1)) == tcc_comparison
276+ && same_bool_comparison_p (op2, TREE_CODE (op1),
277+ TREE_OPERAND (op1, 0),
278+ TREE_OPERAND (op1, 1)))
279+ return true;
280+
281+ /* Default case. */
282+ return false;
283+}
284+
285+/* Forward declarations for some mutually recursive functions. */
286+
287+static tree
288+and_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
289+ enum tree_code code2, tree op2a, tree op2b);
290+static tree
291+and_var_with_comparison (tree var, bool invert,
292+ enum tree_code code2, tree op2a, tree op2b);
293+static tree
294+and_var_with_comparison_1 (gimple stmt,
295+ enum tree_code code2, tree op2a, tree op2b);
296+static tree
297+or_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
298+ enum tree_code code2, tree op2a, tree op2b);
299+static tree
300+or_var_with_comparison (tree var, bool invert,
301+ enum tree_code code2, tree op2a, tree op2b);
302+static tree
303+or_var_with_comparison_1 (gimple stmt,
304+ enum tree_code code2, tree op2a, tree op2b);
305+
306+/* Helper function for and_comparisons_1: try to simplify the AND of the
307+ ssa variable VAR with the comparison specified by (OP2A CODE2 OP2B).
308+ If INVERT is true, invert the value of the VAR before doing the AND.
309+ Return NULL_EXPR if we can't simplify this to a single expression. */
310+
311+static tree
312+and_var_with_comparison (tree var, bool invert,
313+ enum tree_code code2, tree op2a, tree op2b)
314+{
315+ tree t;
316+ gimple stmt = SSA_NAME_DEF_STMT (var);
317+
318+ /* We can only deal with variables whose definitions are assignments. */
319+ if (!is_gimple_assign (stmt))
320+ return NULL_TREE;
321+
322+ /* If we have an inverted comparison, apply DeMorgan's law and rewrite
323+ !var AND (op2a code2 op2b) => !(var OR !(op2a code2 op2b))
324+ Then we only have to consider the simpler non-inverted cases. */
325+ if (invert)
326+ t = or_var_with_comparison_1 (stmt,
327+ invert_tree_comparison (code2, false),
328+ op2a, op2b);
329+ else
330+ t = and_var_with_comparison_1 (stmt, code2, op2a, op2b);
331+ return canonicalize_bool (t, invert);
332+}
333+
334+/* Try to simplify the AND of the ssa variable defined by the assignment
335+ STMT with the comparison specified by (OP2A CODE2 OP2B).
336+ Return NULL_EXPR if we can't simplify this to a single expression. */
337+
338+static tree
339+and_var_with_comparison_1 (gimple stmt,
340+ enum tree_code code2, tree op2a, tree op2b)
341+{
342+ tree var = gimple_assign_lhs (stmt);
343+ tree true_test_var = NULL_TREE;
344+ tree false_test_var = NULL_TREE;
345+ enum tree_code innercode = gimple_assign_rhs_code (stmt);
346+
347+ /* Check for identities like (var AND (var == 0)) => false. */
348+ if (TREE_CODE (op2a) == SSA_NAME
349+ && TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE)
350+ {
351+ if ((code2 == NE_EXPR && integer_zerop (op2b))
352+ || (code2 == EQ_EXPR && integer_nonzerop (op2b)))
353+ {
354+ true_test_var = op2a;
355+ if (var == true_test_var)
356+ return var;
357+ }
358+ else if ((code2 == EQ_EXPR && integer_zerop (op2b))
359+ || (code2 == NE_EXPR && integer_nonzerop (op2b)))
360+ {
361+ false_test_var = op2a;
362+ if (var == false_test_var)
363+ return boolean_false_node;
364+ }
365+ }
366+
367+ /* If the definition is a comparison, recurse on it. */
368+ if (TREE_CODE_CLASS (innercode) == tcc_comparison)
369+ {
370+ tree t = and_comparisons_1 (innercode,
371+ gimple_assign_rhs1 (stmt),
372+ gimple_assign_rhs2 (stmt),
373+ code2,
374+ op2a,
375+ op2b);
376+ if (t)
377+ return t;
378+ }
379+
380+ /* If the definition is an AND or OR expression, we may be able to
381+ simplify by reassociating. */
382+ if (innercode == TRUTH_AND_EXPR
383+ || innercode == TRUTH_OR_EXPR
384+ || (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
385+ && (innercode == BIT_AND_EXPR || innercode == BIT_IOR_EXPR)))
386+ {
387+ tree inner1 = gimple_assign_rhs1 (stmt);
388+ tree inner2 = gimple_assign_rhs2 (stmt);
389+ gimple s;
390+ tree t;
391+ tree partial = NULL_TREE;
392+ bool is_and = (innercode == TRUTH_AND_EXPR || innercode == BIT_AND_EXPR);
393+
394+ /* Check for boolean identities that don't require recursive examination
395+ of inner1/inner2:
396+ inner1 AND (inner1 AND inner2) => inner1 AND inner2 => var
397+ inner1 AND (inner1 OR inner2) => inner1
398+ !inner1 AND (inner1 AND inner2) => false
399+ !inner1 AND (inner1 OR inner2) => !inner1 AND inner2
400+ Likewise for similar cases involving inner2. */
401+ if (inner1 == true_test_var)
402+ return (is_and ? var : inner1);
403+ else if (inner2 == true_test_var)
404+ return (is_and ? var : inner2);
405+ else if (inner1 == false_test_var)
406+ return (is_and
407+ ? boolean_false_node
408+ : and_var_with_comparison (inner2, false, code2, op2a, op2b));
409+ else if (inner2 == false_test_var)
410+ return (is_and
411+ ? boolean_false_node
412+ : and_var_with_comparison (inner1, false, code2, op2a, op2b));
413+
414+ /* Next, redistribute/reassociate the AND across the inner tests.
415+ Compute the first partial result, (inner1 AND (op2a code op2b)) */
416+ if (TREE_CODE (inner1) == SSA_NAME
417+ && is_gimple_assign (s = SSA_NAME_DEF_STMT (inner1))
418+ && TREE_CODE_CLASS (gimple_assign_rhs_code (s)) == tcc_comparison
419+ && (t = maybe_fold_and_comparisons (gimple_assign_rhs_code (s),
420+ gimple_assign_rhs1 (s),
421+ gimple_assign_rhs2 (s),
422+ code2, op2a, op2b)))
423+ {
424+ /* Handle the AND case, where we are reassociating:
425+ (inner1 AND inner2) AND (op2a code2 op2b)
426+ => (t AND inner2)
427+ If the partial result t is a constant, we win. Otherwise
428+ continue on to try reassociating with the other inner test. */
429+ if (is_and)
430+ {
431+ if (integer_onep (t))
432+ return inner2;
433+ else if (integer_zerop (t))
434+ return boolean_false_node;
435+ }
436+
437+ /* Handle the OR case, where we are redistributing:
438+ (inner1 OR inner2) AND (op2a code2 op2b)
439+ => (t OR (inner2 AND (op2a code2 op2b))) */
440+ else
441+ {
442+ if (integer_onep (t))
443+ return boolean_true_node;
444+ else
445+ /* Save partial result for later. */
446+ partial = t;
447+ }
448+ }
449+
450+ /* Compute the second partial result, (inner2 AND (op2a code op2b)) */
451+ if (TREE_CODE (inner2) == SSA_NAME
452+ && is_gimple_assign (s = SSA_NAME_DEF_STMT (inner2))
453+ && TREE_CODE_CLASS (gimple_assign_rhs_code (s)) == tcc_comparison
454+ && (t = maybe_fold_and_comparisons (gimple_assign_rhs_code (s),
455+ gimple_assign_rhs1 (s),
456+ gimple_assign_rhs2 (s),
457+ code2, op2a, op2b)))
458+ {
459+ /* Handle the AND case, where we are reassociating:
460+ (inner1 AND inner2) AND (op2a code2 op2b)
461+ => (inner1 AND t) */
462+ if (is_and)
463+ {
464+ if (integer_onep (t))
465+ return inner1;
466+ else if (integer_zerop (t))
467+ return boolean_false_node;
468+ }
469+
470+ /* Handle the OR case. where we are redistributing:
471+ (inner1 OR inner2) AND (op2a code2 op2b)
472+ => (t OR (inner1 AND (op2a code2 op2b)))
473+ => (t OR partial) */
474+ else
475+ {
476+ if (integer_onep (t))
477+ return boolean_true_node;
478+ else if (partial)
479+ {
480+ /* We already got a simplification for the other
481+ operand to the redistributed OR expression. The
482+ interesting case is when at least one is false.
483+ Or, if both are the same, we can apply the identity
484+ (x OR x) == x. */
485+ if (integer_zerop (partial))
486+ return t;
487+ else if (integer_zerop (t))
488+ return partial;
489+ else if (same_bool_result_p (t, partial))
490+ return t;
491+ }
492+ }
493+ }
494+ }
495+ return NULL_TREE;
496+}
497+
498+/* Try to simplify the AND of two comparisons defined by
499+ (OP1A CODE1 OP1B) and (OP2A CODE2 OP2B), respectively.
500+ If this can be done without constructing an intermediate value,
501+ return the resulting tree; otherwise NULL_TREE is returned.
502+ This function is deliberately asymmetric as it recurses on SSA_DEFs
503+ in the first comparison but not the second. */
504+
505+static tree
506+and_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
507+ enum tree_code code2, tree op2a, tree op2b)
508+{
509+ /* First check for ((x CODE1 y) AND (x CODE2 y)). */
510+ if (operand_equal_p (op1a, op2a, 0)
511+ && operand_equal_p (op1b, op2b, 0))
512+ {
513+ tree t = combine_comparisons (UNKNOWN_LOCATION,
514+ TRUTH_ANDIF_EXPR, code1, code2,
515+ boolean_type_node, op1a, op1b);
516+ if (t)
517+ return t;
518+ }
519+
520+ /* Likewise the swapped case of the above. */
521+ if (operand_equal_p (op1a, op2b, 0)
522+ && operand_equal_p (op1b, op2a, 0))
523+ {
524+ tree t = combine_comparisons (UNKNOWN_LOCATION,
525+ TRUTH_ANDIF_EXPR, code1,
526+ swap_tree_comparison (code2),
527+ boolean_type_node, op1a, op1b);
528+ if (t)
529+ return t;
530+ }
531+
532+ /* If both comparisons are of the same value against constants, we might
533+ be able to merge them. */
534+ if (operand_equal_p (op1a, op2a, 0)
535+ && TREE_CODE (op1b) == INTEGER_CST
536+ && TREE_CODE (op2b) == INTEGER_CST)
537+ {
538+ int cmp = tree_int_cst_compare (op1b, op2b);
539+
540+ /* If we have (op1a == op1b), we should either be able to
541+ return that or FALSE, depending on whether the constant op1b
542+ also satisfies the other comparison against op2b. */
543+ if (code1 == EQ_EXPR)
544+ {
545+ bool done = true;
546+ bool val;
547+ switch (code2)
548+ {
549+ case EQ_EXPR: val = (cmp == 0); break;
550+ case NE_EXPR: val = (cmp != 0); break;
551+ case LT_EXPR: val = (cmp < 0); break;
552+ case GT_EXPR: val = (cmp > 0); break;
553+ case LE_EXPR: val = (cmp <= 0); break;
554+ case GE_EXPR: val = (cmp >= 0); break;
555+ default: done = false;
556+ }
557+ if (done)
558+ {
559+ if (val)
560+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
561+ else
562+ return boolean_false_node;
563+ }
564+ }
565+ /* Likewise if the second comparison is an == comparison. */
566+ else if (code2 == EQ_EXPR)
567+ {
568+ bool done = true;
569+ bool val;
570+ switch (code1)
571+ {
572+ case EQ_EXPR: val = (cmp == 0); break;
573+ case NE_EXPR: val = (cmp != 0); break;
574+ case LT_EXPR: val = (cmp > 0); break;
575+ case GT_EXPR: val = (cmp < 0); break;
576+ case LE_EXPR: val = (cmp >= 0); break;
577+ case GE_EXPR: val = (cmp <= 0); break;
578+ default: done = false;
579+ }
580+ if (done)
581+ {
582+ if (val)
583+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
584+ else
585+ return boolean_false_node;
586+ }
587+ }
588+
589+ /* Same business with inequality tests. */
590+ else if (code1 == NE_EXPR)
591+ {
592+ bool val;
593+ switch (code2)
594+ {
595+ case EQ_EXPR: val = (cmp != 0); break;
596+ case NE_EXPR: val = (cmp == 0); break;
597+ case LT_EXPR: val = (cmp >= 0); break;
598+ case GT_EXPR: val = (cmp <= 0); break;
599+ case LE_EXPR: val = (cmp > 0); break;
600+ case GE_EXPR: val = (cmp < 0); break;
601+ default:
602+ val = false;
603+ }
604+ if (val)
605+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
606+ }
607+ else if (code2 == NE_EXPR)
608+ {
609+ bool val;
610+ switch (code1)
611+ {
612+ case EQ_EXPR: val = (cmp == 0); break;
613+ case NE_EXPR: val = (cmp != 0); break;
614+ case LT_EXPR: val = (cmp <= 0); break;
615+ case GT_EXPR: val = (cmp >= 0); break;
616+ case LE_EXPR: val = (cmp < 0); break;
617+ case GE_EXPR: val = (cmp > 0); break;
618+ default:
619+ val = false;
620+ }
621+ if (val)
622+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
623+ }
624+
625+ /* Chose the more restrictive of two < or <= comparisons. */
626+ else if ((code1 == LT_EXPR || code1 == LE_EXPR)
627+ && (code2 == LT_EXPR || code2 == LE_EXPR))
628+ {
629+ if ((cmp < 0) || (cmp == 0 && code1 == LT_EXPR))
630+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
631+ else
632+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
633+ }
634+
635+ /* Likewise chose the more restrictive of two > or >= comparisons. */
636+ else if ((code1 == GT_EXPR || code1 == GE_EXPR)
637+ && (code2 == GT_EXPR || code2 == GE_EXPR))
638+ {
639+ if ((cmp > 0) || (cmp == 0 && code1 == GT_EXPR))
640+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
641+ else
642+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
643+ }
644+
645+ /* Check for singleton ranges. */
646+ else if (cmp == 0
647+ && ((code1 == LE_EXPR && code2 == GE_EXPR)
648+ || (code1 == GE_EXPR && code2 == LE_EXPR)))
649+ return fold_build2 (EQ_EXPR, boolean_type_node, op1a, op2b);
650+
651+ /* Check for disjoint ranges. */
652+ else if (cmp <= 0
653+ && (code1 == LT_EXPR || code1 == LE_EXPR)
654+ && (code2 == GT_EXPR || code2 == GE_EXPR))
655+ return boolean_false_node;
656+ else if (cmp >= 0
657+ && (code1 == GT_EXPR || code1 == GE_EXPR)
658+ && (code2 == LT_EXPR || code2 == LE_EXPR))
659+ return boolean_false_node;
660+ }
661+
662+ /* Perhaps the first comparison is (NAME != 0) or (NAME == 1) where
663+ NAME's definition is a truth value. See if there are any simplifications
664+ that can be done against the NAME's definition. */
665+ if (TREE_CODE (op1a) == SSA_NAME
666+ && (code1 == NE_EXPR || code1 == EQ_EXPR)
667+ && (integer_zerop (op1b) || integer_onep (op1b)))
668+ {
669+ bool invert = ((code1 == EQ_EXPR && integer_zerop (op1b))
670+ || (code1 == NE_EXPR && integer_onep (op1b)));
671+ gimple stmt = SSA_NAME_DEF_STMT (op1a);
672+ switch (gimple_code (stmt))
673+ {
674+ case GIMPLE_ASSIGN:
675+ /* Try to simplify by copy-propagating the definition. */
676+ return and_var_with_comparison (op1a, invert, code2, op2a, op2b);
677+
678+ case GIMPLE_PHI:
679+ /* If every argument to the PHI produces the same result when
680+ ANDed with the second comparison, we win.
681+ Do not do this unless the type is bool since we need a bool
682+ result here anyway. */
683+ if (TREE_CODE (TREE_TYPE (op1a)) == BOOLEAN_TYPE)
684+ {
685+ tree result = NULL_TREE;
686+ unsigned i;
687+ for (i = 0; i < gimple_phi_num_args (stmt); i++)
688+ {
689+ tree arg = gimple_phi_arg_def (stmt, i);
690+
691+ /* If this PHI has itself as an argument, ignore it.
692+ If all the other args produce the same result,
693+ we're still OK. */
694+ if (arg == gimple_phi_result (stmt))
695+ continue;
696+ else if (TREE_CODE (arg) == INTEGER_CST)
697+ {
698+ if (invert ? integer_nonzerop (arg) : integer_zerop (arg))
699+ {
700+ if (!result)
701+ result = boolean_false_node;
702+ else if (!integer_zerop (result))
703+ return NULL_TREE;
704+ }
705+ else if (!result)
706+ result = fold_build2 (code2, boolean_type_node,
707+ op2a, op2b);
708+ else if (!same_bool_comparison_p (result,
709+ code2, op2a, op2b))
710+ return NULL_TREE;
711+ }
712+ else if (TREE_CODE (arg) == SSA_NAME)
713+ {
714+ tree temp = and_var_with_comparison (arg, invert,
715+ code2, op2a, op2b);
716+ if (!temp)
717+ return NULL_TREE;
718+ else if (!result)
719+ result = temp;
720+ else if (!same_bool_result_p (result, temp))
721+ return NULL_TREE;
722+ }
723+ else
724+ return NULL_TREE;
725+ }
726+ return result;
727+ }
728+
729+ default:
730+ break;
731+ }
732+ }
733+ return NULL_TREE;
734+}
735+
736+/* Try to simplify the AND of two comparisons, specified by
737+ (OP1A CODE1 OP1B) and (OP2B CODE2 OP2B), respectively.
738+ If this can be simplified to a single expression (without requiring
739+ introducing more SSA variables to hold intermediate values),
740+ return the resulting tree. Otherwise return NULL_TREE.
741+ If the result expression is non-null, it has boolean type. */
742+
743+tree
744+maybe_fold_and_comparisons (enum tree_code code1, tree op1a, tree op1b,
745+ enum tree_code code2, tree op2a, tree op2b)
746+{
747+ tree t = and_comparisons_1 (code1, op1a, op1b, code2, op2a, op2b);
748+ if (t)
749+ return t;
750+ else
751+ return and_comparisons_1 (code2, op2a, op2b, code1, op1a, op1b);
752+}
753+
754+/* Helper function for or_comparisons_1: try to simplify the OR of the
755+ ssa variable VAR with the comparison specified by (OP2A CODE2 OP2B).
756+ If INVERT is true, invert the value of VAR before doing the OR.
757+ Return NULL_EXPR if we can't simplify this to a single expression. */
758+
759+static tree
760+or_var_with_comparison (tree var, bool invert,
761+ enum tree_code code2, tree op2a, tree op2b)
762+{
763+ tree t;
764+ gimple stmt = SSA_NAME_DEF_STMT (var);
765+
766+ /* We can only deal with variables whose definitions are assignments. */
767+ if (!is_gimple_assign (stmt))
768+ return NULL_TREE;
769+
770+ /* If we have an inverted comparison, apply DeMorgan's law and rewrite
771+ !var OR (op2a code2 op2b) => !(var AND !(op2a code2 op2b))
772+ Then we only have to consider the simpler non-inverted cases. */
773+ if (invert)
774+ t = and_var_with_comparison_1 (stmt,
775+ invert_tree_comparison (code2, false),
776+ op2a, op2b);
777+ else
778+ t = or_var_with_comparison_1 (stmt, code2, op2a, op2b);
779+ return canonicalize_bool (t, invert);
780+}
781+
782+/* Try to simplify the OR of the ssa variable defined by the assignment
783+ STMT with the comparison specified by (OP2A CODE2 OP2B).
784+ Return NULL_EXPR if we can't simplify this to a single expression. */
785+
786+static tree
787+or_var_with_comparison_1 (gimple stmt,
788+ enum tree_code code2, tree op2a, tree op2b)
789+{
790+ tree var = gimple_assign_lhs (stmt);
791+ tree true_test_var = NULL_TREE;
792+ tree false_test_var = NULL_TREE;
793+ enum tree_code innercode = gimple_assign_rhs_code (stmt);
794+
795+ /* Check for identities like (var OR (var != 0)) => true . */
796+ if (TREE_CODE (op2a) == SSA_NAME
797+ && TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE)
798+ {
799+ if ((code2 == NE_EXPR && integer_zerop (op2b))
800+ || (code2 == EQ_EXPR && integer_nonzerop (op2b)))
801+ {
802+ true_test_var = op2a;
803+ if (var == true_test_var)
804+ return var;
805+ }
806+ else if ((code2 == EQ_EXPR && integer_zerop (op2b))
807+ || (code2 == NE_EXPR && integer_nonzerop (op2b)))
808+ {
809+ false_test_var = op2a;
810+ if (var == false_test_var)
811+ return boolean_true_node;
812+ }
813+ }
814+
815+ /* If the definition is a comparison, recurse on it. */
816+ if (TREE_CODE_CLASS (innercode) == tcc_comparison)
817+ {
818+ tree t = or_comparisons_1 (innercode,
819+ gimple_assign_rhs1 (stmt),
820+ gimple_assign_rhs2 (stmt),
821+ code2,
822+ op2a,
823+ op2b);
824+ if (t)
825+ return t;
826+ }
827+
828+ /* If the definition is an AND or OR expression, we may be able to
829+ simplify by reassociating. */
830+ if (innercode == TRUTH_AND_EXPR
831+ || innercode == TRUTH_OR_EXPR
832+ || (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
833+ && (innercode == BIT_AND_EXPR || innercode == BIT_IOR_EXPR)))
834+ {
835+ tree inner1 = gimple_assign_rhs1 (stmt);
836+ tree inner2 = gimple_assign_rhs2 (stmt);
837+ gimple s;
838+ tree t;
839+ tree partial = NULL_TREE;
840+ bool is_or = (innercode == TRUTH_OR_EXPR || innercode == BIT_IOR_EXPR);
841+
842+ /* Check for boolean identities that don't require recursive examination
843+ of inner1/inner2:
844+ inner1 OR (inner1 OR inner2) => inner1 OR inner2 => var
845+ inner1 OR (inner1 AND inner2) => inner1
846+ !inner1 OR (inner1 OR inner2) => true
847+ !inner1 OR (inner1 AND inner2) => !inner1 OR inner2
848+ */
849+ if (inner1 == true_test_var)
850+ return (is_or ? var : inner1);
851+ else if (inner2 == true_test_var)
852+ return (is_or ? var : inner2);
853+ else if (inner1 == false_test_var)
854+ return (is_or
855+ ? boolean_true_node
856+ : or_var_with_comparison (inner2, false, code2, op2a, op2b));
857+ else if (inner2 == false_test_var)
858+ return (is_or
859+ ? boolean_true_node
860+ : or_var_with_comparison (inner1, false, code2, op2a, op2b));
861+
862+ /* Next, redistribute/reassociate the OR across the inner tests.
863+ Compute the first partial result, (inner1 OR (op2a code op2b)) */
864+ if (TREE_CODE (inner1) == SSA_NAME
865+ && is_gimple_assign (s = SSA_NAME_DEF_STMT (inner1))
866+ && TREE_CODE_CLASS (gimple_assign_rhs_code (s)) == tcc_comparison
867+ && (t = maybe_fold_or_comparisons (gimple_assign_rhs_code (s),
868+ gimple_assign_rhs1 (s),
869+ gimple_assign_rhs2 (s),
870+ code2, op2a, op2b)))
871+ {
872+ /* Handle the OR case, where we are reassociating:
873+ (inner1 OR inner2) OR (op2a code2 op2b)
874+ => (t OR inner2)
875+ If the partial result t is a constant, we win. Otherwise
876+ continue on to try reassociating with the other inner test. */
877+ if (innercode == TRUTH_OR_EXPR)
878+ {
879+ if (integer_onep (t))
880+ return boolean_true_node;
881+ else if (integer_zerop (t))
882+ return inner2;
883+ }
884+
885+ /* Handle the AND case, where we are redistributing:
886+ (inner1 AND inner2) OR (op2a code2 op2b)
887+ => (t AND (inner2 OR (op2a code op2b))) */
888+ else
889+ {
890+ if (integer_zerop (t))
891+ return boolean_false_node;
892+ else
893+ /* Save partial result for later. */
894+ partial = t;
895+ }
896+ }
897+
898+ /* Compute the second partial result, (inner2 OR (op2a code op2b)) */
899+ if (TREE_CODE (inner2) == SSA_NAME
900+ && is_gimple_assign (s = SSA_NAME_DEF_STMT (inner2))
901+ && TREE_CODE_CLASS (gimple_assign_rhs_code (s)) == tcc_comparison
902+ && (t = maybe_fold_or_comparisons (gimple_assign_rhs_code (s),
903+ gimple_assign_rhs1 (s),
904+ gimple_assign_rhs2 (s),
905+ code2, op2a, op2b)))
906+ {
907+ /* Handle the OR case, where we are reassociating:
908+ (inner1 OR inner2) OR (op2a code2 op2b)
909+ => (inner1 OR t) */
910+ if (innercode == TRUTH_OR_EXPR)
911+ {
912+ if (integer_zerop (t))
913+ return inner1;
914+ else if (integer_onep (t))
915+ return boolean_true_node;
916+ }
917+
918+ /* Handle the AND case, where we are redistributing:
919+ (inner1 AND inner2) OR (op2a code2 op2b)
920+ => (t AND (inner1 OR (op2a code2 op2b)))
921+ => (t AND partial) */
922+ else
923+ {
924+ if (integer_zerop (t))
925+ return boolean_false_node;
926+ else if (partial)
927+ {
928+ /* We already got a simplification for the other
929+ operand to the redistributed AND expression. The
930+ interesting case is when at least one is true.
931+ Or, if both are the same, we can apply the identity
932+ (x AND x) == true. */
933+ if (integer_onep (partial))
934+ return t;
935+ else if (integer_onep (t))
936+ return partial;
937+ else if (same_bool_result_p (t, partial))
938+ return boolean_true_node;
939+ }
940+ }
941+ }
942+ }
943+ return NULL_TREE;
944+}
945+
946+/* Try to simplify the OR of two comparisons defined by
947+ (OP1A CODE1 OP1B) and (OP2A CODE2 OP2B), respectively.
948+ If this can be done without constructing an intermediate value,
949+ return the resulting tree; otherwise NULL_TREE is returned.
950+ This function is deliberately asymmetric as it recurses on SSA_DEFs
951+ in the first comparison but not the second. */
952+
953+static tree
954+or_comparisons_1 (enum tree_code code1, tree op1a, tree op1b,
955+ enum tree_code code2, tree op2a, tree op2b)
956+{
957+ /* First check for ((x CODE1 y) OR (x CODE2 y)). */
958+ if (operand_equal_p (op1a, op2a, 0)
959+ && operand_equal_p (op1b, op2b, 0))
960+ {
961+ tree t = combine_comparisons (UNKNOWN_LOCATION,
962+ TRUTH_ORIF_EXPR, code1, code2,
963+ boolean_type_node, op1a, op1b);
964+ if (t)
965+ return t;
966+ }
967+
968+ /* Likewise the swapped case of the above. */
969+ if (operand_equal_p (op1a, op2b, 0)
970+ && operand_equal_p (op1b, op2a, 0))
971+ {
972+ tree t = combine_comparisons (UNKNOWN_LOCATION,
973+ TRUTH_ORIF_EXPR, code1,
974+ swap_tree_comparison (code2),
975+ boolean_type_node, op1a, op1b);
976+ if (t)
977+ return t;
978+ }
979+
980+ /* If both comparisons are of the same value against constants, we might
981+ be able to merge them. */
982+ if (operand_equal_p (op1a, op2a, 0)
983+ && TREE_CODE (op1b) == INTEGER_CST
984+ && TREE_CODE (op2b) == INTEGER_CST)
985+ {
986+ int cmp = tree_int_cst_compare (op1b, op2b);
987+
988+ /* If we have (op1a != op1b), we should either be able to
989+ return that or TRUE, depending on whether the constant op1b
990+ also satisfies the other comparison against op2b. */
991+ if (code1 == NE_EXPR)
992+ {
993+ bool done = true;
994+ bool val;
995+ switch (code2)
996+ {
997+ case EQ_EXPR: val = (cmp == 0); break;
998+ case NE_EXPR: val = (cmp != 0); break;
999+ case LT_EXPR: val = (cmp < 0); break;
1000+ case GT_EXPR: val = (cmp > 0); break;
1001+ case LE_EXPR: val = (cmp <= 0); break;
1002+ case GE_EXPR: val = (cmp >= 0); break;
1003+ default: done = false;
1004+ }
1005+ if (done)
1006+ {
1007+ if (val)
1008+ return boolean_true_node;
1009+ else
1010+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
1011+ }
1012+ }
1013+ /* Likewise if the second comparison is a != comparison. */
1014+ else if (code2 == NE_EXPR)
1015+ {
1016+ bool done = true;
1017+ bool val;
1018+ switch (code1)
1019+ {
1020+ case EQ_EXPR: val = (cmp == 0); break;
1021+ case NE_EXPR: val = (cmp != 0); break;
1022+ case LT_EXPR: val = (cmp > 0); break;
1023+ case GT_EXPR: val = (cmp < 0); break;
1024+ case LE_EXPR: val = (cmp >= 0); break;
1025+ case GE_EXPR: val = (cmp <= 0); break;
1026+ default: done = false;
1027+ }
1028+ if (done)
1029+ {
1030+ if (val)
1031+ return boolean_true_node;
1032+ else
1033+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
1034+ }
1035+ }
1036+
1037+ /* See if an equality test is redundant with the other comparison. */
1038+ else if (code1 == EQ_EXPR)
1039+ {
1040+ bool val;
1041+ switch (code2)
1042+ {
1043+ case EQ_EXPR: val = (cmp == 0); break;
1044+ case NE_EXPR: val = (cmp != 0); break;
1045+ case LT_EXPR: val = (cmp < 0); break;
1046+ case GT_EXPR: val = (cmp > 0); break;
1047+ case LE_EXPR: val = (cmp <= 0); break;
1048+ case GE_EXPR: val = (cmp >= 0); break;
1049+ default:
1050+ val = false;
1051+ }
1052+ if (val)
1053+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
1054+ }
1055+ else if (code2 == EQ_EXPR)
1056+ {
1057+ bool val;
1058+ switch (code1)
1059+ {
1060+ case EQ_EXPR: val = (cmp == 0); break;
1061+ case NE_EXPR: val = (cmp != 0); break;
1062+ case LT_EXPR: val = (cmp > 0); break;
1063+ case GT_EXPR: val = (cmp < 0); break;
1064+ case LE_EXPR: val = (cmp >= 0); break;
1065+ case GE_EXPR: val = (cmp <= 0); break;
1066+ default:
1067+ val = false;
1068+ }
1069+ if (val)
1070+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
1071+ }
1072+
1073+ /* Chose the less restrictive of two < or <= comparisons. */
1074+ else if ((code1 == LT_EXPR || code1 == LE_EXPR)
1075+ && (code2 == LT_EXPR || code2 == LE_EXPR))
1076+ {
1077+ if ((cmp < 0) || (cmp == 0 && code1 == LT_EXPR))
1078+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
1079+ else
1080+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
1081+ }
1082+
1083+ /* Likewise chose the less restrictive of two > or >= comparisons. */
1084+ else if ((code1 == GT_EXPR || code1 == GE_EXPR)
1085+ && (code2 == GT_EXPR || code2 == GE_EXPR))
1086+ {
1087+ if ((cmp > 0) || (cmp == 0 && code1 == GT_EXPR))
1088+ return fold_build2 (code2, boolean_type_node, op2a, op2b);
1089+ else
1090+ return fold_build2 (code1, boolean_type_node, op1a, op1b);
1091+ }
1092+
1093+ /* Check for singleton ranges. */
1094+ else if (cmp == 0
1095+ && ((code1 == LT_EXPR && code2 == GT_EXPR)
1096+ || (code1 == GT_EXPR && code2 == LT_EXPR)))
1097+ return fold_build2 (NE_EXPR, boolean_type_node, op1a, op2b);
1098+
1099+ /* Check for less/greater pairs that don't restrict the range at all. */
1100+ else if (cmp >= 0
1101+ && (code1 == LT_EXPR || code1 == LE_EXPR)
1102+ && (code2 == GT_EXPR || code2 == GE_EXPR))
1103+ return boolean_true_node;
1104+ else if (cmp <= 0
1105+ && (code1 == GT_EXPR || code1 == GE_EXPR)
1106+ && (code2 == LT_EXPR || code2 == LE_EXPR))
1107+ return boolean_true_node;
1108+ }
1109+
1110+ /* Perhaps the first comparison is (NAME != 0) or (NAME == 1) where
1111+ NAME's definition is a truth value. See if there are any simplifications
1112+ that can be done against the NAME's definition. */
1113+ if (TREE_CODE (op1a) == SSA_NAME
1114+ && (code1 == NE_EXPR || code1 == EQ_EXPR)
1115+ && (integer_zerop (op1b) || integer_onep (op1b)))
1116+ {
1117+ bool invert = ((code1 == EQ_EXPR && integer_zerop (op1b))
1118+ || (code1 == NE_EXPR && integer_onep (op1b)));
1119+ gimple stmt = SSA_NAME_DEF_STMT (op1a);
1120+ switch (gimple_code (stmt))
1121+ {
1122+ case GIMPLE_ASSIGN:
1123+ /* Try to simplify by copy-propagating the definition. */
1124+ return or_var_with_comparison (op1a, invert, code2, op2a, op2b);
1125+
1126+ case GIMPLE_PHI:
1127+ /* If every argument to the PHI produces the same result when
1128+ ORed with the second comparison, we win.
1129+ Do not do this unless the type is bool since we need a bool
1130+ result here anyway. */
1131+ if (TREE_CODE (TREE_TYPE (op1a)) == BOOLEAN_TYPE)
1132+ {
1133+ tree result = NULL_TREE;
1134+ unsigned i;
1135+ for (i = 0; i < gimple_phi_num_args (stmt); i++)
1136+ {
1137+ tree arg = gimple_phi_arg_def (stmt, i);
1138+
1139+ /* If this PHI has itself as an argument, ignore it.
1140+ If all the other args produce the same result,
1141+ we're still OK. */
1142+ if (arg == gimple_phi_result (stmt))
1143+ continue;
1144+ else if (TREE_CODE (arg) == INTEGER_CST)
1145+ {
1146+ if (invert ? integer_zerop (arg) : integer_nonzerop (arg))
1147+ {
1148+ if (!result)
1149+ result = boolean_true_node;
1150+ else if (!integer_onep (result))
1151+ return NULL_TREE;
1152+ }
1153+ else if (!result)
1154+ result = fold_build2 (code2, boolean_type_node,
1155+ op2a, op2b);
1156+ else if (!same_bool_comparison_p (result,
1157+ code2, op2a, op2b))
1158+ return NULL_TREE;
1159+ }
1160+ else if (TREE_CODE (arg) == SSA_NAME)
1161+ {
1162+ tree temp = or_var_with_comparison (arg, invert,
1163+ code2, op2a, op2b);
1164+ if (!temp)
1165+ return NULL_TREE;
1166+ else if (!result)
1167+ result = temp;
1168+ else if (!same_bool_result_p (result, temp))
1169+ return NULL_TREE;
1170+ }
1171+ else
1172+ return NULL_TREE;
1173+ }
1174+ return result;
1175+ }
1176+
1177+ default:
1178+ break;
1179+ }
1180+ }
1181+ return NULL_TREE;
1182+}
1183+
1184+/* Try to simplify the OR of two comparisons, specified by
1185+ (OP1A CODE1 OP1B) and (OP2B CODE2 OP2B), respectively.
1186+ If this can be simplified to a single expression (without requiring
1187+ introducing more SSA variables to hold intermediate values),
1188+ return the resulting tree. Otherwise return NULL_TREE.
1189+ If the result expression is non-null, it has boolean type. */
1190+
1191+tree
1192+maybe_fold_or_comparisons (enum tree_code code1, tree op1a, tree op1b,
1193+ enum tree_code code2, tree op2a, tree op2b)
1194+{
1195+ tree t = or_comparisons_1 (code1, op1a, op1b, code2, op2a, op2b);
1196+ if (t)
1197+ return t;
1198+ else
1199+ return or_comparisons_1 (code2, op2a, op2b, code1, op1a, op1b);
1200+}
1201+
1202 /* Try to optimize out __builtin_stack_restore. Optimize it out
1203 if there is another __builtin_stack_restore in the same basic
1204 block and no calls or ASM_EXPRs are in between, or if this block's
1205
1206=== modified file 'gcc/tree-ssa-ifcombine.c'
1207--- old/gcc/tree-ssa-ifcombine.c 2009-11-25 10:55:54 +0000
1208+++ new/gcc/tree-ssa-ifcombine.c 2010-07-30 13:21:51 +0000
1209@@ -366,21 +366,16 @@
1210
1211 /* See if we have two comparisons that we can merge into one. */
1212 else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
1213- && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison
1214- && operand_equal_p (gimple_cond_lhs (inner_cond),
1215- gimple_cond_lhs (outer_cond), 0)
1216- && operand_equal_p (gimple_cond_rhs (inner_cond),
1217- gimple_cond_rhs (outer_cond), 0))
1218+ && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison)
1219 {
1220- enum tree_code code1 = gimple_cond_code (inner_cond);
1221- enum tree_code code2 = gimple_cond_code (outer_cond);
1222 tree t;
1223
1224- if (!(t = combine_comparisons (UNKNOWN_LOCATION,
1225- TRUTH_ANDIF_EXPR, code1, code2,
1226- boolean_type_node,
1227- gimple_cond_lhs (outer_cond),
1228- gimple_cond_rhs (outer_cond))))
1229+ if (!(t = maybe_fold_and_comparisons (gimple_cond_code (inner_cond),
1230+ gimple_cond_lhs (inner_cond),
1231+ gimple_cond_rhs (inner_cond),
1232+ gimple_cond_code (outer_cond),
1233+ gimple_cond_lhs (outer_cond),
1234+ gimple_cond_rhs (outer_cond))))
1235 return false;
1236 t = canonicalize_cond_expr_cond (t);
1237 if (!t)
1238@@ -518,22 +513,17 @@
1239 /* See if we have two comparisons that we can merge into one.
1240 This happens for C++ operator overloading where for example
1241 GE_EXPR is implemented as GT_EXPR || EQ_EXPR. */
1242- else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
1243- && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison
1244- && operand_equal_p (gimple_cond_lhs (inner_cond),
1245- gimple_cond_lhs (outer_cond), 0)
1246- && operand_equal_p (gimple_cond_rhs (inner_cond),
1247- gimple_cond_rhs (outer_cond), 0))
1248+ else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison
1249+ && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison)
1250 {
1251- enum tree_code code1 = gimple_cond_code (inner_cond);
1252- enum tree_code code2 = gimple_cond_code (outer_cond);
1253 tree t;
1254
1255- if (!(t = combine_comparisons (UNKNOWN_LOCATION,
1256- TRUTH_ORIF_EXPR, code1, code2,
1257- boolean_type_node,
1258- gimple_cond_lhs (outer_cond),
1259- gimple_cond_rhs (outer_cond))))
1260+ if (!(t = maybe_fold_or_comparisons (gimple_cond_code (inner_cond),
1261+ gimple_cond_lhs (inner_cond),
1262+ gimple_cond_rhs (inner_cond),
1263+ gimple_cond_code (outer_cond),
1264+ gimple_cond_lhs (outer_cond),
1265+ gimple_cond_rhs (outer_cond))))
1266 return false;
1267 t = canonicalize_cond_expr_cond (t);
1268 if (!t)
1269
1270=== modified file 'gcc/tree-ssa-reassoc.c'
1271--- old/gcc/tree-ssa-reassoc.c 2010-01-13 15:04:38 +0000
1272+++ new/gcc/tree-ssa-reassoc.c 2010-07-30 13:21:51 +0000
1273@@ -1159,6 +1159,117 @@
1274 return changed;
1275 }
1276
1277+/* If OPCODE is BIT_IOR_EXPR or BIT_AND_EXPR and CURR is a comparison
1278+ expression, examine the other OPS to see if any of them are comparisons
1279+ of the same values, which we may be able to combine or eliminate.
1280+ For example, we can rewrite (a < b) | (a == b) as (a <= b). */
1281+
1282+static bool
1283+eliminate_redundant_comparison (enum tree_code opcode,
1284+ VEC (operand_entry_t, heap) **ops,
1285+ unsigned int currindex,
1286+ operand_entry_t curr)
1287+{
1288+ tree op1, op2;
1289+ enum tree_code lcode, rcode;
1290+ gimple def1, def2;
1291+ int i;
1292+ operand_entry_t oe;
1293+
1294+ if (opcode != BIT_IOR_EXPR && opcode != BIT_AND_EXPR)
1295+ return false;
1296+
1297+ /* Check that CURR is a comparison. */
1298+ if (TREE_CODE (curr->op) != SSA_NAME)
1299+ return false;
1300+ def1 = SSA_NAME_DEF_STMT (curr->op);
1301+ if (!is_gimple_assign (def1))
1302+ return false;
1303+ lcode = gimple_assign_rhs_code (def1);
1304+ if (TREE_CODE_CLASS (lcode) != tcc_comparison)
1305+ return false;
1306+ op1 = gimple_assign_rhs1 (def1);
1307+ op2 = gimple_assign_rhs2 (def1);
1308+
1309+ /* Now look for a similar comparison in the remaining OPS. */
1310+ for (i = currindex + 1;
1311+ VEC_iterate (operand_entry_t, *ops, i, oe);
1312+ i++)
1313+ {
1314+ tree t;
1315+
1316+ if (TREE_CODE (oe->op) != SSA_NAME)
1317+ continue;
1318+ def2 = SSA_NAME_DEF_STMT (oe->op);
1319+ if (!is_gimple_assign (def2))
1320+ continue;
1321+ rcode = gimple_assign_rhs_code (def2);
1322+ if (TREE_CODE_CLASS (rcode) != tcc_comparison)
1323+ continue;
1324+
1325+ /* If we got here, we have a match. See if we can combine the
1326+ two comparisons. */
1327+ if (opcode == BIT_IOR_EXPR)
1328+ t = maybe_fold_or_comparisons (lcode, op1, op2,
1329+ rcode, gimple_assign_rhs1 (def2),
1330+ gimple_assign_rhs2 (def2));
1331+ else
1332+ t = maybe_fold_and_comparisons (lcode, op1, op2,
1333+ rcode, gimple_assign_rhs1 (def2),
1334+ gimple_assign_rhs2 (def2));
1335+ if (!t)
1336+ continue;
1337+
1338+ /* maybe_fold_and_comparisons and maybe_fold_or_comparisons
1339+ always give us a boolean_type_node value back. If the original
1340+ BIT_AND_EXPR or BIT_IOR_EXPR was of a wider integer type,
1341+ we need to convert. */
1342+ if (!useless_type_conversion_p (TREE_TYPE (curr->op), TREE_TYPE (t)))
1343+ t = fold_convert (TREE_TYPE (curr->op), t);
1344+
1345+ if (dump_file && (dump_flags & TDF_DETAILS))
1346+ {
1347+ fprintf (dump_file, "Equivalence: ");
1348+ print_generic_expr (dump_file, curr->op, 0);
1349+ fprintf (dump_file, " %s ", op_symbol_code (opcode));
1350+ print_generic_expr (dump_file, oe->op, 0);
1351+ fprintf (dump_file, " -> ");
1352+ print_generic_expr (dump_file, t, 0);
1353+ fprintf (dump_file, "\n");
1354+ }
1355+
1356+ /* Now we can delete oe, as it has been subsumed by the new combined
1357+ expression t. */
1358+ VEC_ordered_remove (operand_entry_t, *ops, i);
1359+ reassociate_stats.ops_eliminated ++;
1360+
1361+ /* If t is the same as curr->op, we're done. Otherwise we must
1362+ replace curr->op with t. Special case is if we got a constant
1363+ back, in which case we add it to the end instead of in place of
1364+ the current entry. */
1365+ if (TREE_CODE (t) == INTEGER_CST)
1366+ {
1367+ VEC_ordered_remove (operand_entry_t, *ops, currindex);
1368+ add_to_ops_vec (ops, t);
1369+ }
1370+ else if (!operand_equal_p (t, curr->op, 0))
1371+ {
1372+ tree tmpvar;
1373+ gimple sum;
1374+ enum tree_code subcode;
1375+ tree newop1;
1376+ tree newop2;
1377+ tmpvar = create_tmp_var (TREE_TYPE (t), NULL);
1378+ add_referenced_var (tmpvar);
1379+ extract_ops_from_tree (t, &subcode, &newop1, &newop2);
1380+ sum = build_and_add_sum (tmpvar, newop1, newop2, subcode);
1381+ curr->op = gimple_get_lhs (sum);
1382+ }
1383+ return true;
1384+ }
1385+
1386+ return false;
1387+}
1388
1389 /* Perform various identities and other optimizations on the list of
1390 operand entries, stored in OPS. The tree code for the binary
1391@@ -1220,7 +1331,8 @@
1392 if (eliminate_not_pairs (opcode, ops, i, oe))
1393 return;
1394 if (eliminate_duplicate_pair (opcode, ops, &done, i, oe, oelast)
1395- || (!done && eliminate_plus_minus_pair (opcode, ops, i, oe)))
1396+ || (!done && eliminate_plus_minus_pair (opcode, ops, i, oe))
1397+ || (!done && eliminate_redundant_comparison (opcode, ops, i, oe)))
1398 {
1399 if (done)
1400 return;
1401
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99307.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99307.patch
new file mode 100644
index 000000000..9c936d4fa
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99307.patch
@@ -0,0 +1,138 @@
12010-07-12 Yao Qi <yao@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2009-10-06 Paul Brook <paul@codesourcery.com>
6 Issue #3869
7 gcc/
8 * target.h (gcc_target): Add warn_func_result.
9 * target-def.h (TARGET_WARN_FUNC_RESULT): Define and use.
10 * tree-cfg.h (execute_warn_function_return): Use
11 targetm.warn_func_result.
12 * config/arm/arm.c (TARGET_WARN_FUNC_RESULT): Define.
13 (arm_warn_func_result): New function.
14
15 gcc/testuite/
16 * gcc.target/arm/naked-3.c: New test.
17
18 2010-07-10 Sandra Loosemore <sandra@codesourcery.com>
19
20 Backport from mainline:
21
22=== modified file 'gcc/config/arm/arm.c'
23--- old/gcc/config/arm/arm.c 2010-07-29 16:58:56 +0000
24+++ new/gcc/config/arm/arm.c 2010-07-30 13:58:02 +0000
25@@ -214,6 +214,7 @@
26 static int arm_issue_rate (void);
27 static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
28 static bool arm_allocate_stack_slots_for_args (void);
29+static bool arm_warn_func_result (void);
30 static const char *arm_invalid_parameter_type (const_tree t);
31 static const char *arm_invalid_return_type (const_tree t);
32 static tree arm_promoted_type (const_tree t);
33@@ -378,6 +379,9 @@
34 #undef TARGET_TRAMPOLINE_ADJUST_ADDRESS
35 #define TARGET_TRAMPOLINE_ADJUST_ADDRESS arm_trampoline_adjust_address
36
37+#undef TARGET_WARN_FUNC_RESULT
38+#define TARGET_WARN_FUNC_RESULT arm_warn_func_result
39+
40 #undef TARGET_DEFAULT_SHORT_ENUMS
41 #define TARGET_DEFAULT_SHORT_ENUMS arm_default_short_enums
42
43@@ -2008,6 +2012,14 @@
44 return !IS_NAKED (arm_current_func_type ());
45 }
46
47+static bool
48+arm_warn_func_result (void)
49+{
50+ /* Naked functions are implemented entirely in assembly, including the
51+ return sequence, so suppress warnings about this. */
52+ return !IS_NAKED (arm_current_func_type ());
53+}
54+
55
56 /* Output assembler code for a block containing the constant parts
57 of a trampoline, leaving space for the variable parts.
58
59=== modified file 'gcc/target-def.h'
60--- old/gcc/target-def.h 2010-03-24 20:44:48 +0000
61+++ new/gcc/target-def.h 2010-07-30 13:58:02 +0000
62@@ -212,6 +212,10 @@
63 #define TARGET_EXTRA_LIVE_ON_ENTRY hook_void_bitmap
64 #endif
65
66+#ifndef TARGET_WARN_FUNC_RESULT
67+#define TARGET_WARN_FUNC_RESULT hook_bool_void_true
68+#endif
69+
70 #ifndef TARGET_ASM_FILE_START_APP_OFF
71 #define TARGET_ASM_FILE_START_APP_OFF false
72 #endif
73@@ -1020,6 +1024,7 @@
74 TARGET_EMUTLS, \
75 TARGET_OPTION_HOOKS, \
76 TARGET_EXTRA_LIVE_ON_ENTRY, \
77+ TARGET_WARN_FUNC_RESULT, \
78 TARGET_UNWIND_TABLES_DEFAULT, \
79 TARGET_HAVE_NAMED_SECTIONS, \
80 TARGET_HAVE_SWITCHABLE_BSS_SECTIONS, \
81
82=== modified file 'gcc/target.h'
83--- old/gcc/target.h 2010-03-27 10:27:39 +0000
84+++ new/gcc/target.h 2010-07-30 13:58:02 +0000
85@@ -1171,6 +1171,10 @@
86 bits in the bitmap passed in. */
87 void (*live_on_entry) (bitmap);
88
89+ /* Return false if warnings about missing return statements or suspect
90+ noreturn attributes should be suppressed for the current function. */
91+ bool (*warn_func_result) (void);
92+
93 /* True if unwinding tables should be generated by default. */
94 bool unwind_tables_default;
95
96
97=== added file 'gcc/testsuite/gcc.target/arm/naked-3.c'
98--- old/gcc/testsuite/gcc.target/arm/naked-3.c 1970-01-01 00:00:00 +0000
99+++ new/gcc/testsuite/gcc.target/arm/naked-3.c 2010-07-30 13:58:02 +0000
100@@ -0,0 +1,15 @@
101+/* { dg-do compile } */
102+/* { dg-options "-O2 -Wall" } */
103+/* Check that we do not get warnings about missing return statements
104+ or bogus looking noreturn functions. */
105+int __attribute__((naked))
106+foo(void)
107+{
108+ __asm__ volatile ("mov r0, #1\r\nbx lr\n");
109+}
110+
111+int __attribute__((naked,noreturn))
112+bar(void)
113+{
114+ __asm__ volatile ("frob r0\n");
115+}
116
117=== modified file 'gcc/tree-cfg.c'
118--- old/gcc/tree-cfg.c 2010-03-16 12:31:38 +0000
119+++ new/gcc/tree-cfg.c 2010-07-30 13:58:02 +0000
120@@ -47,6 +47,7 @@
121 #include "value-prof.h"
122 #include "pointer-set.h"
123 #include "tree-inline.h"
124+#include "target.h"
125
126 /* This file contains functions for building the Control Flow Graph (CFG)
127 for a function tree. */
128@@ -7092,6 +7093,9 @@
129 edge e;
130 edge_iterator ei;
131
132+ if (!targetm.warn_func_result())
133+ return 0;
134+
135 /* If we have a path to EXIT, then we do return. */
136 if (TREE_THIS_VOLATILE (cfun->decl)
137 && EDGE_COUNT (EXIT_BLOCK_PTR->preds) > 0)
138
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch
new file mode 100644
index 000000000..bf35a2ed4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99308.patch
@@ -0,0 +1,112 @@
12010-07-15 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline (originally from Sourcery G++ 4.4):
4
5 gcc/cp/
6 2010-04-07 Jie Zhang <jie@codesourcery.com>
7
8 PR c++/42556
9 * typeck2.c (split_nonconstant_init_1): Drop empty CONSTRUCTOR
10 when all of its elements are non-constant and have been split out.
11
12 gcc/testsuite/
13 2010-04-07 Jie Zhang <jie@codesourcery.com>
14
15 PR c++/42556
16 * g++.dg/init/pr42556.C: New test.
17
18 2010-07-12 Yao Qi <yao@codesourcery.com>
19
20 Merge from Sourcery G++ 4.4:
21
22=== modified file 'gcc/cp/typeck2.c'
23--- old/gcc/cp/typeck2.c 2010-02-23 18:32:20 +0000
24+++ new/gcc/cp/typeck2.c 2010-07-30 14:05:57 +0000
25@@ -549,13 +549,15 @@
26 expression to which INIT should be assigned. INIT is a CONSTRUCTOR. */
27
28 static void
29-split_nonconstant_init_1 (tree dest, tree init)
30+split_nonconstant_init_1 (tree dest, tree *initp)
31 {
32 unsigned HOST_WIDE_INT idx;
33+ tree init = *initp;
34 tree field_index, value;
35 tree type = TREE_TYPE (dest);
36 tree inner_type = NULL;
37 bool array_type_p = false;
38+ HOST_WIDE_INT num_type_elements, num_initialized_elements;
39
40 switch (TREE_CODE (type))
41 {
42@@ -567,6 +569,7 @@
43 case RECORD_TYPE:
44 case UNION_TYPE:
45 case QUAL_UNION_TYPE:
46+ num_initialized_elements = 0;
47 FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (init), idx,
48 field_index, value)
49 {
50@@ -589,12 +592,13 @@
51 sub = build3 (COMPONENT_REF, inner_type, dest, field_index,
52 NULL_TREE);
53
54- split_nonconstant_init_1 (sub, value);
55+ split_nonconstant_init_1 (sub, &value);
56 }
57 else if (!initializer_constant_valid_p (value, inner_type))
58 {
59 tree code;
60 tree sub;
61+ HOST_WIDE_INT inner_elements;
62
63 /* FIXME: Ordered removal is O(1) so the whole function is
64 worst-case quadratic. This could be fixed using an aside
65@@ -617,9 +621,22 @@
66 code = build2 (INIT_EXPR, inner_type, sub, value);
67 code = build_stmt (input_location, EXPR_STMT, code);
68 add_stmt (code);
69+
70+ inner_elements = count_type_elements (inner_type, true);
71+ if (inner_elements < 0)
72+ num_initialized_elements = -1;
73+ else if (num_initialized_elements >= 0)
74+ num_initialized_elements += inner_elements;
75 continue;
76 }
77 }
78+
79+ num_type_elements = count_type_elements (type, true);
80+ /* If all elements of the initializer are non-constant and
81+ have been split out, we don't need the empty CONSTRUCTOR. */
82+ if (num_type_elements > 0
83+ && num_type_elements == num_initialized_elements)
84+ *initp = NULL;
85 break;
86
87 case VECTOR_TYPE:
88@@ -655,7 +672,7 @@
89 if (TREE_CODE (init) == CONSTRUCTOR)
90 {
91 code = push_stmt_list ();
92- split_nonconstant_init_1 (dest, init);
93+ split_nonconstant_init_1 (dest, &init);
94 code = pop_stmt_list (code);
95 DECL_INITIAL (dest) = init;
96 TREE_READONLY (dest) = 0;
97
98=== added file 'gcc/testsuite/g++.dg/init/pr42556.C'
99--- old/gcc/testsuite/g++.dg/init/pr42556.C 1970-01-01 00:00:00 +0000
100+++ new/gcc/testsuite/g++.dg/init/pr42556.C 2010-07-30 14:05:57 +0000
101@@ -0,0 +1,10 @@
102+// { dg-do compile }
103+// { dg-options "-fdump-tree-gimple" }
104+
105+void foo (int a, int b, int c, int d)
106+{
107+ int v[4] = {a, b, c, d};
108+}
109+
110+// { dg-final { scan-tree-dump-not "v = {}" "gimple" } }
111+// { dg-final { cleanup-tree-dump "gimple" } }
112
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99310.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99310.patch
new file mode 100644
index 000000000..da95fba79
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99310.patch
@@ -0,0 +1,36 @@
1 Backport from mainline (originally from Sourcery G++ 4.4):
2
3 gcc/
4 2010-07-07 Jie Zhang <jie@codesourcery.com>
5 * genautomata.c (output_automata_list_min_issue_delay_code):
6 Correctly decompress min_issue_delay.
7
82010-07-15 Jie Zhang <jie@codesourcery.com>
9
10 Issue #8980
11
12 Backport from mainline (originally from Sourcery G++ 4.4):
13
14=== modified file 'gcc/genautomata.c'
15--- old/gcc/genautomata.c 2009-11-25 10:55:54 +0000
16+++ new/gcc/genautomata.c 2010-07-30 14:21:58 +0000
17@@ -7865,12 +7865,15 @@
18 {
19 fprintf (output_file, ") / %d];\n",
20 automaton->min_issue_delay_table_compression_factor);
21- fprintf (output_file, " %s = (%s >> (8 - (",
22+ fprintf (output_file, " %s = (%s >> (8 - ((",
23 TEMPORARY_VARIABLE_NAME, TEMPORARY_VARIABLE_NAME);
24 output_translate_vect_name (output_file, automaton);
25+ fprintf (output_file, " [%s] + ", INTERNAL_INSN_CODE_NAME);
26+ fprintf (output_file, "%s->", CHIP_PARAMETER_NAME);
27+ output_chip_member_name (output_file, automaton);
28+ fprintf (output_file, " * %d)", automaton->insn_equiv_classes_num);
29 fprintf
30- (output_file, " [%s] %% %d + 1) * %d)) & %d;\n",
31- INTERNAL_INSN_CODE_NAME,
32+ (output_file, " %% %d + 1) * %d)) & %d;\n",
33 automaton->min_issue_delay_table_compression_factor,
34 8 / automaton->min_issue_delay_table_compression_factor,
35 (1 << (8 / automaton->min_issue_delay_table_compression_factor))
36
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99312.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99312.patch
new file mode 100644
index 000000000..9f0c98e9c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99312.patch
@@ -0,0 +1,714 @@
12010-07-15 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-06-09 Sandra Loosemore <sandra@codesourcery.com>
6
7 gcc/
8 * tree-ssa-loop-ivopts.c (adjust_setup_cost): New function.
9 (get_computation_cost_at): Use it.
10 (determine_use_iv_cost_condition): Likewise.
11 (determine_iv_cost): Likewise.
12
13 2010-07-05 Sandra Loosemore <sandra@codesourcery.com>
14
15 PR middle-end/42505
16
17 gcc/
18 * tree-ssa-loop-ivopts.c (determine_set_costs): Delete obsolete
19 comments about cost model.
20 (try_add_cand_for): Add second strategy for choosing initial set
21 based on original IVs, controlled by ORIGINALP argument.
22 (get_initial_solution): Add ORIGINALP argument.
23 (find_optimal_iv_set_1): New function, split from find_optimal_iv_set.
24 (find_optimal_iv_set): Try two different strategies for choosing
25 the IV set, and return the one with lower cost.
26
27 gcc/testsuite/
28 * gcc.target/arm/pr42505.c: New test case.
29
30 2010-07-10 Sandra Loosemore <sandra@codesourcery.com>
31
32 PR middle-end/42505
33
34 gcc/
35 * tree-inline.c (estimate_num_insns): Refactor builtin complexity
36 lookup code into....
37 * builtins.c (is_simple_builtin, is_inexpensive_builtin): ...these
38 new functions.
39 * tree.h (is_simple_builtin, is_inexpensive_builtin): Declare.
40 * cfgloopanal.c (target_clobbered_regs): Define.
41 (init_set_costs): Initialize target_clobbered_regs.
42 (estimate_reg_pressure_cost): Add call_p argument. When true,
43 adjust the number of available registers to exclude the
44 call-clobbered registers.
45 * cfgloop.h (target_clobbered_regs): Declare.
46 (estimate_reg_pressure_cost): Adjust declaration.
47 * tree-ssa-loop-ivopts.c (struct ivopts_data): Add body_includes_call.
48 (ivopts_global_cost_for_size): Pass it to estimate_reg_pressure_cost.
49 (determine_set_costs): Dump target_clobbered_regs.
50 (loop_body_includes_call): New function.
51 (tree_ssa_iv_optimize_loop): Use it to initialize new field.
52 * loop-invariant.c (gain_for_invariant): Adjust arguments to pass
53 call_p flag through.
54 (best_gain_for_invariant): Likewise.
55 (find_invariants_to_move): Likewise.
56 (move_single_loop_invariants): Likewise, using already-computed
57 has_call field.
58
59 2010-07-15 Jie Zhang <jie@codesourcery.com>
60
61 Issue #8497, #8893
62
63=== modified file 'gcc/builtins.c'
64--- old/gcc/builtins.c 2010-04-13 12:47:11 +0000
65+++ new/gcc/builtins.c 2010-08-02 13:51:23 +0000
66@@ -13624,3 +13624,123 @@
67 break;
68 }
69 }
70+
71+/* Return true if DECL is a builtin that expands to a constant or similarly
72+ simple code. */
73+bool
74+is_simple_builtin (tree decl)
75+{
76+ if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
77+ switch (DECL_FUNCTION_CODE (decl))
78+ {
79+ /* Builtins that expand to constants. */
80+ case BUILT_IN_CONSTANT_P:
81+ case BUILT_IN_EXPECT:
82+ case BUILT_IN_OBJECT_SIZE:
83+ case BUILT_IN_UNREACHABLE:
84+ /* Simple register moves or loads from stack. */
85+ case BUILT_IN_RETURN_ADDRESS:
86+ case BUILT_IN_EXTRACT_RETURN_ADDR:
87+ case BUILT_IN_FROB_RETURN_ADDR:
88+ case BUILT_IN_RETURN:
89+ case BUILT_IN_AGGREGATE_INCOMING_ADDRESS:
90+ case BUILT_IN_FRAME_ADDRESS:
91+ case BUILT_IN_VA_END:
92+ case BUILT_IN_STACK_SAVE:
93+ case BUILT_IN_STACK_RESTORE:
94+ /* Exception state returns or moves registers around. */
95+ case BUILT_IN_EH_FILTER:
96+ case BUILT_IN_EH_POINTER:
97+ case BUILT_IN_EH_COPY_VALUES:
98+ return true;
99+
100+ default:
101+ return false;
102+ }
103+
104+ return false;
105+}
106+
107+/* Return true if DECL is a builtin that is not expensive, i.e., they are
108+ most probably expanded inline into reasonably simple code. This is a
109+ superset of is_simple_builtin. */
110+bool
111+is_inexpensive_builtin (tree decl)
112+{
113+ if (!decl)
114+ return false;
115+ else if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_MD)
116+ return true;
117+ else if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
118+ switch (DECL_FUNCTION_CODE (decl))
119+ {
120+ case BUILT_IN_ABS:
121+ case BUILT_IN_ALLOCA:
122+ case BUILT_IN_BSWAP32:
123+ case BUILT_IN_BSWAP64:
124+ case BUILT_IN_CLZ:
125+ case BUILT_IN_CLZIMAX:
126+ case BUILT_IN_CLZL:
127+ case BUILT_IN_CLZLL:
128+ case BUILT_IN_CTZ:
129+ case BUILT_IN_CTZIMAX:
130+ case BUILT_IN_CTZL:
131+ case BUILT_IN_CTZLL:
132+ case BUILT_IN_FFS:
133+ case BUILT_IN_FFSIMAX:
134+ case BUILT_IN_FFSL:
135+ case BUILT_IN_FFSLL:
136+ case BUILT_IN_IMAXABS:
137+ case BUILT_IN_FINITE:
138+ case BUILT_IN_FINITEF:
139+ case BUILT_IN_FINITEL:
140+ case BUILT_IN_FINITED32:
141+ case BUILT_IN_FINITED64:
142+ case BUILT_IN_FINITED128:
143+ case BUILT_IN_FPCLASSIFY:
144+ case BUILT_IN_ISFINITE:
145+ case BUILT_IN_ISINF_SIGN:
146+ case BUILT_IN_ISINF:
147+ case BUILT_IN_ISINFF:
148+ case BUILT_IN_ISINFL:
149+ case BUILT_IN_ISINFD32:
150+ case BUILT_IN_ISINFD64:
151+ case BUILT_IN_ISINFD128:
152+ case BUILT_IN_ISNAN:
153+ case BUILT_IN_ISNANF:
154+ case BUILT_IN_ISNANL:
155+ case BUILT_IN_ISNAND32:
156+ case BUILT_IN_ISNAND64:
157+ case BUILT_IN_ISNAND128:
158+ case BUILT_IN_ISNORMAL:
159+ case BUILT_IN_ISGREATER:
160+ case BUILT_IN_ISGREATEREQUAL:
161+ case BUILT_IN_ISLESS:
162+ case BUILT_IN_ISLESSEQUAL:
163+ case BUILT_IN_ISLESSGREATER:
164+ case BUILT_IN_ISUNORDERED:
165+ case BUILT_IN_VA_ARG_PACK:
166+ case BUILT_IN_VA_ARG_PACK_LEN:
167+ case BUILT_IN_VA_COPY:
168+ case BUILT_IN_TRAP:
169+ case BUILT_IN_SAVEREGS:
170+ case BUILT_IN_POPCOUNTL:
171+ case BUILT_IN_POPCOUNTLL:
172+ case BUILT_IN_POPCOUNTIMAX:
173+ case BUILT_IN_POPCOUNT:
174+ case BUILT_IN_PARITYL:
175+ case BUILT_IN_PARITYLL:
176+ case BUILT_IN_PARITYIMAX:
177+ case BUILT_IN_PARITY:
178+ case BUILT_IN_LABS:
179+ case BUILT_IN_LLABS:
180+ case BUILT_IN_PREFETCH:
181+ return true;
182+
183+ default:
184+ return is_simple_builtin (decl);
185+ }
186+
187+ return false;
188+}
189+
190
191=== modified file 'gcc/cfgloop.h'
192--- old/gcc/cfgloop.h 2009-11-25 10:55:54 +0000
193+++ new/gcc/cfgloop.h 2010-08-02 13:51:23 +0000
194@@ -622,13 +622,14 @@
195 /* The properties of the target. */
196
197 extern unsigned target_avail_regs;
198+extern unsigned target_clobbered_regs;
199 extern unsigned target_res_regs;
200 extern unsigned target_reg_cost [2];
201 extern unsigned target_spill_cost [2];
202
203 /* Register pressure estimation for induction variable optimizations & loop
204 invariant motion. */
205-extern unsigned estimate_reg_pressure_cost (unsigned, unsigned, bool);
206+extern unsigned estimate_reg_pressure_cost (unsigned, unsigned, bool, bool);
207 extern void init_set_costs (void);
208
209 /* Loop optimizer initialization. */
210
211=== modified file 'gcc/cfgloopanal.c'
212--- old/gcc/cfgloopanal.c 2009-09-30 08:57:56 +0000
213+++ new/gcc/cfgloopanal.c 2010-08-02 13:51:23 +0000
214@@ -320,6 +320,8 @@
215 /* The properties of the target. */
216
217 unsigned target_avail_regs; /* Number of available registers. */
218+unsigned target_clobbered_regs; /* Number of available registers that are
219+ call-clobbered. */
220 unsigned target_res_regs; /* Number of registers reserved for temporary
221 expressions. */
222 unsigned target_reg_cost[2]; /* The cost for register when there still
223@@ -342,10 +344,15 @@
224 unsigned i;
225
226 target_avail_regs = 0;
227+ target_clobbered_regs = 0;
228 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
229 if (TEST_HARD_REG_BIT (reg_class_contents[GENERAL_REGS], i)
230 && !fixed_regs[i])
231- target_avail_regs++;
232+ {
233+ target_avail_regs++;
234+ if (call_used_regs[i])
235+ target_clobbered_regs++;
236+ }
237
238 target_res_regs = 3;
239
240@@ -379,20 +386,29 @@
241
242 /* Estimates cost of increased register pressure caused by making N_NEW new
243 registers live around the loop. N_OLD is the number of registers live
244- around the loop. */
245+ around the loop. If CALL_P is true, also take into account that
246+ call-used registers may be clobbered in the loop body, reducing the
247+ number of available registers before we spill. */
248
249 unsigned
250-estimate_reg_pressure_cost (unsigned n_new, unsigned n_old, bool speed)
251+estimate_reg_pressure_cost (unsigned n_new, unsigned n_old, bool speed,
252+ bool call_p)
253 {
254 unsigned cost;
255 unsigned regs_needed = n_new + n_old;
256+ unsigned available_regs = target_avail_regs;
257+
258+ /* If there is a call in the loop body, the call-clobbered registers
259+ are not available for loop invariants. */
260+ if (call_p)
261+ available_regs = available_regs - target_clobbered_regs;
262
263 /* If we have enough registers, we should use them and not restrict
264 the transformations unnecessarily. */
265- if (regs_needed + target_res_regs <= target_avail_regs)
266+ if (regs_needed + target_res_regs <= available_regs)
267 return 0;
268
269- if (regs_needed <= target_avail_regs)
270+ if (regs_needed <= available_regs)
271 /* If we are close to running out of registers, try to preserve
272 them. */
273 cost = target_reg_cost [speed] * n_new;
274
275=== modified file 'gcc/loop-invariant.c'
276--- old/gcc/loop-invariant.c 2010-04-02 18:54:46 +0000
277+++ new/gcc/loop-invariant.c 2010-08-02 13:51:23 +0000
278@@ -1173,11 +1173,13 @@
279 /* Calculates gain for eliminating invariant INV. REGS_USED is the number
280 of registers used in the loop, NEW_REGS is the number of new variables
281 already added due to the invariant motion. The number of registers needed
282- for it is stored in *REGS_NEEDED. */
283+ for it is stored in *REGS_NEEDED. SPEED and CALL_P are flags passed
284+ through to estimate_reg_pressure_cost. */
285
286 static int
287 gain_for_invariant (struct invariant *inv, unsigned *regs_needed,
288- unsigned *new_regs, unsigned regs_used, bool speed)
289+ unsigned *new_regs, unsigned regs_used,
290+ bool speed, bool call_p)
291 {
292 int comp_cost, size_cost;
293
294@@ -1188,9 +1190,9 @@
295 if (! flag_ira_loop_pressure)
296 {
297 size_cost = (estimate_reg_pressure_cost (new_regs[0] + regs_needed[0],
298- regs_used, speed)
299+ regs_used, speed, call_p)
300 - estimate_reg_pressure_cost (new_regs[0],
301- regs_used, speed));
302+ regs_used, speed, call_p));
303 }
304 else
305 {
306@@ -1245,7 +1247,8 @@
307
308 static int
309 best_gain_for_invariant (struct invariant **best, unsigned *regs_needed,
310- unsigned *new_regs, unsigned regs_used, bool speed)
311+ unsigned *new_regs, unsigned regs_used,
312+ bool speed, bool call_p)
313 {
314 struct invariant *inv;
315 int i, gain = 0, again;
316@@ -1261,7 +1264,7 @@
317 continue;
318
319 again = gain_for_invariant (inv, aregs_needed, new_regs, regs_used,
320- speed);
321+ speed, call_p);
322 if (again > gain)
323 {
324 gain = again;
325@@ -1314,7 +1317,7 @@
326 /* Determines which invariants to move. */
327
328 static void
329-find_invariants_to_move (bool speed)
330+find_invariants_to_move (bool speed, bool call_p)
331 {
332 int gain;
333 unsigned i, regs_used, regs_needed[N_REG_CLASSES], new_regs[N_REG_CLASSES];
334@@ -1353,7 +1356,8 @@
335 new_regs[ira_reg_class_cover[i]] = 0;
336 }
337 while ((gain = best_gain_for_invariant (&inv, regs_needed,
338- new_regs, regs_used, speed)) > 0)
339+ new_regs, regs_used,
340+ speed, call_p)) > 0)
341 {
342 set_move_mark (inv->invno, gain);
343 if (! flag_ira_loop_pressure)
344@@ -1554,7 +1558,8 @@
345 init_inv_motion_data ();
346
347 find_invariants (loop);
348- find_invariants_to_move (optimize_loop_for_speed_p (loop));
349+ find_invariants_to_move (optimize_loop_for_speed_p (loop),
350+ LOOP_DATA (loop)->has_call);
351 move_invariants (loop);
352
353 free_inv_motion_data ();
354
355=== added file 'gcc/testsuite/gcc.target/arm/pr42505.c'
356--- old/gcc/testsuite/gcc.target/arm/pr42505.c 1970-01-01 00:00:00 +0000
357+++ new/gcc/testsuite/gcc.target/arm/pr42505.c 2010-08-02 13:51:23 +0000
358@@ -0,0 +1,23 @@
359+/* { dg-options "-mthumb -Os -march=armv5te" } */
360+/* { dg-require-effective-target arm_thumb1_ok } */
361+/* { dg-final { scan-assembler-not "str\[\\t \]*r.,\[\\t \]*.sp," } } */
362+
363+struct A {
364+ int f1;
365+ int f2;
366+};
367+
368+int func(int c);
369+
370+/* This function should not need to spill anything to the stack. */
371+int test(struct A* src, struct A* dst, int count)
372+{
373+ while (count--) {
374+ if (!func(src->f2)) {
375+ return 0;
376+ }
377+ *dst++ = *src++;
378+ }
379+
380+ return 1;
381+}
382
383=== modified file 'gcc/tree-inline.c'
384--- old/gcc/tree-inline.c 2010-03-18 20:07:13 +0000
385+++ new/gcc/tree-inline.c 2010-08-02 13:51:23 +0000
386@@ -3246,34 +3246,13 @@
387 if (POINTER_TYPE_P (funtype))
388 funtype = TREE_TYPE (funtype);
389
390- if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_MD)
391+ if (is_simple_builtin (decl))
392+ return 0;
393+ else if (is_inexpensive_builtin (decl))
394 cost = weights->target_builtin_call_cost;
395 else
396 cost = weights->call_cost;
397
398- if (decl && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
399- switch (DECL_FUNCTION_CODE (decl))
400- {
401- case BUILT_IN_CONSTANT_P:
402- return 0;
403- case BUILT_IN_EXPECT:
404- return 0;
405-
406- /* Prefetch instruction is not expensive. */
407- case BUILT_IN_PREFETCH:
408- cost = weights->target_builtin_call_cost;
409- break;
410-
411- /* Exception state returns or moves registers around. */
412- case BUILT_IN_EH_FILTER:
413- case BUILT_IN_EH_POINTER:
414- case BUILT_IN_EH_COPY_VALUES:
415- return 0;
416-
417- default:
418- break;
419- }
420-
421 if (decl)
422 funtype = TREE_TYPE (decl);
423
424
425=== modified file 'gcc/tree-ssa-loop-ivopts.c'
426--- old/gcc/tree-ssa-loop-ivopts.c 2010-04-01 15:18:07 +0000
427+++ new/gcc/tree-ssa-loop-ivopts.c 2010-08-02 13:51:23 +0000
428@@ -257,6 +257,9 @@
429
430 /* Are we optimizing for speed? */
431 bool speed;
432+
433+ /* Whether the loop body includes any function calls. */
434+ bool body_includes_call;
435 };
436
437 /* An assignment of iv candidates to uses. */
438@@ -2926,6 +2929,20 @@
439 return get_computation_at (loop, use, cand, use->stmt);
440 }
441
442+/* Adjust the cost COST for being in loop setup rather than loop body.
443+ If we're optimizing for space, the loop setup overhead is constant;
444+ if we're optimizing for speed, amortize it over the per-iteration cost. */
445+static unsigned
446+adjust_setup_cost (struct ivopts_data *data, unsigned cost)
447+{
448+ if (cost == INFTY)
449+ return cost;
450+ else if (optimize_loop_for_speed_p (data->current_loop))
451+ return cost / AVG_LOOP_NITER (data->current_loop);
452+ else
453+ return cost;
454+}
455+
456 /* Returns cost of addition in MODE. */
457
458 static unsigned
459@@ -3838,8 +3855,8 @@
460 /* Symbol + offset should be compile-time computable so consider that they
461 are added once to the variable, if present. */
462 if (var_present && (symbol_present || offset))
463- cost.cost += add_cost (TYPE_MODE (ctype), speed)
464- / AVG_LOOP_NITER (data->current_loop);
465+ cost.cost += adjust_setup_cost (data,
466+ add_cost (TYPE_MODE (ctype), speed));
467
468 /* Having offset does not affect runtime cost in case it is added to
469 symbol, but it increases complexity. */
470@@ -4104,7 +4121,7 @@
471 elim_cost = force_var_cost (data, bound, &depends_on_elim);
472 /* The bound is a loop invariant, so it will be only computed
473 once. */
474- elim_cost.cost /= AVG_LOOP_NITER (data->current_loop);
475+ elim_cost.cost = adjust_setup_cost (data, elim_cost.cost);
476 }
477 else
478 elim_cost = infinite_cost;
479@@ -4351,7 +4368,7 @@
480 cost_base = force_var_cost (data, base, NULL);
481 cost_step = add_cost (TYPE_MODE (TREE_TYPE (base)), data->speed);
482
483- cost = cost_step + cost_base.cost / AVG_LOOP_NITER (current_loop);
484+ cost = cost_step + adjust_setup_cost (data, cost_base.cost);
485
486 /* Prefer the original ivs unless we may gain something by replacing it.
487 The reason is to make debugging simpler; so this is not relevant for
488@@ -4404,7 +4421,8 @@
489 {
490 /* We add size to the cost, so that we prefer eliminating ivs
491 if possible. */
492- return size + estimate_reg_pressure_cost (size, data->regs_used, data->speed);
493+ return size + estimate_reg_pressure_cost (size, data->regs_used, data->speed,
494+ data->body_includes_call);
495 }
496
497 /* For each size of the induction variable set determine the penalty. */
498@@ -4419,30 +4437,11 @@
499 struct loop *loop = data->current_loop;
500 bitmap_iterator bi;
501
502- /* We use the following model (definitely improvable, especially the
503- cost function -- TODO):
504-
505- We estimate the number of registers available (using MD data), name it A.
506-
507- We estimate the number of registers used by the loop, name it U. This
508- number is obtained as the number of loop phi nodes (not counting virtual
509- registers and bivs) + the number of variables from outside of the loop.
510-
511- We set a reserve R (free regs that are used for temporary computations,
512- etc.). For now the reserve is a constant 3.
513-
514- Let I be the number of induction variables.
515-
516- -- if U + I + R <= A, the cost is I * SMALL_COST (just not to encourage
517- make a lot of ivs without a reason).
518- -- if A - R < U + I <= A, the cost is I * PRES_COST
519- -- if U + I > A, the cost is I * PRES_COST and
520- number of uses * SPILL_COST * (U + I - A) / (U + I) is added. */
521-
522 if (dump_file && (dump_flags & TDF_DETAILS))
523 {
524 fprintf (dump_file, "Global costs:\n");
525 fprintf (dump_file, " target_avail_regs %d\n", target_avail_regs);
526+ fprintf (dump_file, " target_clobbered_regs %d\n", target_clobbered_regs);
527 fprintf (dump_file, " target_reg_cost %d\n", target_reg_cost[data->speed]);
528 fprintf (dump_file, " target_spill_cost %d\n", target_spill_cost[data->speed]);
529 }
530@@ -5062,11 +5061,13 @@
531 }
532
533 /* Tries to extend the sets IVS in the best possible way in order
534- to express the USE. */
535+ to express the USE. If ORIGINALP is true, prefer candidates from
536+ the original set of IVs, otherwise favor important candidates not
537+ based on any memory object. */
538
539 static bool
540 try_add_cand_for (struct ivopts_data *data, struct iv_ca *ivs,
541- struct iv_use *use)
542+ struct iv_use *use, bool originalp)
543 {
544 comp_cost best_cost, act_cost;
545 unsigned i;
546@@ -5085,7 +5086,8 @@
547 iv_ca_set_no_cp (data, ivs, use);
548 }
549
550- /* First try important candidates not based on any memory object. Only if
551+ /* If ORIGINALP is true, try to find the original IV for the use. Otherwise
552+ first try important candidates not based on any memory object. Only if
553 this fails, try the specific ones. Rationale -- in loops with many
554 variables the best choice often is to use just one generic biv. If we
555 added here many ivs specific to the uses, the optimization algorithm later
556@@ -5097,7 +5099,10 @@
557 {
558 cand = iv_cand (data, i);
559
560- if (cand->iv->base_object != NULL_TREE)
561+ if (originalp && cand->pos !=IP_ORIGINAL)
562+ continue;
563+
564+ if (!originalp && cand->iv->base_object != NULL_TREE)
565 continue;
566
567 if (iv_ca_cand_used_p (ivs, cand))
568@@ -5133,8 +5138,13 @@
569 continue;
570
571 /* Already tried this. */
572- if (cand->important && cand->iv->base_object == NULL_TREE)
573- continue;
574+ if (cand->important)
575+ {
576+ if (originalp && cand->pos == IP_ORIGINAL)
577+ continue;
578+ if (!originalp && cand->iv->base_object == NULL_TREE)
579+ continue;
580+ }
581
582 if (iv_ca_cand_used_p (ivs, cand))
583 continue;
584@@ -5168,13 +5178,13 @@
585 /* Finds an initial assignment of candidates to uses. */
586
587 static struct iv_ca *
588-get_initial_solution (struct ivopts_data *data)
589+get_initial_solution (struct ivopts_data *data, bool originalp)
590 {
591 struct iv_ca *ivs = iv_ca_new (data);
592 unsigned i;
593
594 for (i = 0; i < n_iv_uses (data); i++)
595- if (!try_add_cand_for (data, ivs, iv_use (data, i)))
596+ if (!try_add_cand_for (data, ivs, iv_use (data, i), originalp))
597 {
598 iv_ca_free (&ivs);
599 return NULL;
600@@ -5246,14 +5256,12 @@
601 solution and remove the unused ivs while this improves the cost. */
602
603 static struct iv_ca *
604-find_optimal_iv_set (struct ivopts_data *data)
605+find_optimal_iv_set_1 (struct ivopts_data *data, bool originalp)
606 {
607- unsigned i;
608 struct iv_ca *set;
609- struct iv_use *use;
610
611 /* Get the initial solution. */
612- set = get_initial_solution (data);
613+ set = get_initial_solution (data, originalp);
614 if (!set)
615 {
616 if (dump_file && (dump_flags & TDF_DETAILS))
617@@ -5276,11 +5284,46 @@
618 }
619 }
620
621+ return set;
622+}
623+
624+static struct iv_ca *
625+find_optimal_iv_set (struct ivopts_data *data)
626+{
627+ unsigned i;
628+ struct iv_ca *set, *origset;
629+ struct iv_use *use;
630+ comp_cost cost, origcost;
631+
632+ /* Determine the cost based on a strategy that starts with original IVs,
633+ and try again using a strategy that prefers candidates not based
634+ on any IVs. */
635+ origset = find_optimal_iv_set_1 (data, true);
636+ set = find_optimal_iv_set_1 (data, false);
637+
638+ if (!origset && !set)
639+ return NULL;
640+
641+ origcost = origset ? iv_ca_cost (origset) : infinite_cost;
642+ cost = set ? iv_ca_cost (set) : infinite_cost;
643+
644 if (dump_file && (dump_flags & TDF_DETAILS))
645 {
646- comp_cost cost = iv_ca_cost (set);
647- fprintf (dump_file, "Final cost %d (complexity %d)\n\n", cost.cost, cost.complexity);
648- }
649+ fprintf (dump_file, "Original cost %d (complexity %d)\n\n",
650+ origcost.cost, origcost.complexity);
651+ fprintf (dump_file, "Final cost %d (complexity %d)\n\n",
652+ cost.cost, cost.complexity);
653+ }
654+
655+ /* Choose the one with the best cost. */
656+ if (compare_costs (origcost, cost) <= 0)
657+ {
658+ if (set)
659+ iv_ca_free (&set);
660+ set = origset;
661+ }
662+ else if (origset)
663+ iv_ca_free (&origset);
664
665 for (i = 0; i < n_iv_uses (data); i++)
666 {
667@@ -5768,6 +5811,25 @@
668 VEC_free (iv_cand_p, heap, data->iv_candidates);
669 }
670
671+/* Returns true if the loop body BODY includes any function calls. */
672+
673+static bool
674+loop_body_includes_call (basic_block *body, unsigned num_nodes)
675+{
676+ gimple_stmt_iterator gsi;
677+ unsigned i;
678+
679+ for (i = 0; i < num_nodes; i++)
680+ for (gsi = gsi_start_bb (body[i]); !gsi_end_p (gsi); gsi_next (&gsi))
681+ {
682+ gimple stmt = gsi_stmt (gsi);
683+ if (is_gimple_call (stmt)
684+ && !is_inexpensive_builtin (gimple_call_fndecl (stmt)))
685+ return true;
686+ }
687+ return false;
688+}
689+
690 /* Optimizes the LOOP. Returns true if anything changed. */
691
692 static bool
693@@ -5799,6 +5861,7 @@
694 }
695
696 body = get_loop_body (loop);
697+ data->body_includes_call = loop_body_includes_call (body, loop->num_nodes);
698 renumber_gimple_stmt_uids_in_blocks (body, loop->num_nodes);
699 free (body);
700
701
702=== modified file 'gcc/tree.h'
703--- old/gcc/tree.h 2010-04-02 18:54:46 +0000
704+++ new/gcc/tree.h 2010-08-02 13:51:23 +0000
705@@ -4962,6 +4962,8 @@
706 extern bool merge_ranges (int *, tree *, tree *, int, tree, tree, int,
707 tree, tree);
708 extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
709+extern bool is_simple_builtin (tree);
710+extern bool is_inexpensive_builtin (tree);
711
712 /* In convert.c */
713 extern tree strip_float_extensions (tree);
714
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99313.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99313.patch
new file mode 100644
index 000000000..eadce6ec6
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99313.patch
@@ -0,0 +1,37 @@
12010-07-15 Yao Qi <yao@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2010-02-25 Maxim Kuvyrkov <maxim@codesourcery.com>
6
7 gcc/
8 * tree.c (initializer_zerop): Handle STRING_CST.
9
10 2010-07-15 Sandra Loosemore <sandra@codesourcery.com>
11
12 Backport from mainline:
13
14=== modified file 'gcc/tree.c'
15--- old/gcc/tree.c 2010-04-01 15:18:07 +0000
16+++ new/gcc/tree.c 2010-08-02 16:32:37 +0000
17@@ -9335,6 +9335,19 @@
18 return true;
19 }
20
21+ case STRING_CST:
22+ {
23+ int i;
24+
25+ /* We need to loop through all elements to handle cases like
26+ "\0" and "\0foobar". */
27+ for (i = 0; i < TREE_STRING_LENGTH (init); ++i)
28+ if (TREE_STRING_POINTER (init)[i] != '\0')
29+ return false;
30+
31+ return true;
32+ }
33+
34 default:
35 return false;
36 }
37
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99314.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99314.patch
new file mode 100644
index 000000000..216fcac72
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99314.patch
@@ -0,0 +1,433 @@
12010-07-16 Jie Zhang <jie@codesourcery.com>
2
3 Issue #7688
4
5 Backport from mainline:
6
7 gcc/
8 2010-07-12 Jie Zhang <jie@codesourcery.com>
9 * postreload.c (reg_symbol_ref[]): New.
10 (move2add_use_add2_insn): New.
11 (move2add_use_add3_insn): New.
12 (reload_cse_move2add): Handle SYMBOL + OFFSET case.
13 (move2add_note_store): Likewise.
14
15 2010-07-15 Yao Qi <yao@codesourcery.com>
16
17 Merge from Sourcery G++ 4.4:
18
19=== modified file 'gcc/postreload.c'
20--- old/gcc/postreload.c 2010-03-16 10:50:42 +0000
21+++ new/gcc/postreload.c 2010-08-02 16:55:34 +0000
22@@ -1160,17 +1160,19 @@
23 information about register contents we have would be costly, so we
24 use move2add_last_label_luid to note where the label is and then
25 later disable any optimization that would cross it.
26- reg_offset[n] / reg_base_reg[n] / reg_mode[n] are only valid if
27- reg_set_luid[n] is greater than move2add_last_label_luid. */
28+ reg_offset[n] / reg_base_reg[n] / reg_symbol_ref[n] / reg_mode[n]
29+ are only valid if reg_set_luid[n] is greater than
30+ move2add_last_label_luid. */
31 static int reg_set_luid[FIRST_PSEUDO_REGISTER];
32
33 /* If reg_base_reg[n] is negative, register n has been set to
34- reg_offset[n] in mode reg_mode[n] .
35+ reg_offset[n] or reg_symbol_ref[n] + reg_offset[n] in mode reg_mode[n].
36 If reg_base_reg[n] is non-negative, register n has been set to the
37 sum of reg_offset[n] and the value of register reg_base_reg[n]
38 before reg_set_luid[n], calculated in mode reg_mode[n] . */
39 static HOST_WIDE_INT reg_offset[FIRST_PSEUDO_REGISTER];
40 static int reg_base_reg[FIRST_PSEUDO_REGISTER];
41+static rtx reg_symbol_ref[FIRST_PSEUDO_REGISTER];
42 static enum machine_mode reg_mode[FIRST_PSEUDO_REGISTER];
43
44 /* move2add_luid is linearly increased while scanning the instructions
45@@ -1190,6 +1192,151 @@
46 && TRULY_NOOP_TRUNCATION (GET_MODE_BITSIZE (OUTMODE), \
47 GET_MODE_BITSIZE (INMODE))))
48
49+/* This function is called with INSN that sets REG to (SYM + OFF),
50+ while REG is known to already have value (SYM + offset).
51+ This function tries to change INSN into an add instruction
52+ (set (REG) (plus (REG) (OFF - offset))) using the known value.
53+ It also updates the information about REG's known value. */
54+
55+static void
56+move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn)
57+{
58+ rtx pat = PATTERN (insn);
59+ rtx src = SET_SRC (pat);
60+ int regno = REGNO (reg);
61+ rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[regno],
62+ GET_MODE (reg));
63+ bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
64+
65+ /* (set (reg) (plus (reg) (const_int 0))) is not canonical;
66+ use (set (reg) (reg)) instead.
67+ We don't delete this insn, nor do we convert it into a
68+ note, to avoid losing register notes or the return
69+ value flag. jump2 already knows how to get rid of
70+ no-op moves. */
71+ if (new_src == const0_rtx)
72+ {
73+ /* If the constants are different, this is a
74+ truncation, that, if turned into (set (reg)
75+ (reg)), would be discarded. Maybe we should
76+ try a truncMN pattern? */
77+ if (INTVAL (off) == reg_offset [regno])
78+ validate_change (insn, &SET_SRC (pat), reg, 0);
79+ }
80+ else if (rtx_cost (new_src, PLUS, speed) < rtx_cost (src, SET, speed)
81+ && have_add2_insn (reg, new_src))
82+ {
83+ rtx tem = gen_rtx_PLUS (GET_MODE (reg), reg, new_src);
84+ validate_change (insn, &SET_SRC (pat), tem, 0);
85+ }
86+ else if (sym == NULL_RTX && GET_MODE (reg) != BImode)
87+ {
88+ enum machine_mode narrow_mode;
89+ for (narrow_mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
90+ narrow_mode != VOIDmode
91+ && narrow_mode != GET_MODE (reg);
92+ narrow_mode = GET_MODE_WIDER_MODE (narrow_mode))
93+ {
94+ if (have_insn_for (STRICT_LOW_PART, narrow_mode)
95+ && ((reg_offset[regno]
96+ & ~GET_MODE_MASK (narrow_mode))
97+ == (INTVAL (off)
98+ & ~GET_MODE_MASK (narrow_mode))))
99+ {
100+ rtx narrow_reg = gen_rtx_REG (narrow_mode,
101+ REGNO (reg));
102+ rtx narrow_src = gen_int_mode (INTVAL (off),
103+ narrow_mode);
104+ rtx new_set =
105+ gen_rtx_SET (VOIDmode,
106+ gen_rtx_STRICT_LOW_PART (VOIDmode,
107+ narrow_reg),
108+ narrow_src);
109+ if (validate_change (insn, &PATTERN (insn),
110+ new_set, 0))
111+ break;
112+ }
113+ }
114+ }
115+ reg_set_luid[regno] = move2add_luid;
116+ reg_base_reg[regno] = -1;
117+ reg_mode[regno] = GET_MODE (reg);
118+ reg_symbol_ref[regno] = sym;
119+ reg_offset[regno] = INTVAL (off);
120+}
121+
122+
123+/* This function is called with INSN that sets REG to (SYM + OFF),
124+ but REG doesn't have known value (SYM + offset). This function
125+ tries to find another register which is known to already have
126+ value (SYM + offset) and change INSN into an add instruction
127+ (set (REG) (plus (the found register) (OFF - offset))) if such
128+ a register is found. It also updates the information about
129+ REG's known value. */
130+
131+static void
132+move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn)
133+{
134+ rtx pat = PATTERN (insn);
135+ rtx src = SET_SRC (pat);
136+ int regno = REGNO (reg);
137+ int min_cost = INT_MAX;
138+ int min_regno;
139+ bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
140+ int i;
141+
142+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
143+ if (reg_set_luid[i] > move2add_last_label_luid
144+ && reg_mode[i] == GET_MODE (reg)
145+ && reg_base_reg[i] < 0
146+ && reg_symbol_ref[i] != NULL_RTX
147+ && rtx_equal_p (sym, reg_symbol_ref[i]))
148+ {
149+ rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[i],
150+ GET_MODE (reg));
151+ /* (set (reg) (plus (reg) (const_int 0))) is not canonical;
152+ use (set (reg) (reg)) instead.
153+ We don't delete this insn, nor do we convert it into a
154+ note, to avoid losing register notes or the return
155+ value flag. jump2 already knows how to get rid of
156+ no-op moves. */
157+ if (new_src == const0_rtx)
158+ {
159+ min_cost = 0;
160+ min_regno = i;
161+ break;
162+ }
163+ else
164+ {
165+ int cost = rtx_cost (new_src, PLUS, speed);
166+ if (cost < min_cost)
167+ {
168+ min_cost = cost;
169+ min_regno = i;
170+ }
171+ }
172+ }
173+
174+ if (min_cost < rtx_cost (src, SET, speed))
175+ {
176+ rtx tem;
177+
178+ tem = gen_rtx_REG (GET_MODE (reg), min_regno);
179+ if (i != min_regno)
180+ {
181+ rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[min_regno],
182+ GET_MODE (reg));
183+ tem = gen_rtx_PLUS (GET_MODE (reg), tem, new_src);
184+ }
185+ validate_change (insn, &SET_SRC (pat), tem, 0);
186+ }
187+ reg_set_luid[regno] = move2add_luid;
188+ reg_base_reg[regno] = -1;
189+ reg_mode[regno] = GET_MODE (reg);
190+ reg_symbol_ref[regno] = sym;
191+ reg_offset[regno] = INTVAL (off);
192+}
193+
194 static void
195 reload_cse_move2add (rtx first)
196 {
197@@ -1197,7 +1344,13 @@
198 rtx insn;
199
200 for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--)
201- reg_set_luid[i] = 0;
202+ {
203+ reg_set_luid[i] = 0;
204+ reg_offset[i] = 0;
205+ reg_base_reg[i] = 0;
206+ reg_symbol_ref[i] = NULL_RTX;
207+ reg_mode[i] = VOIDmode;
208+ }
209
210 move2add_last_label_luid = 0;
211 move2add_luid = 2;
212@@ -1245,65 +1398,11 @@
213 (set (STRICT_LOW_PART (REGX)) (CONST_INT B))
214 */
215
216- if (CONST_INT_P (src) && reg_base_reg[regno] < 0)
217+ if (CONST_INT_P (src)
218+ && reg_base_reg[regno] < 0
219+ && reg_symbol_ref[regno] == NULL_RTX)
220 {
221- rtx new_src = gen_int_mode (INTVAL (src) - reg_offset[regno],
222- GET_MODE (reg));
223- bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
224-
225- /* (set (reg) (plus (reg) (const_int 0))) is not canonical;
226- use (set (reg) (reg)) instead.
227- We don't delete this insn, nor do we convert it into a
228- note, to avoid losing register notes or the return
229- value flag. jump2 already knows how to get rid of
230- no-op moves. */
231- if (new_src == const0_rtx)
232- {
233- /* If the constants are different, this is a
234- truncation, that, if turned into (set (reg)
235- (reg)), would be discarded. Maybe we should
236- try a truncMN pattern? */
237- if (INTVAL (src) == reg_offset [regno])
238- validate_change (insn, &SET_SRC (pat), reg, 0);
239- }
240- else if (rtx_cost (new_src, PLUS, speed) < rtx_cost (src, SET, speed)
241- && have_add2_insn (reg, new_src))
242- {
243- rtx tem = gen_rtx_PLUS (GET_MODE (reg), reg, new_src);
244- validate_change (insn, &SET_SRC (pat), tem, 0);
245- }
246- else if (GET_MODE (reg) != BImode)
247- {
248- enum machine_mode narrow_mode;
249- for (narrow_mode = GET_CLASS_NARROWEST_MODE (MODE_INT);
250- narrow_mode != VOIDmode
251- && narrow_mode != GET_MODE (reg);
252- narrow_mode = GET_MODE_WIDER_MODE (narrow_mode))
253- {
254- if (have_insn_for (STRICT_LOW_PART, narrow_mode)
255- && ((reg_offset[regno]
256- & ~GET_MODE_MASK (narrow_mode))
257- == (INTVAL (src)
258- & ~GET_MODE_MASK (narrow_mode))))
259- {
260- rtx narrow_reg = gen_rtx_REG (narrow_mode,
261- REGNO (reg));
262- rtx narrow_src = gen_int_mode (INTVAL (src),
263- narrow_mode);
264- rtx new_set =
265- gen_rtx_SET (VOIDmode,
266- gen_rtx_STRICT_LOW_PART (VOIDmode,
267- narrow_reg),
268- narrow_src);
269- if (validate_change (insn, &PATTERN (insn),
270- new_set, 0))
271- break;
272- }
273- }
274- }
275- reg_set_luid[regno] = move2add_luid;
276- reg_mode[regno] = GET_MODE (reg);
277- reg_offset[regno] = INTVAL (src);
278+ move2add_use_add2_insn (reg, NULL_RTX, src, insn);
279 continue;
280 }
281
282@@ -1373,6 +1472,51 @@
283 }
284 }
285 }
286+
287+ /* Try to transform
288+ (set (REGX) (CONST (PLUS (SYMBOL_REF) (CONST_INT A))))
289+ ...
290+ (set (REGY) (CONST (PLUS (SYMBOL_REF) (CONST_INT B))))
291+ to
292+ (set (REGX) (CONST (PLUS (SYMBOL_REF) (CONST_INT A))))
293+ ...
294+ (set (REGY) (CONST (PLUS (REGX) (CONST_INT B-A)))) */
295+ if ((GET_CODE (src) == SYMBOL_REF
296+ || (GET_CODE (src) == CONST
297+ && GET_CODE (XEXP (src, 0)) == PLUS
298+ && GET_CODE (XEXP (XEXP (src, 0), 0)) == SYMBOL_REF
299+ && CONST_INT_P (XEXP (XEXP (src, 0), 1))))
300+ && dbg_cnt (cse2_move2add))
301+ {
302+ rtx sym, off;
303+
304+ if (GET_CODE (src) == SYMBOL_REF)
305+ {
306+ sym = src;
307+ off = const0_rtx;
308+ }
309+ else
310+ {
311+ sym = XEXP (XEXP (src, 0), 0);
312+ off = XEXP (XEXP (src, 0), 1);
313+ }
314+
315+ /* If the reg already contains the value which is sum of
316+ sym and some constant value, we can use an add2 insn. */
317+ if (reg_set_luid[regno] > move2add_last_label_luid
318+ && MODES_OK_FOR_MOVE2ADD (GET_MODE (reg), reg_mode[regno])
319+ && reg_base_reg[regno] < 0
320+ && reg_symbol_ref[regno] != NULL_RTX
321+ && rtx_equal_p (sym, reg_symbol_ref[regno]))
322+ move2add_use_add2_insn (reg, sym, off, insn);
323+
324+ /* Otherwise, we have to find a register whose value is sum
325+ of sym and some constant value. */
326+ else
327+ move2add_use_add3_insn (reg, sym, off, insn);
328+
329+ continue;
330+ }
331 }
332
333 for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
334@@ -1386,7 +1530,7 @@
335 reg_set_luid[regno] = 0;
336 }
337 }
338- note_stores (PATTERN (insn), move2add_note_store, NULL);
339+ note_stores (PATTERN (insn), move2add_note_store, insn);
340
341 /* If INSN is a conditional branch, we try to extract an
342 implicit set out of it. */
343@@ -1408,7 +1552,7 @@
344 {
345 rtx implicit_set =
346 gen_rtx_SET (VOIDmode, XEXP (cnd, 0), XEXP (cnd, 1));
347- move2add_note_store (SET_DEST (implicit_set), implicit_set, 0);
348+ move2add_note_store (SET_DEST (implicit_set), implicit_set, insn);
349 }
350 }
351
352@@ -1426,13 +1570,15 @@
353 }
354 }
355
356-/* SET is a SET or CLOBBER that sets DST.
357+/* SET is a SET or CLOBBER that sets DST. DATA is the insn which
358+ contains SET.
359 Update reg_set_luid, reg_offset and reg_base_reg accordingly.
360 Called from reload_cse_move2add via note_stores. */
361
362 static void
363-move2add_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED)
364+move2add_note_store (rtx dst, const_rtx set, void *data)
365 {
366+ rtx insn = (rtx) data;
367 unsigned int regno = 0;
368 unsigned int nregs = 0;
369 unsigned int i;
370@@ -1466,6 +1612,38 @@
371 nregs = hard_regno_nregs[regno][mode];
372
373 if (SCALAR_INT_MODE_P (GET_MODE (dst))
374+ && nregs == 1 && GET_CODE (set) == SET)
375+ {
376+ rtx note, sym = NULL_RTX;
377+ HOST_WIDE_INT off;
378+
379+ note = find_reg_equal_equiv_note (insn);
380+ if (note && GET_CODE (XEXP (note, 0)) == SYMBOL_REF)
381+ {
382+ sym = XEXP (note, 0);
383+ off = 0;
384+ }
385+ else if (note && GET_CODE (XEXP (note, 0)) == CONST
386+ && GET_CODE (XEXP (XEXP (note, 0), 0)) == PLUS
387+ && GET_CODE (XEXP (XEXP (XEXP (note, 0), 0), 0)) == SYMBOL_REF
388+ && CONST_INT_P (XEXP (XEXP (XEXP (note, 0), 0), 1)))
389+ {
390+ sym = XEXP (XEXP (XEXP (note, 0), 0), 0);
391+ off = INTVAL (XEXP (XEXP (XEXP (note, 0), 0), 1));
392+ }
393+
394+ if (sym != NULL_RTX)
395+ {
396+ reg_base_reg[regno] = -1;
397+ reg_symbol_ref[regno] = sym;
398+ reg_offset[regno] = off;
399+ reg_mode[regno] = mode;
400+ reg_set_luid[regno] = move2add_luid;
401+ return;
402+ }
403+ }
404+
405+ if (SCALAR_INT_MODE_P (GET_MODE (dst))
406 && nregs == 1 && GET_CODE (set) == SET
407 && GET_CODE (SET_DEST (set)) != ZERO_EXTRACT
408 && GET_CODE (SET_DEST (set)) != STRICT_LOW_PART)
409@@ -1525,6 +1703,7 @@
410 case CONST_INT:
411 /* Start tracking the register as a constant. */
412 reg_base_reg[regno] = -1;
413+ reg_symbol_ref[regno] = NULL_RTX;
414 reg_offset[regno] = INTVAL (SET_SRC (set));
415 /* We assign the same luid to all registers set to constants. */
416 reg_set_luid[regno] = move2add_last_label_luid + 1;
417@@ -1545,6 +1724,7 @@
418 if (reg_set_luid[base_regno] <= move2add_last_label_luid)
419 {
420 reg_base_reg[base_regno] = base_regno;
421+ reg_symbol_ref[base_regno] = NULL_RTX;
422 reg_offset[base_regno] = 0;
423 reg_set_luid[base_regno] = move2add_luid;
424 reg_mode[base_regno] = mode;
425@@ -1558,6 +1738,7 @@
426 /* Copy base information from our base register. */
427 reg_set_luid[regno] = reg_set_luid[base_regno];
428 reg_base_reg[regno] = reg_base_reg[base_regno];
429+ reg_symbol_ref[regno] = reg_symbol_ref[base_regno];
430
431 /* Compute the sum of the offsets or constants. */
432 reg_offset[regno] = trunc_int_for_mode (offset
433
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99315.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99315.patch
new file mode 100644
index 000000000..3d5dd5f9a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99315.patch
@@ -0,0 +1,57 @@
12010-08-03 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/
6 2010-07-28 Chung-Lin Tang <cltang@codesourcery.com>
7 * config/arm/arm.c (arm_pcs_default): Remove static.
8 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Define __ARM_PCS or
9 __ARM_PCS_VFP to indicate soft/hard-float calling convention.
10 (arm_pcs_default): Declare.
11
12 2010-07-16 Jie Zhang <jie@codesourcery.com>
13
14 Issue #7688
15
16=== modified file 'gcc/config/arm/arm.c'
17--- old/gcc/config/arm/arm.c 2010-08-02 13:42:24 +0000
18+++ new/gcc/config/arm/arm.c 2010-08-03 13:55:46 +0000
19@@ -704,7 +704,7 @@
20 /* The maximum number of insns to be used when loading a constant. */
21 static int arm_constant_limit = 3;
22
23-static enum arm_pcs arm_pcs_default;
24+enum arm_pcs arm_pcs_default;
25
26 /* For an explanation of these variables, see final_prescan_insn below. */
27 int arm_ccfsm_state;
28
29=== modified file 'gcc/config/arm/arm.h'
30--- old/gcc/config/arm/arm.h 2010-07-29 16:58:56 +0000
31+++ new/gcc/config/arm/arm.h 2010-08-03 10:40:56 +0000
32@@ -94,7 +94,13 @@
33 if (arm_arch_iwmmxt) \
34 builtin_define ("__IWMMXT__"); \
35 if (TARGET_AAPCS_BASED) \
36- builtin_define ("__ARM_EABI__"); \
37+ { \
38+ if (arm_pcs_default == ARM_PCS_AAPCS_VFP) \
39+ builtin_define ("__ARM_PCS_VFP"); \
40+ else if (arm_pcs_default == ARM_PCS_AAPCS) \
41+ builtin_define ("__ARM_PCS"); \
42+ builtin_define ("__ARM_EABI__"); \
43+ } \
44 } while (0)
45
46 /* The various ARM cores. */
47@@ -1648,6 +1654,9 @@
48 ARM_PCS_UNKNOWN
49 };
50
51+/* Default procedure calling standard of current compilation unit. */
52+extern enum arm_pcs arm_pcs_default;
53+
54 /* A C type for declaring a variable that is used as the first argument of
55 `FUNCTION_ARG' and other related values. */
56 typedef struct
57
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99316.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99316.patch
new file mode 100644
index 000000000..c7f92b6fc
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99316.patch
@@ -0,0 +1,76 @@
12010-07-20 Yao Qi <yao@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4 2010-06-07 Kazu Hirata <kazu@codesourcery.com>
5
6 Issue #8535
7
8 Backport from mainline:
9 gcc/
10 2010-06-07 Kazu Hirata <kazu@codesourcery.com>
11 PR rtl-optimization/44404
12 * auto-inc-dec.c (find_inc): Use reg_overlap_mentioned_p instead
13 of count_occurrences to see if it's safe to modify mem_insn.insn.
14
15 gcc/testsuite/
16 2010-06-07 Kazu Hirata <kazu@codesourcery.com>
17 PR rtl-optimization/44404
18 * gcc.dg/pr44404.c: New.
19
20 2010-08-03 Chung-Lin Tang <cltang@codesourcery.com>
21
22 Backport from mainline:
23
24=== modified file 'gcc/auto-inc-dec.c'
25--- old/gcc/auto-inc-dec.c 2010-04-02 18:54:46 +0000
26+++ new/gcc/auto-inc-dec.c 2010-08-05 11:30:21 +0000
27@@ -1068,7 +1068,7 @@
28 /* For the post_add to work, the result_reg of the inc must not be
29 used in the mem insn since this will become the new index
30 register. */
31- if (count_occurrences (PATTERN (mem_insn.insn), inc_insn.reg_res, 1) != 0)
32+ if (reg_overlap_mentioned_p (inc_insn.reg_res, PATTERN (mem_insn.insn)))
33 {
34 if (dump_file)
35 fprintf (dump_file, "base reg replacement failure.\n");
36
37=== added file 'gcc/testsuite/gcc.dg/pr44404.c'
38--- old/gcc/testsuite/gcc.dg/pr44404.c 1970-01-01 00:00:00 +0000
39+++ new/gcc/testsuite/gcc.dg/pr44404.c 2010-08-05 11:30:21 +0000
40@@ -0,0 +1,35 @@
41+/* PR rtl-optimization/44404
42+ foo() used to be miscompiled on ARM due to a bug in auto-inc-dec.c,
43+ which resulted in "strb r1, [r1], #-36". */
44+
45+/* { dg-do run } */
46+/* { dg-options "-O2 -fno-unroll-loops" } */
47+
48+extern char *strcpy (char *, const char *);
49+extern int strcmp (const char*, const char*);
50+extern void abort (void);
51+
52+char buf[128];
53+
54+void __attribute__((noinline))
55+bar (int a, const char *p)
56+{
57+ if (strcmp (p, "0123456789abcdefghijklmnopqrstuvwxyz") != 0)
58+ abort ();
59+}
60+
61+void __attribute__((noinline))
62+foo (int a)
63+{
64+ if (a)
65+ bar (0, buf);
66+ strcpy (buf, "0123456789abcdefghijklmnopqrstuvwxyz");
67+ bar (0, buf);
68+}
69+
70+int
71+main (void)
72+{
73+ foo (0);
74+ return 0;
75+}
76
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99318.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99318.patch
new file mode 100644
index 000000000..ad4943a0a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99318.patch
@@ -0,0 +1,118 @@
12010-07-24 Jie Zhang <jie@codesourcery.com>
2
3 Issue #9079
4
5 Backport from mainline:
6
7 gcc/
8 2010-07-23 Jie Zhang <jie@codesourcery.com>
9 PR target/44290
10 * attribs.c (decl_attributes): Insert "noinline" and "noclone"
11 if "naked".
12 * tree-sra.c (ipa_sra_preliminary_function_checks): Return
13 false if ! tree_versionable_function_p.
14
15 gcc/testsuite/
16 2010-07-23 Jie Zhang <jie@codesourcery.com>
17 PR target/44290
18 * gcc.dg/pr44290-1.c: New test.
19 * gcc.dg/pr44290-2.c: New test.
20
21 2010-07-22 Maxim Kuvyrkov <maxim@codesourcery.com>
22
23 Backport from FSF GCC 4.5 branch to fix PR45015:
24
25=== modified file 'gcc/attribs.c'
26--- old/gcc/attribs.c 2010-04-02 18:54:46 +0000
27+++ new/gcc/attribs.c 2010-08-05 11:39:36 +0000
28@@ -278,6 +278,19 @@
29 TREE_VALUE (cur_attr) = chainon (opts, TREE_VALUE (cur_attr));
30 }
31
32+ /* A "naked" function attribute implies "noinline" and "noclone" for
33+ those targets that support it. */
34+ if (TREE_CODE (*node) == FUNCTION_DECL
35+ && lookup_attribute_spec (get_identifier ("naked"))
36+ && lookup_attribute ("naked", attributes) != NULL)
37+ {
38+ if (lookup_attribute ("noinline", attributes) == NULL)
39+ attributes = tree_cons (get_identifier ("noinline"), NULL, attributes);
40+
41+ if (lookup_attribute ("noclone", attributes) == NULL)
42+ attributes = tree_cons (get_identifier ("noclone"), NULL, attributes);
43+ }
44+
45 targetm.insert_attributes (*node, &attributes);
46
47 for (a = attributes; a; a = TREE_CHAIN (a))
48
49=== added file 'gcc/testsuite/gcc.dg/pr44290-1.c'
50--- old/gcc/testsuite/gcc.dg/pr44290-1.c 1970-01-01 00:00:00 +0000
51+++ new/gcc/testsuite/gcc.dg/pr44290-1.c 2010-08-05 11:39:36 +0000
52@@ -0,0 +1,18 @@
53+/* { dg-do compile { target arm*-*-* avr-*-* mcore-*-* rx-*-* spu-*-* } } */
54+/* { dg-options "-O2 -fdump-tree-optimized" } */
55+
56+static void __attribute__((naked))
57+foo(void *from, void *to)
58+{
59+ asm volatile("dummy"::"r"(from), "r"(to));
60+}
61+
62+unsigned int fie[2];
63+
64+void fum(void *to)
65+{
66+ foo(fie, to);
67+}
68+
69+/* { dg-final { scan-tree-dump "foo \\\(void \\\* from, void \\\* to\\\)" "optimized" } } */
70+/* { dg-final { cleanup-tree-dump "optimized" } } */
71
72=== added file 'gcc/testsuite/gcc.dg/pr44290-2.c'
73--- old/gcc/testsuite/gcc.dg/pr44290-2.c 1970-01-01 00:00:00 +0000
74+++ new/gcc/testsuite/gcc.dg/pr44290-2.c 2010-08-05 11:39:36 +0000
75@@ -0,0 +1,24 @@
76+/* { dg-do compile { target arm*-*-* avr-*-* mcore-*-* rx-*-* spu-*-* } } */
77+/* { dg-options "-O2 -fdump-tree-optimized" } */
78+
79+static unsigned long __attribute__((naked))
80+foo (unsigned long base)
81+{
82+ asm volatile ("dummy");
83+}
84+unsigned long
85+bar (void)
86+{
87+ static int start, set;
88+
89+ if (!set)
90+ {
91+ set = 1;
92+ start = foo (0);
93+ }
94+
95+ return foo (start);
96+}
97+
98+/* { dg-final { scan-tree-dump "foo \\\(long unsigned int base\\\)" "optimized" } } */
99+/* { dg-final { cleanup-tree-dump "optimized" } } */
100
101=== modified file 'gcc/tree-sra.c'
102--- old/gcc/tree-sra.c 2010-03-17 12:02:35 +0000
103+++ new/gcc/tree-sra.c 2010-08-05 11:39:36 +0000
104@@ -4096,6 +4096,13 @@
105 static bool
106 ipa_sra_preliminary_function_checks (struct cgraph_node *node)
107 {
108+ if (!tree_versionable_function_p (current_function_decl))
109+ {
110+ if (dump_file)
111+ fprintf (dump_file, "Function isn't allowed to be versioned.\n");
112+ return false;
113+ }
114+
115 if (!cgraph_node_can_be_local_p (node))
116 {
117 if (dump_file)
118
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99319.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99319.patch
new file mode 100644
index 000000000..a649c9542
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99319.patch
@@ -0,0 +1,197 @@
12010-07-24 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-04-10 Wei Guozhi <carrot@google.com>
6
7 PR target/42601
8 gcc/
9 * config/arm/arm.c (arm_pic_static_addr): New function.
10 (legitimize_pic_address): Call arm_pic_static_addr when it detects
11 a static symbol.
12 (arm_output_addr_const_extra): Output expression for new pattern.
13 * config/arm/arm.md (UNSPEC_SYMBOL_OFFSET): New unspec symbol.
14
15 2010-07-22 Sandra Loosemore <sandra@codesourcery.com>
16
17 PR tree-optimization/39839
18 gcc/testsuite/
19 * gcc.target/arm/pr39839.c: New test case.
20
21 2010-07-24 Jie Zhang <jie@codesourcery.com>
22
23 Issue #9079
24
25=== modified file 'gcc/config/arm/arm.c'
26--- old/gcc/config/arm/arm.c 2010-08-03 13:55:46 +0000
27+++ new/gcc/config/arm/arm.c 2010-08-05 12:06:40 +0000
28@@ -225,6 +225,7 @@
29 static void arm_asm_trampoline_template (FILE *);
30 static void arm_trampoline_init (rtx, tree, rtx);
31 static rtx arm_trampoline_adjust_address (rtx);
32+static rtx arm_pic_static_addr (rtx orig, rtx reg);
33
34
35 /* Table of machine attributes. */
36@@ -4986,29 +4987,16 @@
37 {
38 rtx pic_ref, address;
39 rtx insn;
40- int subregs = 0;
41-
42- /* If this function doesn't have a pic register, create one now. */
43- require_pic_register ();
44
45 if (reg == 0)
46 {
47 gcc_assert (can_create_pseudo_p ());
48 reg = gen_reg_rtx (Pmode);
49-
50- subregs = 1;
51+ address = gen_reg_rtx (Pmode);
52 }
53-
54- if (subregs)
55- address = gen_reg_rtx (Pmode);
56 else
57 address = reg;
58
59- if (TARGET_32BIT)
60- emit_insn (gen_pic_load_addr_32bit (address, orig));
61- else /* TARGET_THUMB1 */
62- emit_insn (gen_pic_load_addr_thumb1 (address, orig));
63-
64 /* VxWorks does not impose a fixed gap between segments; the run-time
65 gap can be different from the object-file gap. We therefore can't
66 use GOTOFF unless we are absolutely sure that the symbol is in the
67@@ -5020,16 +5008,23 @@
68 SYMBOL_REF_LOCAL_P (orig)))
69 && NEED_GOT_RELOC
70 && !TARGET_VXWORKS_RTP)
71- pic_ref = gen_rtx_PLUS (Pmode, cfun->machine->pic_reg, address);
72+ insn = arm_pic_static_addr (orig, reg);
73 else
74 {
75+ /* If this function doesn't have a pic register, create one now. */
76+ require_pic_register ();
77+
78+ if (TARGET_32BIT)
79+ emit_insn (gen_pic_load_addr_32bit (address, orig));
80+ else /* TARGET_THUMB1 */
81+ emit_insn (gen_pic_load_addr_thumb1 (address, orig));
82+
83 pic_ref = gen_const_mem (Pmode,
84 gen_rtx_PLUS (Pmode, cfun->machine->pic_reg,
85 address));
86+ insn = emit_move_insn (reg, pic_ref);
87 }
88
89- insn = emit_move_insn (reg, pic_ref);
90-
91 /* Put a REG_EQUAL note on this insn, so that it can be optimized
92 by loop. */
93 set_unique_reg_note (insn, REG_EQUAL, orig);
94@@ -5236,6 +5231,43 @@
95 emit_use (pic_reg);
96 }
97
98+/* Generate code to load the address of a static var when flag_pic is set. */
99+static rtx
100+arm_pic_static_addr (rtx orig, rtx reg)
101+{
102+ rtx l1, labelno, offset_rtx, insn;
103+
104+ gcc_assert (flag_pic);
105+
106+ /* We use an UNSPEC rather than a LABEL_REF because this label
107+ never appears in the code stream. */
108+ labelno = GEN_INT (pic_labelno++);
109+ l1 = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, labelno), UNSPEC_PIC_LABEL);
110+ l1 = gen_rtx_CONST (VOIDmode, l1);
111+
112+ /* On the ARM the PC register contains 'dot + 8' at the time of the
113+ addition, on the Thumb it is 'dot + 4'. */
114+ offset_rtx = plus_constant (l1, TARGET_ARM ? 8 : 4);
115+ offset_rtx = gen_rtx_UNSPEC (Pmode, gen_rtvec (2, orig, offset_rtx),
116+ UNSPEC_SYMBOL_OFFSET);
117+ offset_rtx = gen_rtx_CONST (Pmode, offset_rtx);
118+
119+ if (TARGET_32BIT)
120+ {
121+ emit_insn (gen_pic_load_addr_32bit (reg, offset_rtx));
122+ if (TARGET_ARM)
123+ insn = emit_insn (gen_pic_add_dot_plus_eight (reg, reg, labelno));
124+ else
125+ insn = emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno));
126+ }
127+ else /* TARGET_THUMB1 */
128+ {
129+ emit_insn (gen_pic_load_addr_thumb1 (reg, offset_rtx));
130+ insn = emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno));
131+ }
132+
133+ return insn;
134+}
135
136 /* Return nonzero if X is valid as an ARM state addressing register. */
137 static int
138@@ -21461,6 +21493,16 @@
139 fputc (')', fp);
140 return TRUE;
141 }
142+ else if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_SYMBOL_OFFSET)
143+ {
144+ output_addr_const (fp, XVECEXP (x, 0, 0));
145+ if (GOT_PCREL)
146+ fputs ("+.", fp);
147+ fputs ("-(", fp);
148+ output_addr_const (fp, XVECEXP (x, 0, 1));
149+ fputc (')', fp);
150+ return TRUE;
151+ }
152 else if (GET_CODE (x) == CONST_VECTOR)
153 return arm_emit_vector_const (fp, x);
154
155
156=== modified file 'gcc/config/arm/arm.md'
157--- old/gcc/config/arm/arm.md 2010-07-30 14:17:05 +0000
158+++ new/gcc/config/arm/arm.md 2010-08-05 12:06:40 +0000
159@@ -101,6 +101,8 @@
160 ; a given symbolic address.
161 (UNSPEC_THUMB1_CASESI 25) ; A Thumb1 compressed dispatch-table call.
162 (UNSPEC_RBIT 26) ; rbit operation.
163+ (UNSPEC_SYMBOL_OFFSET 27) ; The offset of the start of the symbol from
164+ ; another symbolic address.
165 ]
166 )
167
168
169=== added file 'gcc/testsuite/gcc.target/arm/pr39839.c'
170--- old/gcc/testsuite/gcc.target/arm/pr39839.c 1970-01-01 00:00:00 +0000
171+++ new/gcc/testsuite/gcc.target/arm/pr39839.c 2010-08-05 12:06:40 +0000
172@@ -0,0 +1,24 @@
173+/* { dg-options "-mthumb -Os -march=armv5te -mthumb-interwork -fpic" } */
174+/* { dg-require-effective-target arm_thumb1_ok } */
175+/* { dg-final { scan-assembler-not "str\[\\t \]*r.,\[\\t \]*.sp," } } */
176+
177+struct S
178+{
179+ int count;
180+ char *addr;
181+};
182+
183+void func(const char*, const char*, int, const char*);
184+
185+/* This function should not need to spill to the stack. */
186+void test(struct S *p)
187+{
188+ int off = p->count;
189+ while (p->count >= 0)
190+ {
191+ const char *s = "xyz";
192+ if (*p->addr) s = "pqr";
193+ func("abcde", p->addr + off, off, s);
194+ p->count--;
195+ }
196+}
197
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99320.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99320.patch
new file mode 100644
index 000000000..669523218
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99320.patch
@@ -0,0 +1,138 @@
12010-08-05 Andrew Stubbs <ams@codesourcery.com>
2
3 gcc/testsuite/
4 * gcc.dg/vect/vect-shift-2.c: Revert all previous changes.
5 * gcc.dg/vect/vect-shift-4.c: New file.
6
7 2010-07-20 Yao Qi <yao@codesourcery.com>
8
9 Merge from Sourcery G++ 4.4:
10 2009-06-16 Daniel Jacobowitz <dan@codesourcery.com>
11
12 Merge from Sourcery G++ 4.3:
13 2008-12-03 Daniel Jacobowitz <dan@codesourcery.com>
14
15 gcc/testsuite/
16 * gcc.dg/vect/vect-shift-2.c, gcc.dg/vect/vect-shift-3.c: New.
17 * lib/target-supports.exp (check_effective_target_vect_shift_char): New
18 function.
19
20 2010-07-24 Sandra Loosemore <sandra@codesourcery.com>
21
22 Backport from mainline:
23
24=== added file 'gcc/testsuite/gcc.dg/vect/vect-shift-3.c'
25--- old/gcc/testsuite/gcc.dg/vect/vect-shift-3.c 1970-01-01 00:00:00 +0000
26+++ new/gcc/testsuite/gcc.dg/vect/vect-shift-3.c 2010-08-05 14:13:43 +0000
27@@ -0,0 +1,37 @@
28+/* { dg-require-effective-target vect_shift } */
29+/* { dg-require-effective-target vect_int } */
30+
31+#include "tree-vect.h"
32+
33+#define N 32
34+
35+unsigned short dst[N] __attribute__((aligned(N)));
36+unsigned short src[N] __attribute__((aligned(N)));
37+
38+__attribute__ ((noinline))
39+void array_shift(void)
40+{
41+ int i;
42+ for (i = 0; i < N; i++)
43+ dst[i] = src[i] >> 3;
44+}
45+
46+int main()
47+{
48+ volatile int i;
49+ check_vect ();
50+
51+ for (i = 0; i < N; i++)
52+ src[i] = i << 3;
53+
54+ array_shift ();
55+
56+ for (i = 0; i < N; i++)
57+ if (dst[i] != i)
58+ abort ();
59+
60+ return 0;
61+}
62+
63+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
64+/* { dg-final { cleanup-tree-dump "vect" } } */
65
66=== added file 'gcc/testsuite/gcc.dg/vect/vect-shift-4.c'
67--- old/gcc/testsuite/gcc.dg/vect/vect-shift-4.c 1970-01-01 00:00:00 +0000
68+++ new/gcc/testsuite/gcc.dg/vect/vect-shift-4.c 2010-08-05 14:13:43 +0000
69@@ -0,0 +1,37 @@
70+/* { dg-require-effective-target vect_shift_char } */
71+/* { dg-require-effective-target vect_int } */
72+
73+#include "tree-vect.h"
74+
75+#define N 32
76+
77+unsigned char dst[N] __attribute__((aligned(N)));
78+unsigned char src[N] __attribute__((aligned(N)));
79+
80+__attribute__ ((noinline))
81+void array_shift(void)
82+{
83+ int i;
84+ for (i = 0; i < N; i++)
85+ dst[i] = src[i] >> 3;
86+}
87+
88+int main()
89+{
90+ volatile int i;
91+ check_vect ();
92+
93+ for (i = 0; i < N; i++)
94+ src[i] = i << 3;
95+
96+ array_shift ();
97+
98+ for (i = 0; i < N; i++)
99+ if (dst[i] != i)
100+ abort ();
101+
102+ return 0;
103+}
104+
105+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
106+/* { dg-final { cleanup-tree-dump "vect" } } */
107
108=== modified file 'gcc/testsuite/lib/target-supports.exp'
109--- old/gcc/testsuite/lib/target-supports.exp 2010-07-29 15:38:15 +0000
110+++ new/gcc/testsuite/lib/target-supports.exp 2010-08-05 14:13:43 +0000
111@@ -2001,6 +2001,26 @@
112 return $et_vect_shift_saved
113 }
114
115+# Return 1 if the target supports hardware vector shift operation for char.
116+
117+proc check_effective_target_vect_shift_char { } {
118+ global et_vect_shift_char_saved
119+
120+ if [info exists et_vect_shift_char_saved] {
121+ verbose "check_effective_target_vect_shift_char: using cached result" 2
122+ } else {
123+ set et_vect_shift_char_saved 0
124+ if { ([istarget powerpc*-*-*]
125+ && ![istarget powerpc-*-linux*paired*])
126+ || [check_effective_target_arm32] } {
127+ set et_vect_shift_char_saved 1
128+ }
129+ }
130+
131+ verbose "check_effective_target_vect_shift_char: returning $et_vect_shift_char_saved" 2
132+ return $et_vect_shift_char_saved
133+}
134+
135 # Return 1 if the target supports hardware vectors of long, 0 otherwise.
136 #
137 # This can change for different subtargets so do not cache the result.
138
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99321.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99321.patch
new file mode 100644
index 000000000..b122ab10f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99321.patch
@@ -0,0 +1,28 @@
12010-07-26 Julian Brown <julian@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2007-07-05 Mark Shinwell <shinwell@codesourcery.com>
6
7 gcc/
8 * config/arm/arm.h (BRANCH_COST): Set to 1 when optimizing for size
9 on Thumb-2.
10
11 2010-08-05 Andrew Stubbs <ams@codesourcery.com>
12
13 gcc/testsuite/
14
15=== modified file 'gcc/config/arm/arm.h'
16--- old/gcc/config/arm/arm.h 2010-08-03 10:40:56 +0000
17+++ new/gcc/config/arm/arm.h 2010-08-05 14:29:52 +0000
18@@ -2210,7 +2210,8 @@
19 /* Try to generate sequences that don't involve branches, we can then use
20 conditional instructions */
21 #define BRANCH_COST(speed_p, predictable_p) \
22- (TARGET_32BIT ? 4 : (optimize > 0 ? 2 : 0))
23+ (TARGET_32BIT ? (TARGET_THUMB2 && optimize_size ? 1 : 4) \
24+ : (optimize > 0 ? 2 : 0))
25
26 /* Position Independent Code. */
27 /* We decide which register to use based on the compilation options and
28
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99322.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99322.patch
new file mode 100644
index 000000000..6962c1cec
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99322.patch
@@ -0,0 +1,53 @@
1 2007-06-06 Joseph Myers <joseph@codesourcery.com>
2
3 gcc/
4 * config/arm/arm.h (VALID_IWMMXT_REG_MODE): Allow SImode.
5 (ARM_LEGITIMIZE_RELOAD_ADDRESS): Reduce range allowed for SImode
6 offsets with iWMMXt.
7 * config/arm/arm.c (arm_hard_regno_mode_ok): Update for change to
8 VALID_IWMMXT_REG_MODE.
9
102010-07-26 Julian Brown <julian@codesourcery.com>
11
12 Merge from Sourcery G++ 4.4:
13
14 2007-07-05 Mark Shinwell <shinwell@codesourcery.com>
15
16 gcc/
17
18=== modified file 'gcc/config/arm/arm.c'
19--- old/gcc/config/arm/arm.c 2010-08-05 12:06:40 +0000
20+++ new/gcc/config/arm/arm.c 2010-08-05 14:33:31 +0000
21@@ -16538,7 +16538,7 @@
22 return mode == SImode;
23
24 if (IS_IWMMXT_REGNUM (regno))
25- return VALID_IWMMXT_REG_MODE (mode);
26+ return VALID_IWMMXT_REG_MODE (mode) && mode != SImode;
27 }
28
29 /* We allow almost any value to be stored in the general registers.
30
31=== modified file 'gcc/config/arm/arm.h'
32--- old/gcc/config/arm/arm.h 2010-08-05 14:29:52 +0000
33+++ new/gcc/config/arm/arm.h 2010-08-05 14:33:31 +0000
34@@ -1077,7 +1077,7 @@
35 (GET_MODE_CLASS (MODE1) == GET_MODE_CLASS (MODE2))
36
37 #define VALID_IWMMXT_REG_MODE(MODE) \
38- (arm_vector_mode_supported_p (MODE) || (MODE) == DImode)
39+ (arm_vector_mode_supported_p (MODE) || (MODE) == DImode || (MODE) == SImode)
40
41 /* Modes valid for Neon D registers. */
42 #define VALID_NEON_DREG_MODE(MODE) \
43@@ -1364,6 +1364,9 @@
44 else if (TARGET_MAVERICK && TARGET_HARD_FLOAT) \
45 /* Need to be careful, -256 is not a valid offset. */ \
46 low = val >= 0 ? (val & 0xff) : -((-val) & 0xff); \
47+ else if (TARGET_REALLY_IWMMXT && MODE == SImode) \
48+ /* Need to be careful, -1024 is not a valid offset. */ \
49+ low = val >= 0 ? (val & 0x3ff) : -((-val) & 0x3ff); \
50 else if (MODE == SImode \
51 || (MODE == SFmode && TARGET_SOFT_FLOAT) \
52 || ((MODE == HImode || MODE == QImode) && ! arm_arch4)) \
53
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99323.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99323.patch
new file mode 100644
index 000000000..38b6fa3f0
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99323.patch
@@ -0,0 +1,688 @@
1 Vladimir Prus <vladimir@codesourcery.com>
2 Julian Brown <julian@codesourcery.com>
3
4 gcc/
5 * config/arm/arm.c (arm_override_options): Warn if mlow-irq-latency is
6 specified in Thumb mode.
7 (load_multiple_sequence): Return 0 if low irq latency is requested.
8 (store_multiple_sequence): Likewise.
9 (arm_gen_load_multiple): Load registers one-by-one if low irq latency
10 is requested.
11 (arm_gen_store_multiple): Likewise.
12 (vfp_output_fldmd): When low_irq_latency is non zero, pop each
13 register separately.
14 (vfp_emit_fstmd): When low_irq_latency is non zero, save each register
15 separately.
16 (arm_get_vfp_saved_size): Adjust saved register size calculation for
17 the above changes.
18 (print_pop_reg_by_ldr): New.
19 (arm_output_epilogue): Use print_pop_reg_by_ldr when low irq latency
20 is requested.
21 (emit_multi_reg_push): Push registers separately if low irq latency
22 is requested.
23 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Set __low_irq_latency__.
24 (low_irq_latency): Define.
25 (USE_RETURN_INSN): Don't use return insn when low irq latency is
26 requested.
27 * config/arm/lib1funcs.asm (do_pop, do_push): Define as variadic
28 macros. When __low_irq_latency__ is defined, push and pop registers
29 individually.
30 (div0): Use correct punctuation.
31 * config/arm/ieee754-df.S: Adjust syntax of using do_push.
32 * config/arm/ieee754-sf.S: Likewise.
33 * config/arm/bpabi.S: Likewise.
34 * config/arm/arm.opt (mlow-irq-latency): New option.
35 * config/arm/predicates.md (load_multiple_operation): Return false is
36 low irq latency is requested.
37 (store_multiple_operation): Likewise.
38 * config/arm/arm.md (movmemqi): Don't use it if low irq latency is
39 requested.
40 * doc/invoke.texi (-mlow-irq-latency): Add documentation.
41
422010-07-26 Julian Brown <julian@codesourcery.com>
43
44 Merge from Sourcery G++ 4.4:
45
46 2007-06-06 Joseph Myers <joseph@codesourcery.com>
47
48 gcc/
49
50=== modified file 'gcc/config/arm/arm.c'
51--- old/gcc/config/arm/arm.c 2010-08-05 14:33:31 +0000
52+++ new/gcc/config/arm/arm.c 2010-08-05 15:20:54 +0000
53@@ -1884,6 +1884,13 @@
54
55 /* Register global variables with the garbage collector. */
56 arm_add_gc_roots ();
57+
58+ if (low_irq_latency && TARGET_THUMB)
59+ {
60+ warning (0,
61+ "-mlow-irq-latency has no effect when compiling for Thumb");
62+ low_irq_latency = 0;
63+ }
64 }
65
66 static void
67@@ -9053,6 +9060,9 @@
68 int base_reg = -1;
69 int i;
70
71+ if (low_irq_latency)
72+ return 0;
73+
74 /* Can only handle 2, 3, or 4 insns at present,
75 though could be easily extended if required. */
76 gcc_assert (nops >= 2 && nops <= 4);
77@@ -9282,6 +9292,9 @@
78 int base_reg = -1;
79 int i;
80
81+ if (low_irq_latency)
82+ return 0;
83+
84 /* Can only handle 2, 3, or 4 insns at present, though could be easily
85 extended if required. */
86 gcc_assert (nops >= 2 && nops <= 4);
87@@ -9489,7 +9502,7 @@
88
89 As a compromise, we use ldr for counts of 1 or 2 regs, and ldm
90 for counts of 3 or 4 regs. */
91- if (arm_tune_xscale && count <= 2 && ! optimize_size)
92+ if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
93 {
94 rtx seq;
95
96@@ -9552,7 +9565,7 @@
97
98 /* See arm_gen_load_multiple for discussion of
99 the pros/cons of ldm/stm usage for XScale. */
100- if (arm_tune_xscale && count <= 2 && ! optimize_size)
101+ if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
102 {
103 rtx seq;
104
105@@ -11795,6 +11808,21 @@
106 vfp_output_fldmd (FILE * stream, unsigned int base, int reg, int count)
107 {
108 int i;
109+ int offset;
110+
111+ if (low_irq_latency)
112+ {
113+ /* Output a sequence of FLDD instructions. */
114+ offset = 0;
115+ for (i = reg; i < reg + count; ++i, offset += 8)
116+ {
117+ fputc ('\t', stream);
118+ asm_fprintf (stream, "fldd\td%d, [%r,#%d]\n", i, base, offset);
119+ }
120+ asm_fprintf (stream, "\tadd\tsp, sp, #%d\n", count * 8);
121+ return;
122+ }
123+
124
125 /* Workaround ARM10 VFPr1 bug. */
126 if (count == 2 && !arm_arch6)
127@@ -11865,6 +11893,56 @@
128 rtx tmp, reg;
129 int i;
130
131+ if (low_irq_latency)
132+ {
133+ int saved_size;
134+ rtx sp_insn;
135+
136+ if (!count)
137+ return 0;
138+
139+ saved_size = count * GET_MODE_SIZE (DFmode);
140+
141+ /* Since fstd does not have postdecrement addressing mode,
142+ we first decrement stack pointer and then use base+offset
143+ stores for VFP registers. The ARM EABI unwind information
144+ can't easily describe base+offset loads, so we attach
145+ a note for the effects of the whole block in the first insn,
146+ and avoid marking the subsequent instructions
147+ with RTX_FRAME_RELATED_P. */
148+ sp_insn = gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
149+ GEN_INT (-saved_size));
150+ sp_insn = emit_insn (sp_insn);
151+ RTX_FRAME_RELATED_P (sp_insn) = 1;
152+
153+ dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (count + 1));
154+ XVECEXP (dwarf, 0, 0) =
155+ gen_rtx_SET (VOIDmode, stack_pointer_rtx,
156+ plus_constant (stack_pointer_rtx, -saved_size));
157+
158+ /* push double VFP registers to stack */
159+ for (i = 0; i < count; ++i )
160+ {
161+ rtx reg;
162+ rtx mem;
163+ rtx addr;
164+ rtx insn;
165+ reg = gen_rtx_REG (DFmode, base_reg + 2*i);
166+ addr = (i == 0) ? stack_pointer_rtx
167+ : gen_rtx_PLUS (SImode, stack_pointer_rtx,
168+ GEN_INT (i * GET_MODE_SIZE (DFmode)));
169+ mem = gen_frame_mem (DFmode, addr);
170+ insn = emit_move_insn (mem, reg);
171+ XVECEXP (dwarf, 0, i+1) =
172+ gen_rtx_SET (VOIDmode, mem, reg);
173+ }
174+
175+ REG_NOTES (sp_insn) = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, dwarf,
176+ REG_NOTES (sp_insn));
177+
178+ return saved_size;
179+ }
180+
181 /* Workaround ARM10 VFPr1 bug. Data corruption can occur when exactly two
182 register pairs are stored by a store multiple insn. We avoid this
183 by pushing an extra pair. */
184@@ -13307,7 +13385,7 @@
185 if (count > 0)
186 {
187 /* Workaround ARM10 VFPr1 bug. */
188- if (count == 2 && !arm_arch6)
189+ if (count == 2 && !arm_arch6 && !low_irq_latency)
190 count++;
191 saved += count * 8;
192 }
193@@ -13645,6 +13723,41 @@
194
195 }
196
197+/* Generate to STREAM a code sequence that pops registers identified
198+ in REGS_MASK from SP. SP is incremented as the result.
199+*/
200+static void
201+print_pop_reg_by_ldr (FILE *stream, int regs_mask, int rfe)
202+{
203+ int reg;
204+
205+ gcc_assert (! (regs_mask & (1 << SP_REGNUM)));
206+
207+ for (reg = 0; reg < PC_REGNUM; ++reg)
208+ if (regs_mask & (1 << reg))
209+ asm_fprintf (stream, "\tldr\t%r, [%r], #4\n",
210+ reg, SP_REGNUM);
211+
212+ if (regs_mask & (1 << PC_REGNUM))
213+ {
214+ if (rfe)
215+ /* When returning from exception, we need to
216+ copy SPSR to CPSR. There are two ways to do
217+ that: the ldm instruction with "^" suffix,
218+ and movs instruction. The latter would
219+ require that we load from stack to some
220+ scratch register, and then move to PC.
221+ Therefore, we'd need extra instruction and
222+ have to make sure we actually have a spare
223+ register. Using ldm with a single register
224+ is simler. */
225+ asm_fprintf (stream, "\tldm\tsp!, {pc}^\n");
226+ else
227+ asm_fprintf (stream, "\tldr\t%r, [%r], #4\n",
228+ PC_REGNUM, SP_REGNUM);
229+ }
230+}
231+
232 const char *
233 arm_output_epilogue (rtx sibling)
234 {
235@@ -14018,22 +14131,19 @@
236 to load use the LDR instruction - it is faster. For Thumb-2
237 always use pop and the assembler will pick the best instruction.*/
238 if (TARGET_ARM && saved_regs_mask == (1 << LR_REGNUM)
239- && !IS_INTERRUPT(func_type))
240+ && !IS_INTERRUPT (func_type))
241 {
242 asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM);
243 }
244 else if (saved_regs_mask)
245 {
246- if (saved_regs_mask & (1 << SP_REGNUM))
247- /* Note - write back to the stack register is not enabled
248- (i.e. "ldmfd sp!..."). We know that the stack pointer is
249- in the list of registers and if we add writeback the
250- instruction becomes UNPREDICTABLE. */
251- print_multi_reg (f, "ldmfd\t%r, ", SP_REGNUM, saved_regs_mask,
252- rfe);
253- else if (TARGET_ARM)
254- print_multi_reg (f, "ldmfd\t%r!, ", SP_REGNUM, saved_regs_mask,
255- rfe);
256+ gcc_assert ( ! (saved_regs_mask & (1 << SP_REGNUM)));
257+ if (TARGET_ARM)
258+ if (low_irq_latency)
259+ print_pop_reg_by_ldr (f, saved_regs_mask, rfe);
260+ else
261+ print_multi_reg (f, "ldmfd\t%r!, ", SP_REGNUM, saved_regs_mask,
262+ rfe);
263 else
264 print_multi_reg (f, "pop\t", SP_REGNUM, saved_regs_mask, 0);
265 }
266@@ -14154,6 +14264,32 @@
267
268 gcc_assert (num_regs && num_regs <= 16);
269
270+ if (low_irq_latency)
271+ {
272+ rtx insn = 0;
273+
274+ /* Emit a series of ldr instructions rather rather than a single ldm. */
275+ /* TODO: Use ldrd where possible. */
276+ gcc_assert (! (mask & (1 << SP_REGNUM)));
277+
278+ for (i = LAST_ARM_REGNUM; i >= 0; --i)
279+ {
280+ if (mask & (1 << i))
281+
282+ {
283+ rtx reg, where, mem;
284+
285+ reg = gen_rtx_REG (SImode, i);
286+ where = gen_rtx_PRE_DEC (SImode, stack_pointer_rtx);
287+ mem = gen_rtx_MEM (SImode, where);
288+ insn = emit_move_insn (mem, reg);
289+ RTX_FRAME_RELATED_P (insn) = 1;
290+ }
291+ }
292+
293+ return insn;
294+ }
295+
296 /* We don't record the PC in the dwarf frame information. */
297 num_dwarf_regs = num_regs;
298 if (mask & (1 << PC_REGNUM))
299
300=== modified file 'gcc/config/arm/arm.h'
301--- old/gcc/config/arm/arm.h 2010-08-05 14:33:31 +0000
302+++ new/gcc/config/arm/arm.h 2010-08-05 15:20:54 +0000
303@@ -101,6 +101,8 @@
304 builtin_define ("__ARM_PCS"); \
305 builtin_define ("__ARM_EABI__"); \
306 } \
307+ if (low_irq_latency) \
308+ builtin_define ("__low_irq_latency__"); \
309 } while (0)
310
311 /* The various ARM cores. */
312@@ -449,6 +451,10 @@
313 /* Nonzero if chip supports integer division instruction. */
314 extern int arm_arch_hwdiv;
315
316+/* Nonzero if we should minimize interrupt latency of the
317+ generated code. */
318+extern int low_irq_latency;
319+
320 #ifndef TARGET_DEFAULT
321 #define TARGET_DEFAULT (MASK_APCS_FRAME)
322 #endif
323@@ -1823,9 +1829,10 @@
324 /* Determine if the epilogue should be output as RTL.
325 You should override this if you define FUNCTION_EXTRA_EPILOGUE. */
326 /* This is disabled for Thumb-2 because it will confuse the
327- conditional insn counter. */
328+ conditional insn counter.
329+ Do not use a return insn if we're avoiding ldm/stm instructions. */
330 #define USE_RETURN_INSN(ISCOND) \
331- (TARGET_ARM ? use_return_insn (ISCOND, NULL) : 0)
332+ ((TARGET_ARM && !low_irq_latency) ? use_return_insn (ISCOND, NULL) : 0)
333
334 /* Definitions for register eliminations.
335
336
337=== modified file 'gcc/config/arm/arm.md'
338--- old/gcc/config/arm/arm.md 2010-08-05 12:06:40 +0000
339+++ new/gcc/config/arm/arm.md 2010-08-05 15:20:54 +0000
340@@ -6587,7 +6587,7 @@
341 (match_operand:BLK 1 "general_operand" "")
342 (match_operand:SI 2 "const_int_operand" "")
343 (match_operand:SI 3 "const_int_operand" "")]
344- "TARGET_EITHER"
345+ "TARGET_EITHER && !low_irq_latency"
346 "
347 if (TARGET_32BIT)
348 {
349
350=== modified file 'gcc/config/arm/arm.opt'
351--- old/gcc/config/arm/arm.opt 2009-06-18 11:24:10 +0000
352+++ new/gcc/config/arm/arm.opt 2010-08-05 15:20:54 +0000
353@@ -161,6 +161,10 @@
354 Target Report Mask(NEON_VECTORIZE_QUAD)
355 Use Neon quad-word (rather than double-word) registers for vectorization
356
357+mlow-irq-latency
358+Target Report Var(low_irq_latency)
359+Try to reduce interrupt latency of the generated code
360+
361 mword-relocations
362 Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
363 Only generate absolute relocations on word sized values.
364
365=== modified file 'gcc/config/arm/bpabi.S'
366--- old/gcc/config/arm/bpabi.S 2009-12-17 15:37:23 +0000
367+++ new/gcc/config/arm/bpabi.S 2010-08-05 15:20:54 +0000
368@@ -116,16 +116,17 @@
369 test_div_by_zero signed
370
371 sub sp, sp, #8
372-#if defined(__thumb2__)
373+/* Low latency and Thumb-2 do_push implementations can't push sp directly. */
374+#if defined(__thumb2__) || defined(__irq_low_latency__)
375 mov ip, sp
376- push {ip, lr}
377+ do_push (ip, lr)
378 #else
379- do_push {sp, lr}
380+ stmfd sp!, {sp, lr}
381 #endif
382 bl SYM(__gnu_ldivmod_helper) __PLT__
383 ldr lr, [sp, #4]
384 add sp, sp, #8
385- do_pop {r2, r3}
386+ do_pop (r2, r3)
387 RET
388
389 #endif /* L_aeabi_ldivmod */
390@@ -136,16 +137,17 @@
391 test_div_by_zero unsigned
392
393 sub sp, sp, #8
394-#if defined(__thumb2__)
395+/* Low latency and Thumb-2 do_push implementations can't push sp directly. */
396+#if defined(__thumb2__) || defined(__irq_low_latency__)
397 mov ip, sp
398- push {ip, lr}
399+ do_push (ip, lr)
400 #else
401- do_push {sp, lr}
402+ stmfd sp!, {sp, lr}
403 #endif
404 bl SYM(__gnu_uldivmod_helper) __PLT__
405 ldr lr, [sp, #4]
406 add sp, sp, #8
407- do_pop {r2, r3}
408+ do_pop (r2, r3)
409 RET
410
411 #endif /* L_aeabi_divmod */
412
413=== modified file 'gcc/config/arm/ieee754-df.S'
414--- old/gcc/config/arm/ieee754-df.S 2009-06-05 12:52:36 +0000
415+++ new/gcc/config/arm/ieee754-df.S 2010-08-05 15:20:54 +0000
416@@ -83,7 +83,7 @@
417 ARM_FUNC_START adddf3
418 ARM_FUNC_ALIAS aeabi_dadd adddf3
419
420-1: do_push {r4, r5, lr}
421+1: do_push (r4, r5, lr)
422
423 @ Look for zeroes, equal values, INF, or NAN.
424 shift1 lsl, r4, xh, #1
425@@ -427,7 +427,7 @@
426 do_it eq, t
427 moveq r1, #0
428 RETc(eq)
429- do_push {r4, r5, lr}
430+ do_push (r4, r5, lr)
431 mov r4, #0x400 @ initial exponent
432 add r4, r4, #(52-1 - 1)
433 mov r5, #0 @ sign bit is 0
434@@ -447,7 +447,7 @@
435 do_it eq, t
436 moveq r1, #0
437 RETc(eq)
438- do_push {r4, r5, lr}
439+ do_push (r4, r5, lr)
440 mov r4, #0x400 @ initial exponent
441 add r4, r4, #(52-1 - 1)
442 ands r5, r0, #0x80000000 @ sign bit in r5
443@@ -481,7 +481,7 @@
444 RETc(eq) @ we are done already.
445
446 @ value was denormalized. We can normalize it now.
447- do_push {r4, r5, lr}
448+ do_push (r4, r5, lr)
449 mov r4, #0x380 @ setup corresponding exponent
450 and r5, xh, #0x80000000 @ move sign bit in r5
451 bic xh, xh, #0x80000000
452@@ -508,9 +508,9 @@
453 @ compatibility.
454 adr ip, LSYM(f0_ret)
455 @ Push pc as well so that RETLDM works correctly.
456- do_push {r4, r5, ip, lr, pc}
457+ do_push (r4, r5, ip, lr, pc)
458 #else
459- do_push {r4, r5, lr}
460+ do_push (r4, r5, lr)
461 #endif
462
463 mov r5, #0
464@@ -534,9 +534,9 @@
465 @ compatibility.
466 adr ip, LSYM(f0_ret)
467 @ Push pc as well so that RETLDM works correctly.
468- do_push {r4, r5, ip, lr, pc}
469+ do_push (r4, r5, ip, lr, pc)
470 #else
471- do_push {r4, r5, lr}
472+ do_push (r4, r5, lr)
473 #endif
474
475 ands r5, ah, #0x80000000 @ sign bit in r5
476@@ -585,7 +585,7 @@
477 @ Legacy code expects the result to be returned in f0. Copy it
478 @ there as well.
479 LSYM(f0_ret):
480- do_push {r0, r1}
481+ do_push (r0, r1)
482 ldfd f0, [sp], #8
483 RETLDM
484
485@@ -602,7 +602,7 @@
486
487 ARM_FUNC_START muldf3
488 ARM_FUNC_ALIAS aeabi_dmul muldf3
489- do_push {r4, r5, r6, lr}
490+ do_push (r4, r5, r6, lr)
491
492 @ Mask out exponents, trap any zero/denormal/INF/NAN.
493 mov ip, #0xff
494@@ -910,7 +910,7 @@
495 ARM_FUNC_START divdf3
496 ARM_FUNC_ALIAS aeabi_ddiv divdf3
497
498- do_push {r4, r5, r6, lr}
499+ do_push (r4, r5, r6, lr)
500
501 @ Mask out exponents, trap any zero/denormal/INF/NAN.
502 mov ip, #0xff
503@@ -1195,7 +1195,7 @@
504
505 @ The status-returning routines are required to preserve all
506 @ registers except ip, lr, and cpsr.
507-6: do_push {r0, lr}
508+6: do_push (r0, lr)
509 ARM_CALL cmpdf2
510 @ Set the Z flag correctly, and the C flag unconditionally.
511 cmp r0, #0
512
513=== modified file 'gcc/config/arm/ieee754-sf.S'
514--- old/gcc/config/arm/ieee754-sf.S 2009-06-05 12:52:36 +0000
515+++ new/gcc/config/arm/ieee754-sf.S 2010-08-05 15:20:54 +0000
516@@ -481,7 +481,7 @@
517 and r3, ip, #0x80000000
518
519 @ Well, no way to make it shorter without the umull instruction.
520- do_push {r3, r4, r5}
521+ do_push (r3, r4, r5)
522 mov r4, r0, lsr #16
523 mov r5, r1, lsr #16
524 bic r0, r0, r4, lsl #16
525@@ -492,7 +492,7 @@
526 mla r0, r4, r1, r0
527 adds r3, r3, r0, lsl #16
528 adc r1, ip, r0, lsr #16
529- do_pop {r0, r4, r5}
530+ do_pop (r0, r4, r5)
531
532 #else
533
534@@ -882,7 +882,7 @@
535
536 @ The status-returning routines are required to preserve all
537 @ registers except ip, lr, and cpsr.
538-6: do_push {r0, r1, r2, r3, lr}
539+6: do_push (r0, r1, r2, r3, lr)
540 ARM_CALL cmpsf2
541 @ Set the Z flag correctly, and the C flag unconditionally.
542 cmp r0, #0
543
544=== modified file 'gcc/config/arm/lib1funcs.asm'
545--- old/gcc/config/arm/lib1funcs.asm 2010-04-02 18:54:46 +0000
546+++ new/gcc/config/arm/lib1funcs.asm 2010-08-05 15:20:54 +0000
547@@ -254,8 +254,8 @@
548 .macro shift1 op, arg0, arg1, arg2
549 \op \arg0, \arg1, \arg2
550 .endm
551-#define do_push push
552-#define do_pop pop
553+#define do_push(...) push {__VA_ARGS__}
554+#define do_pop(...) pop {__VA_ARGS__}
555 #define COND(op1, op2, cond) op1 ## op2 ## cond
556 /* Perform an arithmetic operation with a variable shift operand. This
557 requires two instructions and a scratch register on Thumb-2. */
558@@ -269,8 +269,42 @@
559 .macro shift1 op, arg0, arg1, arg2
560 mov \arg0, \arg1, \op \arg2
561 .endm
562-#define do_push stmfd sp!,
563-#define do_pop ldmfd sp!,
564+#if defined(__low_irq_latency__)
565+#define do_push(...) \
566+ _buildN1(do_push, _buildC1(__VA_ARGS__))( __VA_ARGS__)
567+#define _buildN1(BASE, X) _buildN2(BASE, X)
568+#define _buildN2(BASE, X) BASE##X
569+#define _buildC1(...) _buildC2(__VA_ARGS__,9,8,7,6,5,4,3,2,1)
570+#define _buildC2(a1,a2,a3,a4,a5,a6,a7,a8,a9,c,...) c
571+
572+#define do_push1(r1) str r1, [sp, #-4]!
573+#define do_push2(r1, r2) str r2, [sp, #-4]! ; str r1, [sp, #-4]!
574+#define do_push3(r1, r2, r3) str r3, [sp, #-4]! ; str r2, [sp, #-4]!; str r1, [sp, #-4]!
575+#define do_push4(r1, r2, r3, r4) \
576+ do_push3 (r2, r3, r4);\
577+ do_push1 (r1)
578+#define do_push5(r1, r2, r3, r4, r5) \
579+ do_push4 (r2, r3, r4, r5);\
580+ do_push1 (r1)
581+
582+#define do_pop(...) \
583+_buildN1(do_pop, _buildC1(__VA_ARGS__))( __VA_ARGS__)
584+
585+#define do_pop1(r1) ldr r1, [sp], #4
586+#define do_pop2(r1, r2) ldr r1, [sp], #4 ; ldr r2, [sp], #4
587+#define do_pop3(r1, r2, r3) ldr r1, [sp], #4 ; str r2, [sp], #4; str r3, [sp], #4
588+#define do_pop4(r1, r2, r3, r4) \
589+ do_pop1 (r1);\
590+ do_pup3 (r2, r3, r4)
591+#define do_pop5(r1, r2, r3, r4, r5) \
592+ do_pop1 (r1);\
593+ do_pop4 (r2, r3, r4, r5)
594+#else
595+#define do_push(...) stmfd sp!, { __VA_ARGS__}
596+#define do_pop(...) ldmfd sp!, {__VA_ARGS__}
597+#endif
598+
599+
600 #define COND(op1, op2, cond) op1 ## cond ## op2
601 .macro shiftop name, dest, src1, src2, shiftop, shiftreg, tmp
602 \name \dest, \src1, \src2, \shiftop \shiftreg
603@@ -1260,7 +1294,7 @@
604 ARM_FUNC_START div0
605 #endif
606
607- do_push {r1, lr}
608+ do_push (r1, lr)
609 mov r0, #SIGFPE
610 bl SYM(raise) __PLT__
611 RETLDM r1
612@@ -1277,7 +1311,7 @@
613 #if defined __ARM_EABI__ && defined __linux__
614 @ EABI GNU/Linux call to cacheflush syscall.
615 ARM_FUNC_START clear_cache
616- do_push {r7}
617+ do_push (r7)
618 #if __ARM_ARCH__ >= 7 || defined(__ARM_ARCH_6T2__)
619 movw r7, #2
620 movt r7, #0xf
621@@ -1287,7 +1321,7 @@
622 #endif
623 mov r2, #0
624 swi 0
625- do_pop {r7}
626+ do_pop (r7)
627 RET
628 FUNC_END clear_cache
629 #else
630@@ -1490,7 +1524,7 @@
631 push {r4, lr}
632 # else
633 ARM_FUNC_START clzdi2
634- do_push {r4, lr}
635+ do_push (r4, lr)
636 # endif
637 cmp xxh, #0
638 bne 1f
639
640=== modified file 'gcc/config/arm/predicates.md'
641--- old/gcc/config/arm/predicates.md 2010-07-30 14:17:05 +0000
642+++ new/gcc/config/arm/predicates.md 2010-08-05 15:20:54 +0000
643@@ -328,6 +328,9 @@
644 HOST_WIDE_INT i = 1, base = 0;
645 rtx elt;
646
647+ if (low_irq_latency)
648+ return false;
649+
650 if (count <= 1
651 || GET_CODE (XVECEXP (op, 0, 0)) != SET)
652 return false;
653@@ -385,6 +388,9 @@
654 HOST_WIDE_INT i = 1, base = 0;
655 rtx elt;
656
657+ if (low_irq_latency)
658+ return false;
659+
660 if (count <= 1
661 || GET_CODE (XVECEXP (op, 0, 0)) != SET)
662 return false;
663
664=== modified file 'gcc/doc/invoke.texi'
665--- old/gcc/doc/invoke.texi 2010-07-29 17:03:20 +0000
666+++ new/gcc/doc/invoke.texi 2010-08-05 15:20:54 +0000
667@@ -469,6 +469,7 @@
668 -mtpcs-frame -mtpcs-leaf-frame @gol
669 -mcaller-super-interworking -mcallee-super-interworking @gol
670 -mtp=@var{name} @gol
671+-mlow-irq-latency @gol
672 -mword-relocations @gol
673 -mfix-cortex-m3-ldrd}
674
675@@ -9489,6 +9490,12 @@
676 @code{,}, @code{!}, @code{|}, and @code{*} as needed.
677
678
679+@item -mlow-irq-latency
680+@opindex mlow-irq-latency
681+Avoid instructions with high interrupt latency when generating
682+code. This can increase code size and reduce performance.
683+The option is off by default.
684+
685 @end table
686
687 The conditional text @code{X} in a %@{@code{S}:@code{X}@} or similar
688
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99324.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99324.patch
new file mode 100644
index 000000000..40b368862
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99324.patch
@@ -0,0 +1,109 @@
1 Julian Brown <julian@codesourcery.com>
2 Mark Shinwell <mark@codesourcery.com>
3
4 gcc/
5 * regrename.c (addresses.h): Move include of addresses.h after
6 include of flags.h.
7 * recog.c: Likewise.
8 * regcprop.c: Likewise.
9 * config/arm/arm.h (CLASS_LIKELY_SPILLED_P): Check against
10 LO_REGS only for Thumb-1.
11 (MODE_BASE_REG_CLASS): Restrict base registers to those which can
12 be used in short instructions when optimising for size on Thumb-2.
13
142010-07-26 Julian Brown <julian@codesourcery.com>
15
16 Merge from Sourcery G++ 4.4:
17
18 Vladimir Prus <vladimir@codesourcery.com>
19 Julian Brown <julian@codesourcery.com>
20
21
22=== modified file 'gcc/config/arm/arm.h'
23--- old/gcc/config/arm/arm.h 2010-08-05 15:20:54 +0000
24+++ new/gcc/config/arm/arm.h 2010-08-05 15:28:47 +0000
25@@ -1254,11 +1254,14 @@
26 || reg_classes_intersect_p (VFP_REGS, (CLASS)) \
27 : 0)
28
29-/* We need to define this for LO_REGS on thumb. Otherwise we can end up
30- using r0-r4 for function arguments, r7 for the stack frame and don't
31- have enough left over to do doubleword arithmetic. */
32+/* We need to define this for LO_REGS on Thumb-1. Otherwise we can end up
33+ using r0-r4 for function arguments, r7 for the stack frame and don't have
34+ enough left over to do doubleword arithmetic. For Thumb-2 all the
35+ potentially problematic instructions accept high registers so this is not
36+ necessary. Care needs to be taken to avoid adding new Thumb-2 patterns
37+ that require many low registers. */
38 #define CLASS_LIKELY_SPILLED_P(CLASS) \
39- ((TARGET_THUMB && (CLASS) == LO_REGS) \
40+ ((TARGET_THUMB1 && (CLASS) == LO_REGS) \
41 || (CLASS) == CC_REG)
42
43 /* The class value for index registers, and the one for base regs. */
44@@ -1269,7 +1272,7 @@
45 when addressing quantities in QI or HI mode; if we don't know the
46 mode, then we must be conservative. */
47 #define MODE_BASE_REG_CLASS(MODE) \
48- (TARGET_32BIT ? CORE_REGS : \
49+ (TARGET_ARM || (TARGET_THUMB2 && !optimize_size) ? CORE_REGS : \
50 (((MODE) == SImode) ? BASE_REGS : LO_REGS))
51
52 /* For Thumb we can not support SP+reg addressing, so we return LO_REGS
53
54=== modified file 'gcc/recog.c'
55--- old/gcc/recog.c 2010-04-02 18:54:46 +0000
56+++ new/gcc/recog.c 2010-08-05 15:28:47 +0000
57@@ -31,10 +31,10 @@
58 #include "hard-reg-set.h"
59 #include "recog.h"
60 #include "regs.h"
61-#include "addresses.h"
62 #include "expr.h"
63 #include "function.h"
64 #include "flags.h"
65+#include "addresses.h"
66 #include "real.h"
67 #include "toplev.h"
68 #include "basic-block.h"
69
70=== modified file 'gcc/regcprop.c'
71--- old/gcc/regcprop.c 2010-02-26 11:01:28 +0000
72+++ new/gcc/regcprop.c 2010-08-05 15:28:47 +0000
73@@ -26,7 +26,6 @@
74 #include "tm_p.h"
75 #include "insn-config.h"
76 #include "regs.h"
77-#include "addresses.h"
78 #include "hard-reg-set.h"
79 #include "basic-block.h"
80 #include "reload.h"
81@@ -34,6 +33,7 @@
82 #include "function.h"
83 #include "recog.h"
84 #include "flags.h"
85+#include "addresses.h"
86 #include "toplev.h"
87 #include "obstack.h"
88 #include "timevar.h"
89
90=== modified file 'gcc/regrename.c'
91--- old/gcc/regrename.c 2010-04-02 18:54:46 +0000
92+++ new/gcc/regrename.c 2010-08-05 15:28:47 +0000
93@@ -26,7 +26,6 @@
94 #include "tm_p.h"
95 #include "insn-config.h"
96 #include "regs.h"
97-#include "addresses.h"
98 #include "hard-reg-set.h"
99 #include "basic-block.h"
100 #include "reload.h"
101@@ -34,6 +33,7 @@
102 #include "function.h"
103 #include "recog.h"
104 #include "flags.h"
105+#include "addresses.h"
106 #include "toplev.h"
107 #include "obstack.h"
108 #include "timevar.h"
109
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99325.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99325.patch
new file mode 100644
index 000000000..0dbb3dbf7
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99325.patch
@@ -0,0 +1,174 @@
1 http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00811.html
2
3 Kazu Hirata <kazu@codesourcery.com>
4
5 gcc/testsuite/
6 * gcc.target/arm/vfp-ldmdbd.c, gcc.target/arm/vfp-ldmdbs.c,
7 gcc.target/arm/vfp-ldmiad.c, gcc.target/arm/vfp-ldmias.c,
8 gcc.target/arm/vfp-stmdbd.c, gcc.target/arm/vfp-stmdbs.c,
9 gcc.target/arm/vfp-stmiad.c, gcc.target/arm/vfp-stmias.c: New.
10
112010-07-26 Julian Brown <julian@codesourcery.com>
12
13 Merge from Sourcery G++ 4.4:
14
15 Julian Brown <julian@codesourcery.com>
16 Mark Shinwell <mark@codesourcery.com>
17
18
19=== added file 'gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c'
20--- old/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c 1970-01-01 00:00:00 +0000
21+++ new/gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c 2010-08-05 15:37:24 +0000
22@@ -0,0 +1,15 @@
23+/* { dg-do compile } */
24+/* { dg-require-effective-target arm_vfp_ok } */
25+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
26+
27+extern void bar (double);
28+
29+void
30+foo (double *p, double a, int n)
31+{
32+ do
33+ bar (*--p + a);
34+ while (n--);
35+}
36+
37+/* { dg-final { scan-assembler "fldmdbd" } } */
38
39=== added file 'gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c'
40--- old/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c 1970-01-01 00:00:00 +0000
41+++ new/gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c 2010-08-05 15:37:24 +0000
42@@ -0,0 +1,15 @@
43+/* { dg-do compile } */
44+/* { dg-require-effective-target arm_vfp_ok } */
45+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
46+
47+extern void baz (float);
48+
49+void
50+foo (float *p, float a, int n)
51+{
52+ do
53+ bar (*--p + a);
54+ while (n--);
55+}
56+
57+/* { dg-final { scan-assembler "fldmdbs" } } */
58
59=== added file 'gcc/testsuite/gcc.target/arm/vfp-ldmiad.c'
60--- old/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c 1970-01-01 00:00:00 +0000
61+++ new/gcc/testsuite/gcc.target/arm/vfp-ldmiad.c 2010-08-05 15:37:24 +0000
62@@ -0,0 +1,15 @@
63+/* { dg-do compile } */
64+/* { dg-require-effective-target arm_vfp_ok } */
65+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
66+
67+extern void bar (double);
68+
69+void
70+foo (double *p, double a, int n)
71+{
72+ do
73+ bar (*p++ + a);
74+ while (n--);
75+}
76+
77+/* { dg-final { scan-assembler "fldmiad" } } */
78
79=== added file 'gcc/testsuite/gcc.target/arm/vfp-ldmias.c'
80--- old/gcc/testsuite/gcc.target/arm/vfp-ldmias.c 1970-01-01 00:00:00 +0000
81+++ new/gcc/testsuite/gcc.target/arm/vfp-ldmias.c 2010-08-05 15:37:24 +0000
82@@ -0,0 +1,15 @@
83+/* { dg-do compile } */
84+/* { dg-require-effective-target arm_vfp_ok } */
85+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
86+
87+extern void baz (float);
88+
89+void
90+foo (float *p, float a, int n)
91+{
92+ do
93+ bar (*p++ + a);
94+ while (n--);
95+}
96+
97+/* { dg-final { scan-assembler "fldmias" } } */
98
99=== added file 'gcc/testsuite/gcc.target/arm/vfp-stmdbd.c'
100--- old/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c 1970-01-01 00:00:00 +0000
101+++ new/gcc/testsuite/gcc.target/arm/vfp-stmdbd.c 2010-08-05 15:37:24 +0000
102@@ -0,0 +1,14 @@
103+/* { dg-do compile } */
104+/* { dg-require-effective-target arm_vfp_ok } */
105+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
106+
107+void
108+foo (double *p, double a, double b, int n)
109+{
110+ double c = a + b;
111+ do
112+ *--p = c;
113+ while (n--);
114+}
115+
116+/* { dg-final { scan-assembler "fstmdbd" } } */
117
118=== added file 'gcc/testsuite/gcc.target/arm/vfp-stmdbs.c'
119--- old/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c 1970-01-01 00:00:00 +0000
120+++ new/gcc/testsuite/gcc.target/arm/vfp-stmdbs.c 2010-08-05 15:37:24 +0000
121@@ -0,0 +1,14 @@
122+/* { dg-do compile } */
123+/* { dg-require-effective-target arm_vfp_ok } */
124+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
125+
126+void
127+foo (float *p, float a, float b, int n)
128+{
129+ float c = a + b;
130+ do
131+ *--p = c;
132+ while (n--);
133+}
134+
135+/* { dg-final { scan-assembler "fstmdbs" } } */
136
137=== added file 'gcc/testsuite/gcc.target/arm/vfp-stmiad.c'
138--- old/gcc/testsuite/gcc.target/arm/vfp-stmiad.c 1970-01-01 00:00:00 +0000
139+++ new/gcc/testsuite/gcc.target/arm/vfp-stmiad.c 2010-08-05 15:37:24 +0000
140@@ -0,0 +1,14 @@
141+/* { dg-do compile } */
142+/* { dg-require-effective-target arm_vfp_ok } */
143+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
144+
145+void
146+foo (double *p, double a, double b, int n)
147+{
148+ double c = a + b;
149+ do
150+ *p++ = c;
151+ while (n--);
152+}
153+
154+/* { dg-final { scan-assembler "fstmiad" } } */
155
156=== added file 'gcc/testsuite/gcc.target/arm/vfp-stmias.c'
157--- old/gcc/testsuite/gcc.target/arm/vfp-stmias.c 1970-01-01 00:00:00 +0000
158+++ new/gcc/testsuite/gcc.target/arm/vfp-stmias.c 2010-08-05 15:37:24 +0000
159@@ -0,0 +1,14 @@
160+/* { dg-do compile } */
161+/* { dg-require-effective-target arm_vfp_ok } */
162+/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
163+
164+void
165+foo (float *p, float a, float b, int n)
166+{
167+ float c = a + b;
168+ do
169+ *p++ = c;
170+ while (n--);
171+}
172+
173+/* { dg-final { scan-assembler "fstmias" } } */
174
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch
new file mode 100644
index 000000000..59b598ba7
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99326.patch
@@ -0,0 +1,86 @@
1
2 http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00038.html
3
4 * g++.dg/other/armv7m-1.C: New.
5
62010-07-26 Julian Brown <julian@codesourcery.com>
7
8 Merge from Sourcery G++ 4.4:
9
10 http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00811.html
11
12
13=== added file 'gcc/testsuite/g++.dg/other/armv7m-1.C'
14--- old/gcc/testsuite/g++.dg/other/armv7m-1.C 1970-01-01 00:00:00 +0000
15+++ new/gcc/testsuite/g++.dg/other/armv7m-1.C 2010-08-05 16:23:43 +0000
16@@ -0,0 +1,69 @@
17+/* { dg-do run { target arm*-*-* } } */
18+/* Test Armv7m interrupt routines. */
19+#include <stdlib.h>
20+
21+#ifdef __ARM_ARCH_7M__
22+void __attribute__((interrupt))
23+foo(void)
24+{
25+ long long n;
26+ long p;
27+ asm volatile ("" : "=r" (p) : "0" (&n));
28+ if (p & 4)
29+ abort ();
30+ return;
31+}
32+
33+void __attribute__((interrupt))
34+bar(void)
35+{
36+ throw 42;
37+}
38+
39+int main()
40+{
41+ int a;
42+ int before;
43+ int after;
44+ volatile register int sp asm("sp");
45+
46+ asm volatile ("mov %0, sp\n"
47+ "blx %2\n"
48+ "mov %1, sp\n"
49+ : "=&r" (before), "=r" (after) : "r" (foo)
50+ : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
51+ if (before != after)
52+ abort();
53+ asm volatile ("mov %0, sp\n"
54+ "sub sp, sp, #4\n"
55+ "blx %2\n"
56+ "add sp, sp, #4\n"
57+ "mov %1, sp\n"
58+ : "=&r" (before), "=r" (after) : "r" (foo)
59+ : "memory", "cc", "r0", "r1", "r2", "r3", "ip", "lr");
60+ if (before != after)
61+ abort();
62+ before = sp;
63+ try
64+ {
65+ bar();
66+ }
67+ catch (int i)
68+ {
69+ if (i != 42)
70+ abort();
71+ }
72+ catch (...)
73+ {
74+ abort();
75+ }
76+ if (before != sp)
77+ abort();
78+ exit(0);
79+}
80+#else
81+int main()
82+{
83+ exit (0);
84+}
85+#endif
86
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99327.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99327.patch
new file mode 100644
index 000000000..5d489aab6
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99327.patch
@@ -0,0 +1,132 @@
1 Backport from FSF mainline:
2
3 Mark Shinwell <shinwell@codesourcery.com>
4 Julian Brown <julian@codesourcery.com>
5
6 gcc/
7 * config/arm/thumb2.md (thumb2_movsi_insn): Split ldr and str
8 alternatives according to use of high and low regs.
9 * config/arm/vfp.md (thumb2_movsi_vfp): Likewise.
10 * config/arm/arm.h (CONDITIONAL_REGISTER_USAGE): Use high regs when
11 optimizing for size on Thumb-2.
12
132010-07-26 Julian Brown <julian@codesourcery.com>
14
15 Merge from Sourcery G++ 4.4:
16
17 http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00038.html
18
19=== modified file 'gcc/config/arm/arm.h'
20--- old/gcc/config/arm/arm.h 2010-08-05 15:28:47 +0000
21+++ new/gcc/config/arm/arm.h 2010-08-05 16:34:46 +0000
22@@ -783,12 +783,11 @@
23 fixed_regs[regno] = call_used_regs[regno] = 1; \
24 } \
25 \
26- if (TARGET_THUMB && optimize_size) \
27- { \
28- /* When optimizing for size, it's better not to use \
29- the HI regs, because of the overhead of stacking \
30- them. */ \
31- /* ??? Is this still true for thumb2? */ \
32+ if (TARGET_THUMB1 && optimize_size) \
33+ { \
34+ /* When optimizing for size on Thumb-1, it's better not \
35+ to use the HI regs, because of the overhead of \
36+ stacking them. */ \
37 for (regno = FIRST_HI_REGNUM; \
38 regno <= LAST_HI_REGNUM; ++regno) \
39 fixed_regs[regno] = call_used_regs[regno] = 1; \
40
41=== modified file 'gcc/config/arm/thumb2.md'
42--- old/gcc/config/arm/thumb2.md 2010-04-02 07:32:00 +0000
43+++ new/gcc/config/arm/thumb2.md 2010-08-05 16:34:46 +0000
44@@ -223,9 +223,14 @@
45 (set_attr "neg_pool_range" "*,*,*,0,*")]
46 )
47
48+;; We have two alternatives here for memory loads (and similarly for stores)
49+;; to reflect the fact that the permissible constant pool ranges differ
50+;; between ldr instructions taking low regs and ldr instructions taking high
51+;; regs. The high register alternatives are not taken into account when
52+;; choosing register preferences in order to reflect their expense.
53 (define_insn "*thumb2_movsi_insn"
54- [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m")
55- (match_operand:SI 1 "general_operand" "rk ,I,K,j,mi,rk"))]
56+ [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,l, *hk,m,*m")
57+ (match_operand:SI 1 "general_operand" "rk ,I,K,j,mi,*mi,l,*hk"))]
58 "TARGET_THUMB2 && ! TARGET_IWMMXT
59 && !(TARGET_HARD_FLOAT && TARGET_VFP)
60 && ( register_operand (operands[0], SImode)
61@@ -236,11 +241,13 @@
62 mvn%?\\t%0, #%B1
63 movw%?\\t%0, %1
64 ldr%?\\t%0, %1
65+ ldr%?\\t%0, %1
66+ str%?\\t%1, %0
67 str%?\\t%1, %0"
68- [(set_attr "type" "*,*,*,*,load1,store1")
69+ [(set_attr "type" "*,*,*,*,load1,load1,store1,store1")
70 (set_attr "predicable" "yes")
71- (set_attr "pool_range" "*,*,*,*,4096,*")
72- (set_attr "neg_pool_range" "*,*,*,*,0,*")]
73+ (set_attr "pool_range" "*,*,*,*,1020,4096,*,*")
74+ (set_attr "neg_pool_range" "*,*,*,*,0,0,*,*")]
75 )
76
77 (define_insn "tls_load_dot_plus_four"
78
79=== modified file 'gcc/config/arm/vfp.md'
80--- old/gcc/config/arm/vfp.md 2010-07-30 14:17:05 +0000
81+++ new/gcc/config/arm/vfp.md 2010-08-05 16:34:46 +0000
82@@ -86,9 +86,11 @@
83 (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")]
84 )
85
86+;; See thumb2.md:thumb2_movsi_insn for an explanation of the split
87+;; high/low register alternatives for loads and stores here.
88 (define_insn "*thumb2_movsi_vfp"
89- [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,rk,m,*t,r, *t,*t, *Uv")
90- (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,rk,r,*t,*t,*Uvi,*t"))]
91+ [(set (match_operand:SI 0 "nonimmediate_operand" "=rk,r,r,r,l,*hk,m,*m,*t,r, *t,*t, *Uv")
92+ (match_operand:SI 1 "general_operand" "rk, I,K,j,mi,*mi,l,*hk,r,*t,*t,*Uvi,*t"))]
93 "TARGET_THUMB2 && TARGET_VFP && TARGET_HARD_FLOAT
94 && ( s_register_operand (operands[0], SImode)
95 || s_register_operand (operands[1], SImode))"
96@@ -102,25 +104,27 @@
97 case 3:
98 return \"movw%?\\t%0, %1\";
99 case 4:
100+ case 5:
101 return \"ldr%?\\t%0, %1\";
102- case 5:
103+ case 6:
104+ case 7:
105 return \"str%?\\t%1, %0\";
106- case 6:
107+ case 8:
108 return \"fmsr%?\\t%0, %1\\t%@ int\";
109- case 7:
110+ case 9:
111 return \"fmrs%?\\t%0, %1\\t%@ int\";
112- case 8:
113+ case 10:
114 return \"fcpys%?\\t%0, %1\\t%@ int\";
115- case 9: case 10:
116+ case 11: case 12:
117 return output_move_vfp (operands);
118 default:
119 gcc_unreachable ();
120 }
121 "
122 [(set_attr "predicable" "yes")
123- (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_load,f_store")
124- (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*")
125- (set_attr "neg_pool_range" "*,*,*,*, 0,*,*,*,*,1008,*")]
126+ (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_load,f_store")
127+ (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*")
128+ (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")]
129 )
130
131
132
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99332.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99332.patch
new file mode 100644
index 000000000..3e6361130
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99332.patch
@@ -0,0 +1,68 @@
12010-08-06 Yao Qi <yao@codesourcery.com>
2
3 LP: #612011
4 gcc/
5 * config/arm/arm.c (output_move_double): Fix typo generating
6 instructions ('ldr'->'str').
7
8 gcc/testsuite/
9 * gcc.target/arm/pr45094.c: New test.
10
11 2010-08-02 Ulrich Weigand <uweigand@de.ibm.com>
12
13 LP: #604874
14
15=== modified file 'gcc/config/arm/arm.c'
16--- old/gcc/config/arm/arm.c 2010-08-10 13:31:21 +0000
17+++ new/gcc/config/arm/arm.c 2010-08-10 14:03:02 +0000
18@@ -12506,13 +12506,13 @@
19 {
20 if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY)
21 {
22- output_asm_insn ("ldr%?\t%0, [%1, %2]!", otherops);
23- output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops);
24+ output_asm_insn ("str%?\t%0, [%1, %2]!", otherops);
25+ output_asm_insn ("str%?\t%H0, [%1, #4]", otherops);
26 }
27 else
28 {
29- output_asm_insn ("ldr%?\t%H0, [%1, #4]", otherops);
30- output_asm_insn ("ldr%?\t%0, [%1], %2", otherops);
31+ output_asm_insn ("str%?\t%H0, [%1, #4]", otherops);
32+ output_asm_insn ("str%?\t%0, [%1], %2", otherops);
33 }
34 }
35 else if (GET_CODE (XEXP (operands[0], 0)) == PRE_MODIFY)
36
37=== added file 'gcc/testsuite/gcc.target/arm/pr45094.c'
38--- old/gcc/testsuite/gcc.target/arm/pr45094.c 1970-01-01 00:00:00 +0000
39+++ new/gcc/testsuite/gcc.target/arm/pr45094.c 2010-08-06 05:10:03 +0000
40@@ -0,0 +1,27 @@
41+/* { dg-do run } */
42+/* { dg-require-effective-target arm_neon_hw } */
43+/* { dg-options "-O2 -mcpu=cortex-a8" } */
44+/* { dg-add-options arm_neon } */
45+
46+#include <stdlib.h>
47+
48+long long buffer[32];
49+
50+void __attribute__((noinline)) f(long long *p, int n)
51+{
52+ while (--n >= 0)
53+ {
54+ *p = 1;
55+ p += 32;
56+ }
57+}
58+
59+int main(void)
60+{
61+ f(buffer, 1);
62+
63+ if (!buffer[0])
64+ abort();
65+
66+ return 0;
67+}
68
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99335.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99335.patch
new file mode 100644
index 000000000..f75a74091
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99335.patch
@@ -0,0 +1,138 @@
12010-07-26 Julian Brown <julian@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 Mark Shinwell <shinwell@codesourcery.com>
6
7 gcc/
8 * config/arm/vfp.md (*arm_movsi_vfp, *thumb2_movsi_vfp)
9 (*arm_movdi_vfp, *thumb2_movdi_vfp, *movsf_vfp, *thumb2_movsf_vfp)
10 (*movdf_vfp, *thumb2_movdf_vfp, *movsfcc_vfp, *thumb2_movsfcc_vfp)
11 (*movdfcc_vfp, *thumb2_movdfcc_vfp): Add neon_type.
12 * config/arm/arm.md (neon_type): Update comment.
13
14 2010-08-10 Andrew Stubbs <ams@codesourcery.com>
15
16 gcc/
17
18=== modified file 'gcc/config/arm/arm.md'
19--- old/gcc/config/arm/arm.md 2010-08-10 13:31:21 +0000
20+++ new/gcc/config/arm/arm.md 2010-08-12 11:29:02 +0000
21@@ -255,8 +255,6 @@
22 (define_attr "ldsched" "no,yes" (const (symbol_ref "arm_ld_sched")))
23
24 ;; Classification of NEON instructions for scheduling purposes.
25-;; Do not set this attribute and the "type" attribute together in
26-;; any one instruction pattern.
27 (define_attr "neon_type"
28 "neon_int_1,\
29 neon_int_2,\
30
31=== modified file 'gcc/config/arm/vfp.md'
32--- old/gcc/config/arm/vfp.md 2010-08-10 13:31:21 +0000
33+++ new/gcc/config/arm/vfp.md 2010-08-12 11:29:02 +0000
34@@ -82,6 +82,7 @@
35 "
36 [(set_attr "predicable" "yes")
37 (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
38+ (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
39 (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*")
40 (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")]
41 )
42@@ -123,6 +124,7 @@
43 "
44 [(set_attr "predicable" "yes")
45 (set_attr "type" "*,*,*,*,load1,load1,store1,store1,r_2_f,f_2_r,fcpys,f_load,f_store")
46+ (set_attr "neon_type" "*,*,*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
47 (set_attr "pool_range" "*,*,*,*,1020,4096,*,*,*,*,*,1020,*")
48 (set_attr "neg_pool_range" "*,*,*,*, 0, 0,*,*,*,*,*,1008,*")]
49 )
50@@ -160,6 +162,7 @@
51 }
52 "
53 [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
54+ (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
55 (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8)
56 (eq_attr "alternative" "5")
57 (if_then_else
58@@ -198,6 +201,7 @@
59 }
60 "
61 [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_load,f_store")
62+ (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
63 (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8)
64 (eq_attr "alternative" "5")
65 (if_then_else
66@@ -352,6 +356,7 @@
67 [(set_attr "predicable" "yes")
68 (set_attr "type"
69 "r_2_f,f_2_r,fconsts,f_loads,f_stores,load1,store1,fcpys,*")
70+ (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
71 (set_attr "pool_range" "*,*,*,1020,*,4096,*,*,*")
72 (set_attr "neg_pool_range" "*,*,*,1008,*,4080,*,*,*")]
73 )
74@@ -388,6 +393,7 @@
75 [(set_attr "predicable" "yes")
76 (set_attr "type"
77 "r_2_f,f_2_r,fconsts,f_load,f_store,load1,store1,fcpys,*")
78+ (set_attr "neon_type" "neon_mcr,neon_mrc,*,*,*,*,*,neon_vmov,*")
79 (set_attr "pool_range" "*,*,*,1020,*,4092,*,*,*")
80 (set_attr "neg_pool_range" "*,*,*,1008,*,0,*,*,*")]
81 )
82@@ -430,6 +436,7 @@
83 "
84 [(set_attr "type"
85 "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
86+ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
87 (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
88 (eq_attr "alternative" "7")
89 (if_then_else
90@@ -474,6 +481,7 @@
91 "
92 [(set_attr "type"
93 "r_2_f,f_2_r,fconstd,load2,store2,f_load,f_store,ffarithd,*")
94+ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
95 (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
96 (eq_attr "alternative" "7")
97 (if_then_else
98@@ -509,7 +517,8 @@
99 fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
100 [(set_attr "conds" "use")
101 (set_attr "length" "4,4,8,4,4,8,4,4,8")
102- (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
103+ (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
104+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
105 )
106
107 (define_insn "*thumb2_movsfcc_vfp"
108@@ -532,7 +541,8 @@
109 ite\\t%D3\;fmrs%D3\\t%0, %2\;fmrs%d3\\t%0, %1"
110 [(set_attr "conds" "use")
111 (set_attr "length" "6,6,10,6,6,10,6,6,10")
112- (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
113+ (set_attr "type" "fcpys,fcpys,fcpys,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
114+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr,neon_mcr,neon_mcr,neon_mrc,neon_mrc,neon_mrc")]
115 )
116
117 (define_insn "*movdfcc_vfp"
118@@ -555,7 +565,8 @@
119 fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
120 [(set_attr "conds" "use")
121 (set_attr "length" "4,4,8,4,4,8,4,4,8")
122- (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
123+ (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
124+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
125 )
126
127 (define_insn "*thumb2_movdfcc_vfp"
128@@ -578,7 +589,8 @@
129 ite\\t%D3\;fmrrd%D3\\t%Q0, %R0, %P2\;fmrrd%d3\\t%Q0, %R0, %P1"
130 [(set_attr "conds" "use")
131 (set_attr "length" "6,6,10,6,6,10,6,6,10")
132- (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")]
133+ (set_attr "type" "ffarithd,ffarithd,ffarithd,r_2_f,r_2_f,r_2_f,f_2_r,f_2_r,f_2_r")
134+ (set_attr "neon_type" "neon_vmov,neon_vmov,neon_vmov,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mcr_2_mcrr,neon_mrrc,neon_mrrc,neon_mrrc")]
135 )
136
137
138
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch
new file mode 100644
index 000000000..9b5656094
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99336.patch
@@ -0,0 +1,95 @@
1 gcc/
2 * config/arm/arm.c (arm_override_options): Override alignments if
3 tuning for Cortex-A8.
4 (create_fix_barrier, arm_reorg): If aligning to jumps or loops,
5 make labels have a size.
6 * config/arm/arm.md (VUNSPEC_ALIGN16, VUNSPEC_ALIGN32): New constants.
7 (align_16, align_32): New patterns.
8
92010-07-26 Julian Brown <julian@codesourcery.com>
10
11 Merge from Sourcery G++ 4.4:
12
13 Mark Shinwell <shinwell@codesourcery.com>
14
15
16=== modified file 'gcc/config/arm/arm.c'
17--- old/gcc/config/arm/arm.c 2010-08-10 14:03:02 +0000
18+++ new/gcc/config/arm/arm.c 2010-08-12 11:33:54 +0000
19@@ -1449,6 +1449,16 @@
20 chosen. */
21 gcc_assert (arm_tune != arm_none);
22
23+ if (arm_tune == cortexa8 && optimize >= 3)
24+ {
25+ /* These alignments were experimentally determined to improve SPECint
26+ performance on SPECCPU 2000. */
27+ if (align_functions <= 0)
28+ align_functions = 16;
29+ if (align_jumps <= 0)
30+ align_jumps = 16;
31+ }
32+
33 tune_flags = all_cores[(int)arm_tune].flags;
34
35 if (target_fp16_format_name)
36@@ -11263,7 +11273,10 @@
37 gcc_assert (GET_CODE (from) != BARRIER);
38
39 /* Count the length of this insn. */
40- count += get_attr_length (from);
41+ if (LABEL_P (from) && (align_jumps > 0 || align_loops > 0))
42+ count += MAX (align_jumps, align_loops);
43+ else
44+ count += get_attr_length (from);
45
46 /* If there is a jump table, add its length. */
47 tmp = is_jump_table (from);
48@@ -11603,6 +11616,8 @@
49 insn = table;
50 }
51 }
52+ else if (LABEL_P (insn) && (align_jumps > 0 || align_loops > 0))
53+ address += MAX (align_jumps, align_loops);
54 }
55
56 fix = minipool_fix_head;
57
58=== modified file 'gcc/config/arm/arm.md'
59--- old/gcc/config/arm/arm.md 2010-08-12 11:29:02 +0000
60+++ new/gcc/config/arm/arm.md 2010-08-12 11:33:54 +0000
61@@ -135,6 +135,8 @@
62 (VUNSPEC_WCMP_EQ 12) ; Used by the iWMMXt WCMPEQ instructions
63 (VUNSPEC_WCMP_GTU 13) ; Used by the iWMMXt WCMPGTU instructions
64 (VUNSPEC_WCMP_GT 14) ; Used by the iwMMXT WCMPGT instructions
65+ (VUNSPEC_ALIGN16 15) ; Used to force 16-byte alignment.
66+ (VUNSPEC_ALIGN32 16) ; Used to force 32-byte alignment.
67 (VUNSPEC_EH_RETURN 20); Use to override the return address for exception
68 ; handling.
69 ]
70@@ -11042,6 +11044,24 @@
71 "
72 )
73
74+(define_insn "align_16"
75+ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN16)]
76+ "TARGET_EITHER"
77+ "*
78+ assemble_align (128);
79+ return \"\";
80+ "
81+)
82+
83+(define_insn "align_32"
84+ [(unspec_volatile [(const_int 0)] VUNSPEC_ALIGN32)]
85+ "TARGET_EITHER"
86+ "*
87+ assemble_align (256);
88+ return \"\";
89+ "
90+)
91+
92 (define_insn "consttable_end"
93 [(unspec_volatile [(const_int 0)] VUNSPEC_POOL_END)]
94 "TARGET_EITHER"
95
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99337.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99337.patch
new file mode 100644
index 000000000..850acb31b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99337.patch
@@ -0,0 +1,36 @@
1 2008-09-08 Daniel Jacobowitz <dan@codesourcery.com>
2
3 gcc/
4 * config/arm/unwind-arm.c (__gnu_unwind_pr_common): Correct test
5 for barrier handlers.
6
72010-07-26 Julian Brown <julian@codesourcery.com>
8
9 Merge from Sourcery G++ 4.4:
10
11 gcc/
12 * config/arm/arm.c (arm_override_options): Override alignments if
13 tuning for Cortex-A8.
14
15=== modified file 'gcc/config/arm/unwind-arm.c'
16--- old/gcc/config/arm/unwind-arm.c 2009-10-30 14:55:10 +0000
17+++ new/gcc/config/arm/unwind-arm.c 2010-08-12 12:39:35 +0000
18@@ -1196,8 +1196,6 @@
19 ucbp->barrier_cache.bitpattern[4] = (_uw) &data[1];
20
21 if (data[0] & uint32_highbit)
22- phase2_call_unexpected_after_unwind = 1;
23- else
24 {
25 data += rtti_count + 1;
26 /* Setup for entry to the handler. */
27@@ -1207,6 +1205,8 @@
28 _Unwind_SetGR (context, 0, (_uw) ucbp);
29 return _URC_INSTALL_CONTEXT;
30 }
31+ else
32+ phase2_call_unexpected_after_unwind = 1;
33 }
34 if (data[0] & uint32_highbit)
35 data++;
36
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99338.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99338.patch
new file mode 100644
index 000000000..632e80caf
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99338.patch
@@ -0,0 +1,111 @@
1 2009-06-23 Kazu Hirata <kazu@codesourcery.com>
2
3 Issue #4613
4 gcc/
5 * config/arm/arm.c (arm_rtx_costs_1): Teach that the cost of MLS
6 is the same as its underlying multiplication.
7 * config/arm/arm.md (two splitters): New.
8 * config/arm/predicates.md (binary_operator): New.
9
102010-07-26 Julian Brown <julian@codesourcery.com>
11
12 Merge from Sourcery G++ 4.4:
13
14 2008-09-08 Daniel Jacobowitz <dan@codesourcery.com>
15
16 gcc/
17
18=== modified file 'gcc/config/arm/arm.c'
19--- old/gcc/config/arm/arm.c 2010-08-12 11:33:54 +0000
20+++ new/gcc/config/arm/arm.c 2010-08-12 13:35:39 +0000
21@@ -6604,6 +6604,19 @@
22 return true;
23 }
24
25+ /* MLS is just as expensive as its underlying multiplication.
26+ Exclude a shift by a constant, which is expressed as a
27+ multiplication. */
28+ if (TARGET_32BIT && arm_arch_thumb2
29+ && GET_CODE (XEXP (x, 1)) == MULT
30+ && ! (GET_CODE (XEXP (XEXP (x, 1), 1)) == CONST_INT
31+ && ((INTVAL (XEXP (XEXP (x, 1), 1)) &
32+ (INTVAL (XEXP (XEXP (x, 1), 1)) - 1)) == 0)))
33+ {
34+ /* The cost comes from the cost of the multiply. */
35+ return false;
36+ }
37+
38 /* Fall through */
39
40 case PLUS:
41
42=== modified file 'gcc/config/arm/arm.md'
43--- old/gcc/config/arm/arm.md 2010-08-12 11:33:54 +0000
44+++ new/gcc/config/arm/arm.md 2010-08-12 13:35:39 +0000
45@@ -1355,6 +1355,49 @@
46 (set_attr "predicable" "yes")]
47 )
48
49+; The combiner cannot combine the first and last insns in the
50+; following sequence because of the intervening insn, so help the
51+; combiner with this splitter. The combiner does attempt to split
52+; this particular combination but does not know this exact split.
53+; Note that the combiner puts the constant at the outermost operation
54+; as a part of canonicalization.
55+;
56+; mul r3, r2, r1
57+; <add/sub> r3, r3, <constant>
58+; add r3, r3, r4
59+
60+(define_split
61+ [(set (match_operand:SI 0 "s_register_operand" "")
62+ (match_operator:SI 1 "plusminus_operator"
63+ [(plus:SI (mult:SI (match_operand:SI 2 "s_register_operand" "")
64+ (match_operand:SI 3 "s_register_operand" ""))
65+ (match_operand:SI 4 "s_register_operand" ""))
66+ (match_operand:SI 5 "arm_immediate_operand" "")]))]
67+ "TARGET_32BIT"
68+ [(set (match_dup 0)
69+ (plus:SI (mult:SI (match_dup 2) (match_dup 3))
70+ (match_dup 4)))
71+ (set (match_dup 0)
72+ (match_op_dup:SI 1 [(match_dup 0) (match_dup 5)]))]
73+ "")
74+
75+; Likewise for MLS. MLS is available only on select architectures.
76+
77+(define_split
78+ [(set (match_operand:SI 0 "s_register_operand" "")
79+ (match_operator:SI 1 "plusminus_operator"
80+ [(minus:SI (match_operand:SI 2 "s_register_operand" "")
81+ (mult:SI (match_operand:SI 3 "s_register_operand" "")
82+ (match_operand:SI 4 "s_register_operand" "")))
83+ (match_operand:SI 5 "arm_immediate_operand" "")]))]
84+ "TARGET_32BIT && arm_arch_thumb2"
85+ [(set (match_dup 0)
86+ (minus:SI (match_dup 2)
87+ (mult:SI (match_dup 3) (match_dup 4))))
88+ (set (match_dup 0)
89+ (match_op_dup:SI 1 [(match_dup 0) (match_dup 5)]))]
90+ "")
91+
92 (define_insn "*mulsi3addsi_compare0"
93 [(set (reg:CC_NOOV CC_REGNUM)
94 (compare:CC_NOOV
95
96=== modified file 'gcc/config/arm/predicates.md'
97--- old/gcc/config/arm/predicates.md 2010-08-10 13:31:21 +0000
98+++ new/gcc/config/arm/predicates.md 2010-08-12 13:35:39 +0000
99@@ -197,6 +197,11 @@
100 (and (match_code "plus,minus,ior,xor,and")
101 (match_test "mode == GET_MODE (op)")))
102
103+;; True for plus/minus operators
104+(define_special_predicate "plusminus_operator"
105+ (and (match_code "plus,minus")
106+ (match_test "mode == GET_MODE (op)")))
107+
108 ;; True for logical binary operators.
109 (define_special_predicate "logical_binary_operator"
110 (and (match_code "ior,xor,and")
111
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99339.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99339.patch
new file mode 100644
index 000000000..f4a8e80ab
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99339.patch
@@ -0,0 +1,236 @@
1 Backport from FSF mainline:
2
3 gcc/
4 * gengtype-lex.l: Add HARD_REG_SET.
5 * expr.c (expand_expr_real_1): Record writes to hard registers.
6 * function.h (rtl_data): Add asm_clobbers.
7 * ira.c (compute_regs_asm_clobbered): Use crtl->asm_clobbers.
8 (ira_setup_eliminable_regset): Remove regs_asm_clobbered.
9 Use crtl->asm_clobbers.
10
11 gcc/testsuite/
12 * gcc.target/arm/frame-pointer-1.c: New test.
13 * gcc.target/i386/pr9771-1.c: Move code out of main to allow frame
14 pointer elimination.
15
162010-07-26 Julian Brown <julian@codesourcery.com>
17
18 Merge from Sourcery G++ 4.4:
19
20 2009-06-23 Kazu Hirata <kazu@codesourcery.com>
21
22=== modified file 'gcc/expr.c'
23--- old/gcc/expr.c 2010-05-31 14:45:06 +0000
24+++ new/gcc/expr.c 2010-08-12 13:51:16 +0000
25@@ -8458,6 +8458,19 @@
26 expand_decl_rtl:
27 gcc_assert (decl_rtl);
28 decl_rtl = copy_rtx (decl_rtl);
29+ /* Record writes to register variables. */
30+ if (modifier == EXPAND_WRITE && REG_P (decl_rtl)
31+ && REGNO (decl_rtl) < FIRST_PSEUDO_REGISTER)
32+ {
33+ int i = REGNO (decl_rtl);
34+ int nregs = hard_regno_nregs[i][GET_MODE (decl_rtl)];
35+ while (nregs)
36+ {
37+ SET_HARD_REG_BIT (crtl->asm_clobbers, i);
38+ i++;
39+ nregs--;
40+ }
41+ }
42
43 /* Ensure variable marked as used even if it doesn't go through
44 a parser. If it hasn't be used yet, write out an external
45
46=== modified file 'gcc/function.h'
47--- old/gcc/function.h 2009-11-25 10:55:54 +0000
48+++ new/gcc/function.h 2010-08-12 13:51:16 +0000
49@@ -25,6 +25,7 @@
50 #include "tree.h"
51 #include "hashtab.h"
52 #include "vecprim.h"
53+#include "hard-reg-set.h"
54
55 /* Stack of pending (incomplete) sequences saved by `start_sequence'.
56 Each element describes one pending sequence.
57@@ -433,6 +434,12 @@
58 TREE_NOTHROW (current_function_decl) it is set even for overwritable
59 function where currently compiled version of it is nothrow. */
60 bool nothrow;
61+
62+ /* Like regs_ever_live, but 1 if a reg is set or clobbered from an
63+ asm. Unlike regs_ever_live, elements of this array corresponding
64+ to eliminable regs (like the frame pointer) are set if an asm
65+ sets them. */
66+ HARD_REG_SET asm_clobbers;
67 };
68
69 #define return_label (crtl->x_return_label)
70
71=== modified file 'gcc/gengtype-lex.l'
72--- old/gcc/gengtype-lex.l 2009-11-21 10:24:25 +0000
73+++ new/gcc/gengtype-lex.l 2010-08-12 13:51:16 +0000
74@@ -49,7 +49,7 @@
75 ID [[:alpha:]_][[:alnum:]_]*
76 WS [[:space:]]+
77 HWS [ \t\r\v\f]*
78-IWORD short|long|(un)?signed|char|int|HOST_WIDE_INT|HOST_WIDEST_INT|bool|size_t|BOOL_BITFIELD|CPPCHAR_SIGNED_T|ino_t|dev_t
79+IWORD short|long|(un)?signed|char|int|HOST_WIDE_INT|HOST_WIDEST_INT|bool|size_t|BOOL_BITFIELD|CPPCHAR_SIGNED_T|ino_t|dev_t|HARD_REG_SET
80 ITYPE {IWORD}({WS}{IWORD})*
81 EOID [^[:alnum:]_]
82
83
84=== modified file 'gcc/ira.c'
85--- old/gcc/ira.c 2010-03-31 01:44:10 +0000
86+++ new/gcc/ira.c 2010-08-12 13:51:16 +0000
87@@ -1385,14 +1385,12 @@
88 return for_each_rtx (&insn, insn_contains_asm_1, NULL);
89 }
90
91-/* Set up regs_asm_clobbered. */
92+/* Add register clobbers from asm statements. */
93 static void
94-compute_regs_asm_clobbered (char *regs_asm_clobbered)
95+compute_regs_asm_clobbered (void)
96 {
97 basic_block bb;
98
99- memset (regs_asm_clobbered, 0, sizeof (char) * FIRST_PSEUDO_REGISTER);
100-
101 FOR_EACH_BB (bb)
102 {
103 rtx insn;
104@@ -1413,7 +1411,7 @@
105 + hard_regno_nregs[dregno][mode] - 1;
106
107 for (i = dregno; i <= end; ++i)
108- regs_asm_clobbered[i] = 1;
109+ SET_HARD_REG_BIT(crtl->asm_clobbers, i);
110 }
111 }
112 }
113@@ -1425,12 +1423,6 @@
114 void
115 ira_setup_eliminable_regset (void)
116 {
117- /* Like regs_ever_live, but 1 if a reg is set or clobbered from an
118- asm. Unlike regs_ever_live, elements of this array corresponding
119- to eliminable regs (like the frame pointer) are set if an asm
120- sets them. */
121- char *regs_asm_clobbered
122- = (char *) alloca (FIRST_PSEUDO_REGISTER * sizeof (char));
123 #ifdef ELIMINABLE_REGS
124 int i;
125 static const struct {const int from, to; } eliminables[] = ELIMINABLE_REGS;
126@@ -1454,7 +1446,8 @@
127 COPY_HARD_REG_SET (ira_no_alloc_regs, no_unit_alloc_regs);
128 CLEAR_HARD_REG_SET (eliminable_regset);
129
130- compute_regs_asm_clobbered (regs_asm_clobbered);
131+ compute_regs_asm_clobbered ();
132+
133 /* Build the regset of all eliminable registers and show we can't
134 use those that we already know won't be eliminated. */
135 #ifdef ELIMINABLE_REGS
136@@ -1464,7 +1457,7 @@
137 = (! targetm.can_eliminate (eliminables[i].from, eliminables[i].to)
138 || (eliminables[i].to == STACK_POINTER_REGNUM && need_fp));
139
140- if (! regs_asm_clobbered[eliminables[i].from])
141+ if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, eliminables[i].from))
142 {
143 SET_HARD_REG_BIT (eliminable_regset, eliminables[i].from);
144
145@@ -1478,7 +1471,7 @@
146 df_set_regs_ever_live (eliminables[i].from, true);
147 }
148 #if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
149- if (! regs_asm_clobbered[HARD_FRAME_POINTER_REGNUM])
150+ if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
151 {
152 SET_HARD_REG_BIT (eliminable_regset, HARD_FRAME_POINTER_REGNUM);
153 if (need_fp)
154@@ -1492,7 +1485,7 @@
155 #endif
156
157 #else
158- if (! regs_asm_clobbered[FRAME_POINTER_REGNUM])
159+ if (!TEST_HARD_REG_BIT (crtl->asm_clobbers, HARD_FRAME_POINTER_REGNUM))
160 {
161 SET_HARD_REG_BIT (eliminable_regset, FRAME_POINTER_REGNUM);
162 if (need_fp)
163
164=== added file 'gcc/testsuite/gcc.target/arm/frame-pointer-1.c'
165--- old/gcc/testsuite/gcc.target/arm/frame-pointer-1.c 1970-01-01 00:00:00 +0000
166+++ new/gcc/testsuite/gcc.target/arm/frame-pointer-1.c 2010-08-12 13:51:16 +0000
167@@ -0,0 +1,42 @@
168+/* Check local register variables using a register conventionally
169+ used as the frame pointer aren't clobbered under high register pressure. */
170+/* { dg-do run } */
171+/* { dg-options "-Os -mthumb -fomit-frame-pointer" } */
172+
173+#include <stdlib.h>
174+
175+int global=5;
176+
177+void __attribute__((noinline)) foo(int p1, int p2, int p3, int p4)
178+{
179+ if (global != 5 || p1 != 1 || p2 != 2 || p3 != 3 || p4 != 4)
180+ abort();
181+}
182+
183+int __attribute__((noinline)) test(int a, int b, int c, int d)
184+{
185+ register unsigned long r __asm__("r7") = 0xdeadbeef;
186+ int e;
187+
188+ /* ABCD are live after the call which should be enough
189+ to cause r7 to be used if it weren't for the register variable. */
190+ foo(a,b,c,d);
191+
192+ e = 0;
193+ __asm__ __volatile__ ("mov %0, %2"
194+ : "=r" (e)
195+ : "0" (e), "r" (r));
196+
197+ global = a+b+c+d;
198+
199+ return e;
200+}
201+
202+int main()
203+{
204+ if (test(1, 2, 3, 4) != 0xdeadbeef)
205+ abort();
206+ if (global != 10)
207+ abort();
208+ return 0;
209+}
210
211=== modified file 'gcc/testsuite/gcc.target/i386/pr9771-1.c'
212--- old/gcc/testsuite/gcc.target/i386/pr9771-1.c 2007-08-22 08:59:14 +0000
213+++ new/gcc/testsuite/gcc.target/i386/pr9771-1.c 2010-08-12 13:51:16 +0000
214@@ -28,7 +28,10 @@
215 *adr = save;
216 }
217
218-int main()
219+/* This must not be inlined becuase main() requires the frame pointer
220+ for stack alignment. */
221+void test(void) __attribute__((noinline));
222+void test(void)
223 {
224 B = &x;
225
226@@ -42,3 +45,9 @@
227 exit(0);
228 }
229
230+int main()
231+{
232+ test();
233+ return 0;
234+
235+}
236
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99340.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99340.patch
new file mode 100644
index 000000000..31fa99a2e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99340.patch
@@ -0,0 +1,43 @@
1 Merge from Sourcery G++ 4.4:
2
3 2009-08-26 Kazu Hirata <kazu@codesourcery.com>
4
5 Issue #6089
6 gcc/
7 * config/arm/arm.c (arm_rtx_costs_1): Don't special case for
8 Thumb-2 in the MINUS case.
9
102010-07-26 Julian Brown <julian@codesourcery.com>
11
12 Backport from FSF mainline:
13
14 gcc/
15
16=== modified file 'gcc/config/arm/arm.c'
17--- old/gcc/config/arm/arm.c 2010-08-12 13:35:39 +0000
18+++ new/gcc/config/arm/arm.c 2010-08-12 14:08:29 +0000
19@@ -6494,23 +6494,6 @@
20 return true;
21
22 case MINUS:
23- if (TARGET_THUMB2)
24- {
25- if (GET_MODE_CLASS (mode) == MODE_FLOAT)
26- {
27- if (TARGET_HARD_FLOAT && (mode == SFmode || mode == DFmode))
28- *total = COSTS_N_INSNS (1);
29- else
30- *total = COSTS_N_INSNS (20);
31- }
32- else
33- *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
34- /* Thumb2 does not have RSB, so all arguments must be
35- registers (subtracting a constant is canonicalized as
36- addition of the negated constant). */
37- return false;
38- }
39-
40 if (mode == DImode)
41 {
42 *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
43
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99341.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99341.patch
new file mode 100644
index 000000000..d9073123c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99341.patch
@@ -0,0 +1,28 @@
1 2009-08-26 Julian Brown <julian@codesourcery.com>
2
3 gcc/config/arm/
4 * uclinux-eabi.h (LINK_GCC_C_SEQUENCE_SPEC): Override definition
5 for uclinux.
6
72010-07-26 Julian Brown <julian@codesourcery.com>
8
9 Merge from Sourcery G++ 4.4:
10
11 2009-08-26 Kazu Hirata <kazu@codesourcery.com>
12
13
14=== modified file 'gcc/config/arm/uclinux-eabi.h'
15--- old/gcc/config/arm/uclinux-eabi.h 2009-02-20 15:20:38 +0000
16+++ new/gcc/config/arm/uclinux-eabi.h 2010-08-12 15:23:21 +0000
17@@ -50,6 +50,10 @@
18 #undef ARM_DEFAULT_ABI
19 #define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
20
21+#undef LINK_GCC_C_SEQUENCE_SPEC
22+#define LINK_GCC_C_SEQUENCE_SPEC \
23+ "--start-group %G %L --end-group"
24+
25 /* Clear the instruction cache from `beg' to `end'. This makes an
26 inline system call to SYS_cacheflush. */
27 #undef CLEAR_INSN_CACHE
28
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99342.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99342.patch
new file mode 100644
index 000000000..02db2b4e7
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99342.patch
@@ -0,0 +1,76 @@
1 2010-05-25 Julian Brown <julian@codesourcery.com>
2
3 gcc/
4 * config/arm/arm.c (arm_tune_cortex_a5): New.
5 (arm_override_options): Set above. Set max_insns_skipped to 1 for
6 Cortex-A5.
7 * config/arm/arm.h (arm_tune_cortex_a5): Add declaration.
8 (BRANCH_COST): Set to zero for Cortex-A5 unless optimising for
9 size.
10
112010-07-26 Julian Brown <julian@codesourcery.com>
12
13 Merge from Sourcery G++ 4.4:
14
15 2009-08-26 Julian Brown <julian@codesourcery.com>
16
17 gcc/config/arm/
18
19=== modified file 'gcc/config/arm/arm.c'
20--- old/gcc/config/arm/arm.c 2010-08-12 14:08:29 +0000
21+++ new/gcc/config/arm/arm.c 2010-08-12 16:18:41 +0000
22@@ -671,6 +671,9 @@
23 This typically means an ARM6 or ARM7 with MMU or MPU. */
24 int arm_tune_wbuf = 0;
25
26+/* Nonzero if tuning for Cortex-A5. */
27+int arm_tune_cortex_a5 = 0;
28+
29 /* Nonzero if tuning for Cortex-A9. */
30 int arm_tune_cortex_a9 = 0;
31
32@@ -1582,6 +1585,7 @@
33 arm_tune_xscale = (tune_flags & FL_XSCALE) != 0;
34 arm_arch_iwmmxt = (insn_flags & FL_IWMMXT) != 0;
35 arm_arch_hwdiv = (insn_flags & FL_DIV) != 0;
36+ arm_tune_cortex_a5 = (arm_tune == cortexa5) != 0;
37 arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0;
38
39 /* If we are not using the default (ARM mode) section anchor offset
40@@ -1880,6 +1884,11 @@
41 that is worth skipping is shorter. */
42 if (arm_tune_strongarm)
43 max_insns_skipped = 3;
44+
45+ /* Branches can be dual-issued on Cortex-A5, so conditional execution is
46+ less appealing. */
47+ if (arm_tune_cortex_a5)
48+ max_insns_skipped = 1;
49 }
50
51 /* Hot/Cold partitioning is not currently supported, since we can't
52
53=== modified file 'gcc/config/arm/arm.h'
54--- old/gcc/config/arm/arm.h 2010-08-05 16:34:46 +0000
55+++ new/gcc/config/arm/arm.h 2010-08-12 16:18:41 +0000
56@@ -435,6 +435,9 @@
57 /* Nonzero if tuning for stores via the write buffer. */
58 extern int arm_tune_wbuf;
59
60+/* Nonzero if tuning for Cortex-A5. */
61+extern int arm_tune_cortex_a5;
62+
63 /* Nonzero if tuning for Cortex-A9. */
64 extern int arm_tune_cortex_a9;
65
66@@ -2222,7 +2225,8 @@
67 /* Try to generate sequences that don't involve branches, we can then use
68 conditional instructions */
69 #define BRANCH_COST(speed_p, predictable_p) \
70- (TARGET_32BIT ? (TARGET_THUMB2 && optimize_size ? 1 : 4) \
71+ (TARGET_32BIT ? ((arm_tune_cortex_a5 && !optimize_size) ? 0 \
72+ : (TARGET_THUMB2 && optimize_size ? 1 : 4)) \
73 : (optimize > 0 ? 2 : 0))
74
75 /* Position Independent Code. */
76
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99343.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99343.patch
new file mode 100644
index 000000000..86b2d8109
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99343.patch
@@ -0,0 +1,132 @@
1 Backport from FSF mainline:
2
3 gcc/
4 * config/arm/thumb2.md (*thumb2_addsi3_compare0): New.
5 (*thumb2_addsi3_compare0_scratch): New.
6 * config/arm/constraints.md (Pv): New.
7 * config/arm/arm.md (*addsi3_compare0): Remove FIXME comment. Use
8 for ARM mode only.
9 (*addsi3_compare0_scratch): Likewise.
10
112010-07-26 Julian Brown <julian@codesourcery.com>
12
13 Merge from Sourcery G++ 4.4:
14
15 2010-05-25 Julian Brown <julian@codesourcery.com>
16
17=== modified file 'gcc/config/arm/arm.md'
18--- old/gcc/config/arm/arm.md 2010-08-12 13:35:39 +0000
19+++ new/gcc/config/arm/arm.md 2010-08-12 16:47:21 +0000
20@@ -701,7 +701,6 @@
21 ""
22 )
23
24-;; ??? Make Thumb-2 variants which prefer low regs
25 (define_insn "*addsi3_compare0"
26 [(set (reg:CC_NOOV CC_REGNUM)
27 (compare:CC_NOOV
28@@ -710,7 +709,7 @@
29 (const_int 0)))
30 (set (match_operand:SI 0 "s_register_operand" "=r,r")
31 (plus:SI (match_dup 1) (match_dup 2)))]
32- "TARGET_32BIT"
33+ "TARGET_ARM"
34 "@
35 add%.\\t%0, %1, %2
36 sub%.\\t%0, %1, #%n2"
37@@ -723,7 +722,7 @@
38 (plus:SI (match_operand:SI 0 "s_register_operand" "r, r")
39 (match_operand:SI 1 "arm_add_operand" "rI,L"))
40 (const_int 0)))]
41- "TARGET_32BIT"
42+ "TARGET_ARM"
43 "@
44 cmn%?\\t%0, %1
45 cmp%?\\t%0, #%n1"
46
47=== modified file 'gcc/config/arm/constraints.md'
48--- old/gcc/config/arm/constraints.md 2010-07-29 16:58:56 +0000
49+++ new/gcc/config/arm/constraints.md 2010-08-12 16:47:21 +0000
50@@ -31,7 +31,7 @@
51 ;; The following multi-letter normal constraints have been used:
52 ;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di
53 ;; in Thumb-1 state: Pa, Pb
54-;; in Thumb-2 state: Ps, Pt
55+;; in Thumb-2 state: Ps, Pt, Pv
56
57 ;; The following memory constraints have been used:
58 ;; in ARM/Thumb-2 state: Q, Ut, Uv, Uy, Un, Um, Us
59@@ -158,6 +158,11 @@
60 (and (match_code "const_int")
61 (match_test "TARGET_THUMB2 && ival >= -7 && ival <= 7")))
62
63+(define_constraint "Pv"
64+ "@internal In Thumb-2 state a constant in the range -255 to 0"
65+ (and (match_code "const_int")
66+ (match_test "TARGET_THUMB2 && ival >= -255 && ival <= 0")))
67+
68 (define_constraint "G"
69 "In ARM/Thumb-2 state a valid FPA immediate constant."
70 (and (match_code "const_double")
71
72=== modified file 'gcc/config/arm/thumb2.md'
73--- old/gcc/config/arm/thumb2.md 2010-08-05 16:34:46 +0000
74+++ new/gcc/config/arm/thumb2.md 2010-08-12 16:47:21 +0000
75@@ -1241,6 +1241,56 @@
76 (set_attr "length" "2")]
77 )
78
79+(define_insn "*thumb2_addsi3_compare0"
80+ [(set (reg:CC_NOOV CC_REGNUM)
81+ (compare:CC_NOOV
82+ (plus:SI (match_operand:SI 1 "s_register_operand" "l, 0, r")
83+ (match_operand:SI 2 "arm_add_operand" "lPt,Ps,rIL"))
84+ (const_int 0)))
85+ (set (match_operand:SI 0 "s_register_operand" "=l,l,r")
86+ (plus:SI (match_dup 1) (match_dup 2)))]
87+ "TARGET_THUMB2"
88+ "*
89+ HOST_WIDE_INT val;
90+
91+ if (GET_CODE (operands[2]) == CONST_INT)
92+ val = INTVAL (operands[2]);
93+ else
94+ val = 0;
95+
96+ if (val < 0 && const_ok_for_arm (ARM_SIGN_EXTEND (-val)))
97+ return \"subs\\t%0, %1, #%n2\";
98+ else
99+ return \"adds\\t%0, %1, %2\";
100+ "
101+ [(set_attr "conds" "set")
102+ (set_attr "length" "2,2,4")]
103+)
104+
105+(define_insn "*thumb2_addsi3_compare0_scratch"
106+ [(set (reg:CC_NOOV CC_REGNUM)
107+ (compare:CC_NOOV
108+ (plus:SI (match_operand:SI 0 "s_register_operand" "l, r")
109+ (match_operand:SI 1 "arm_add_operand" "lPv,rIL"))
110+ (const_int 0)))]
111+ "TARGET_THUMB2"
112+ "*
113+ HOST_WIDE_INT val;
114+
115+ if (GET_CODE (operands[1]) == CONST_INT)
116+ val = INTVAL (operands[1]);
117+ else
118+ val = 0;
119+
120+ if (val < 0 && const_ok_for_arm (ARM_SIGN_EXTEND (-val)))
121+ return \"cmp\\t%0, #%n1\";
122+ else
123+ return \"cmn\\t%0, %1\";
124+ "
125+ [(set_attr "conds" "set")
126+ (set_attr "length" "2,4")]
127+)
128+
129 ;; 16-bit encodings of "muls" and "mul<c>". We only use these when
130 ;; optimizing for size since "muls" is slow on all known
131 ;; implementations and since "mul<c>" will be generated by
132
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99344.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99344.patch
new file mode 100644
index 000000000..d03ee9406
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99344.patch
@@ -0,0 +1,30 @@
1 2010-02-03 Daniel Gutson <dgutson@codesourcery.com>
2
3 Issue #6472
4
5 gcc/
6 * config/arm/lib1funcs.asm (__ARM_ARCH__): __ARM_ARCH_7EM__
7 added to the preprocessor condition.
8
92010-07-26 Julian Brown <julian@codesourcery.com>
10
11 Backport from FSF mainline:
12
13 gcc/
14 * config/arm/thumb2.md (*thumb2_addsi3_compare0): New.
15 (*thumb2_addsi3_compare0_scratch): New.
16
17=== modified file 'gcc/config/arm/lib1funcs.asm'
18--- old/gcc/config/arm/lib1funcs.asm 2010-08-05 15:20:54 +0000
19+++ new/gcc/config/arm/lib1funcs.asm 2010-08-12 16:49:44 +0000
20@@ -104,7 +104,8 @@
21 #endif
22
23 #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
24- || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
25+ || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \
26+ || defined(__ARM_ARCH_7EM__)
27 # define __ARM_ARCH__ 7
28 #endif
29
30
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99345.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99345.patch
new file mode 100644
index 000000000..757e66c8b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99345.patch
@@ -0,0 +1,30 @@
1 Merge from Sourcery G++ 4.4:
2
3 2010-02-04 Daniel Jacobowitz <dan@codesourcery.com>
4
5 Issue #7197 - backtrace() through throw()
6
7 libstdc++-v3/
8 * libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): For
9 ARM EABI, skip handlers for _US_VIRTUAL_UNWIND_FRAME
10 | _US_FORCE_UNWIND.
11
122010-07-26 Julian Brown <julian@codesourcery.com>
13
14 Backport from FSF mainline:
15
16 2010-02-03 Daniel Gutson <dgutson@codesourcery.com>
17
18=== modified file 'libstdc++-v3/libsupc++/eh_personality.cc'
19--- old/libstdc++-v3/libsupc++/eh_personality.cc 2010-02-17 05:43:24 +0000
20+++ new/libstdc++-v3/libsupc++/eh_personality.cc 2010-08-12 16:53:10 +0000
21@@ -383,6 +383,8 @@
22 switch (state & _US_ACTION_MASK)
23 {
24 case _US_VIRTUAL_UNWIND_FRAME:
25+ if (state & _US_FORCE_UNWIND)
26+ CONTINUE_UNWINDING;
27 actions = _UA_SEARCH_PHASE;
28 break;
29
30
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99346.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99346.patch
new file mode 100644
index 000000000..480719515
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99346.patch
@@ -0,0 +1,170 @@
1 Backport from FSF mainline:
2
3 Julian Brown <julian@codesourcery.com>
4 Mark Mitchell <mark@codesourcery.com>
5
6 gcc/
7 * config/arm/arm.c (arm_function_ok_for_sibcall): Only forbid
8 sibling calls for Thumb-1.
9 * config/arm/arm.h (USE_RETURN_INSN): Enable for Thumb-2.
10 * config/arm/arm.md (*call_symbol, *call_value_symbol): Use for
11 Thumb-2.
12 (*call_insn, *call_value_insn): Don't use for Thumb-2.
13 (sibcall, sibcall_value, *sibcall_insn, *sibcall_value_insn): Use
14 for Thumb-2.
15 (return): New expander.
16 (*arm_return): New name for ARM return insn.
17 * config/arm/thumb2.md (*thumb2_return): New insn pattern.
18
192010-07-26 Julian Brown <julian@codesourcery.com>
20
21 Merge from Sourcery G++ 4.4:
22
23 2010-02-04 Daniel Jacobowitz <dan@codesourcery.com>
24
25=== modified file 'gcc/config/arm/arm.c'
26--- old/gcc/config/arm/arm.c 2010-08-12 16:18:41 +0000
27+++ new/gcc/config/arm/arm.c 2010-08-13 10:30:35 +0000
28@@ -4886,8 +4886,8 @@
29 return false;
30
31 /* Never tailcall something for which we have no decl, or if we
32- are in Thumb mode. */
33- if (decl == NULL || TARGET_THUMB)
34+ are generating code for Thumb-1. */
35+ if (decl == NULL || TARGET_THUMB1)
36 return false;
37
38 /* The PIC register is live on entry to VxWorks PLT entries, so we
39
40=== modified file 'gcc/config/arm/arm.h'
41--- old/gcc/config/arm/arm.h 2010-08-12 16:18:41 +0000
42+++ new/gcc/config/arm/arm.h 2010-08-13 10:30:35 +0000
43@@ -1833,11 +1833,8 @@
44
45 /* Determine if the epilogue should be output as RTL.
46 You should override this if you define FUNCTION_EXTRA_EPILOGUE. */
47-/* This is disabled for Thumb-2 because it will confuse the
48- conditional insn counter.
49- Do not use a return insn if we're avoiding ldm/stm instructions. */
50 #define USE_RETURN_INSN(ISCOND) \
51- ((TARGET_ARM && !low_irq_latency) ? use_return_insn (ISCOND, NULL) : 0)
52+ ((TARGET_32BIT && !low_irq_latency) ? use_return_insn (ISCOND, NULL) : 0)
53
54 /* Definitions for register eliminations.
55
56
57=== modified file 'gcc/config/arm/arm.md'
58--- old/gcc/config/arm/arm.md 2010-08-12 16:47:21 +0000
59+++ new/gcc/config/arm/arm.md 2010-08-13 10:30:35 +0000
60@@ -8798,7 +8798,7 @@
61 (match_operand 1 "" ""))
62 (use (match_operand 2 "" ""))
63 (clobber (reg:SI LR_REGNUM))]
64- "TARGET_ARM
65+ "TARGET_32BIT
66 && (GET_CODE (operands[0]) == SYMBOL_REF)
67 && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[0]))"
68 "*
69@@ -8814,7 +8814,7 @@
70 (match_operand:SI 2 "" "")))
71 (use (match_operand 3 "" ""))
72 (clobber (reg:SI LR_REGNUM))]
73- "TARGET_ARM
74+ "TARGET_32BIT
75 && (GET_CODE (operands[1]) == SYMBOL_REF)
76 && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[1]))"
77 "*
78@@ -8829,7 +8829,7 @@
79 (match_operand:SI 1 "" ""))
80 (use (match_operand 2 "" ""))
81 (clobber (reg:SI LR_REGNUM))]
82- "TARGET_THUMB
83+ "TARGET_THUMB1
84 && GET_CODE (operands[0]) == SYMBOL_REF
85 && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[0]))"
86 "bl\\t%a0"
87@@ -8843,7 +8843,7 @@
88 (match_operand 2 "" "")))
89 (use (match_operand 3 "" ""))
90 (clobber (reg:SI LR_REGNUM))]
91- "TARGET_THUMB
92+ "TARGET_THUMB1
93 && GET_CODE (operands[1]) == SYMBOL_REF
94 && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[1]))"
95 "bl\\t%a1"
96@@ -8857,7 +8857,7 @@
97 (match_operand 1 "general_operand" ""))
98 (return)
99 (use (match_operand 2 "" ""))])]
100- "TARGET_ARM"
101+ "TARGET_32BIT"
102 "
103 {
104 if (operands[2] == NULL_RTX)
105@@ -8871,7 +8871,7 @@
106 (match_operand 2 "general_operand" "")))
107 (return)
108 (use (match_operand 3 "" ""))])]
109- "TARGET_ARM"
110+ "TARGET_32BIT"
111 "
112 {
113 if (operands[3] == NULL_RTX)
114@@ -8884,7 +8884,7 @@
115 (match_operand 1 "" ""))
116 (return)
117 (use (match_operand 2 "" ""))]
118- "TARGET_ARM && GET_CODE (operands[0]) == SYMBOL_REF"
119+ "TARGET_32BIT && GET_CODE (operands[0]) == SYMBOL_REF"
120 "*
121 return NEED_PLT_RELOC ? \"b%?\\t%a0(PLT)\" : \"b%?\\t%a0\";
122 "
123@@ -8897,15 +8897,20 @@
124 (match_operand 2 "" "")))
125 (return)
126 (use (match_operand 3 "" ""))]
127- "TARGET_ARM && GET_CODE (operands[1]) == SYMBOL_REF"
128+ "TARGET_32BIT && GET_CODE (operands[1]) == SYMBOL_REF"
129 "*
130 return NEED_PLT_RELOC ? \"b%?\\t%a1(PLT)\" : \"b%?\\t%a1\";
131 "
132 [(set_attr "type" "call")]
133 )
134
135+(define_expand "return"
136+ [(return)]
137+ "TARGET_32BIT && USE_RETURN_INSN (FALSE)"
138+ "")
139+
140 ;; Often the return insn will be the same as loading from memory, so set attr
141-(define_insn "return"
142+(define_insn "*arm_return"
143 [(return)]
144 "TARGET_ARM && USE_RETURN_INSN (FALSE)"
145 "*
146
147=== modified file 'gcc/config/arm/thumb2.md'
148--- old/gcc/config/arm/thumb2.md 2010-08-12 16:47:21 +0000
149+++ new/gcc/config/arm/thumb2.md 2010-08-13 10:30:35 +0000
150@@ -1054,6 +1054,19 @@
151 (set_attr "length" "20")]
152 )
153
154+;; Note: this is not predicable, to avoid issues with linker-generated
155+;; interworking stubs.
156+(define_insn "*thumb2_return"
157+ [(return)]
158+ "TARGET_THUMB2 && USE_RETURN_INSN (FALSE)"
159+ "*
160+ {
161+ return output_return_instruction (const_true_rtx, TRUE, FALSE);
162+ }"
163+ [(set_attr "type" "load1")
164+ (set_attr "length" "12")]
165+)
166+
167 (define_insn_and_split "thumb2_eh_return"
168 [(unspec_volatile [(match_operand:SI 0 "s_register_operand" "r")]
169 VUNSPEC_EH_RETURN)
170
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch
new file mode 100644
index 000000000..57b8605e5
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99347.patch
@@ -0,0 +1,83 @@
1 Merge from Sourcery G++ 4.4:
2
3 2010-02-15 Julian Brown <julian@codesourcery.com>
4
5 Issue #7486
6
7 gcc/
8 * config/arm/arm.c (arm_libcall_uses_aapcs_base)
9 (arm_init_cumulative_args): Use correct ABI for double-precision
10 helper functions in hard-float mode if only single-precision
11 arithmetic is supported in hardware.
12
132010-07-26 Julian Brown <julian@codesourcery.com>
14
15 Backport from FSF mainline:
16
17 Julian Brown <julian@codesourcery.com>
18
19=== modified file 'gcc/config/arm/arm.c'
20--- old/gcc/config/arm/arm.c 2010-08-13 10:30:35 +0000
21+++ new/gcc/config/arm/arm.c 2010-08-13 10:43:42 +0000
22@@ -3453,6 +3453,28 @@
23 convert_optab_libfunc (sfix_optab, DImode, SFmode));
24 add_libcall (libcall_htab,
25 convert_optab_libfunc (ufix_optab, DImode, SFmode));
26+
27+ /* Values from double-precision helper functions are returned in core
28+ registers if the selected core only supports single-precision
29+ arithmetic, even if we are using the hard-float ABI. */
30+ if (TARGET_VFP)
31+ {
32+ add_libcall (libcall_htab, optab_libfunc (add_optab, DFmode));
33+ add_libcall (libcall_htab, optab_libfunc (sdiv_optab, DFmode));
34+ add_libcall (libcall_htab, optab_libfunc (smul_optab, DFmode));
35+ add_libcall (libcall_htab, optab_libfunc (neg_optab, DFmode));
36+ add_libcall (libcall_htab, optab_libfunc (sub_optab, DFmode));
37+ add_libcall (libcall_htab, optab_libfunc (eq_optab, DFmode));
38+ add_libcall (libcall_htab, optab_libfunc (lt_optab, DFmode));
39+ add_libcall (libcall_htab, optab_libfunc (le_optab, DFmode));
40+ add_libcall (libcall_htab, optab_libfunc (ge_optab, DFmode));
41+ add_libcall (libcall_htab, optab_libfunc (gt_optab, DFmode));
42+ add_libcall (libcall_htab, optab_libfunc (unord_optab, DFmode));
43+ add_libcall (libcall_htab,
44+ convert_optab_libfunc (sext_optab, DFmode, SFmode));
45+ add_libcall (libcall_htab,
46+ convert_optab_libfunc (trunc_optab, SFmode, DFmode));
47+ }
48 }
49
50 return libcall && htab_find (libcall_htab, libcall) != NULL;
51@@ -4406,6 +4428,31 @@
52 if (arm_libcall_uses_aapcs_base (libname))
53 pcum->pcs_variant = ARM_PCS_AAPCS;
54
55+ /* We must pass arguments to double-precision helper functions in core
56+ registers if we only have hardware support for single-precision
57+ arithmetic, even if we are using the hard-float ABI. */
58+ if (TARGET_VFP
59+ && (rtx_equal_p (libname, optab_libfunc (add_optab, DFmode))
60+ || rtx_equal_p (libname, optab_libfunc (sdiv_optab, DFmode))
61+ || rtx_equal_p (libname, optab_libfunc (smul_optab, DFmode))
62+ || rtx_equal_p (libname, optab_libfunc (neg_optab, DFmode))
63+ || rtx_equal_p (libname, optab_libfunc (sub_optab, DFmode))
64+ || rtx_equal_p (libname, optab_libfunc (eq_optab, DFmode))
65+ || rtx_equal_p (libname, optab_libfunc (lt_optab, DFmode))
66+ || rtx_equal_p (libname, optab_libfunc (le_optab, DFmode))
67+ || rtx_equal_p (libname, optab_libfunc (ge_optab, DFmode))
68+ || rtx_equal_p (libname, optab_libfunc (gt_optab, DFmode))
69+ || rtx_equal_p (libname, optab_libfunc (unord_optab, DFmode))
70+ || rtx_equal_p (libname, convert_optab_libfunc (sext_optab,
71+ DFmode, SFmode))
72+ || rtx_equal_p (libname, convert_optab_libfunc (trunc_optab,
73+ SFmode, DFmode))
74+ || rtx_equal_p (libname, convert_optab_libfunc (sfix_optab,
75+ SImode, DFmode))
76+ || rtx_equal_p (libname, convert_optab_libfunc (ufix_optab,
77+ SImode, DFmode))))
78+ pcum->pcs_variant = ARM_PCS_AAPCS;
79+
80 pcum->aapcs_ncrn = pcum->aapcs_next_ncrn = 0;
81 pcum->aapcs_reg = NULL_RTX;
82 pcum->aapcs_partial = 0;
83
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99348.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99348.patch
new file mode 100644
index 000000000..f99938a7f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99348.patch
@@ -0,0 +1,37 @@
1 2010-02-23 Julian Brown <julian@codesourcery.com>
2
3 gcc/
4 * calls.c (precompute_register_parameters): Avoid generating a
5 register move if optimizing for size.
6
72010-07-26 Julian Brown <julian@codesourcery.com>
8
9 Merge from Sourcery G++ 4.4:
10
11 2010-02-15 Julian Brown <julian@codesourcery.com>
12
13 Issue #7486
14
15=== modified file 'gcc/calls.c'
16--- old/gcc/calls.c 2010-04-02 18:54:46 +0000
17+++ new/gcc/calls.c 2010-08-13 10:50:45 +0000
18@@ -703,7 +703,9 @@
19
20 For small register classes, also do this if this call uses
21 register parameters. This is to avoid reload conflicts while
22- loading the parameters registers. */
23+ loading the parameters registers.
24+
25+ Avoid creating the extra move if optimizing for size. */
26
27 else if ((! (REG_P (args[i].value)
28 || (GET_CODE (args[i].value) == SUBREG
29@@ -711,6 +713,7 @@
30 && args[i].mode != BLKmode
31 && rtx_cost (args[i].value, SET, optimize_insn_for_speed_p ())
32 > COSTS_N_INSNS (1)
33+ && !optimize_size
34 && ((SMALL_REGISTER_CLASSES && *reg_parm_seen)
35 || optimize))
36 args[i].value = copy_to_mode_reg (args[i].mode, args[i].value);
37
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99349.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99349.patch
new file mode 100644
index 000000000..a95b649e4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99349.patch
@@ -0,0 +1,401 @@
1 * config/arm/arm.c (thumb2_size_rtx_costs): New.
2 (arm_rtx_costs): Call above for Thumb-2.
3
42010-07-26 Julian Brown <julian@codesourcery.com>
5
6 Merge from Sourcery G++ 4.4:
7
8 2010-02-23 Julian Brown <julian@codesourcery.com>
9
10 gcc/
11 * calls.c (precompute_register_parameters): Avoid generating a
12 register move if optimizing for size.
13
14
15=== modified file 'gcc/config/arm/arm.c'
16--- old/gcc/config/arm/arm.c 2010-08-13 10:43:42 +0000
17+++ new/gcc/config/arm/arm.c 2010-08-13 10:55:28 +0000
18@@ -141,6 +141,7 @@
19 static bool arm_have_conditional_execution (void);
20 static bool arm_rtx_costs_1 (rtx, enum rtx_code, int*, bool);
21 static bool arm_size_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *);
22+static bool thumb2_size_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *);
23 static bool arm_slowmul_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool);
24 static bool arm_fastmul_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool);
25 static bool arm_xscale_rtx_costs (rtx, enum rtx_code, enum rtx_code, int *, bool);
26@@ -7316,14 +7317,372 @@
27 }
28 }
29
30+static bool
31+thumb2_size_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
32+ int *total)
33+{
34+ /* Attempt to give a lower cost to RTXs which can optimistically be
35+ represented as short insns, assuming that the right conditions will hold
36+ later (e.g. low registers will be chosen if a short insn requires them).
37+
38+ Note that we don't make wide insns cost twice as much as narrow insns,
39+ because we can't prove that a particular RTX will actually use a narrow
40+ insn, because not enough information is available (e.g., we don't know
41+ which hard registers pseudos will be assigned). Consider these to be
42+ "expected" sizes/weightings.
43+
44+ (COSTS_NARROW_INSNS has the same weight as COSTS_N_INSNS.) */
45+
46+#define COSTS_NARROW_INSNS(N) ((N) * 4)
47+#define COSTS_WIDE_INSNS(N) ((N) * 6)
48+#define THUMB2_LIBCALL_COST COSTS_WIDE_INSNS (2)
49+ enum machine_mode mode = GET_MODE (x);
50+
51+ switch (code)
52+ {
53+ case MEM:
54+ if (REG_P (XEXP (x, 0)))
55+ {
56+ /* Hopefully this will use a narrow ldm/stm insn. */
57+ *total = COSTS_NARROW_INSNS (1);
58+ return true;
59+ }
60+ else if ((GET_CODE (XEXP (x, 0)) == SYMBOL_REF
61+ && CONSTANT_POOL_ADDRESS_P (XEXP (x, 0)))
62+ || reg_mentioned_p (virtual_stack_vars_rtx, XEXP (x, 0))
63+ || reg_mentioned_p (stack_pointer_rtx, XEXP (x, 0)))
64+ {
65+ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode));
66+ return true;
67+ }
68+ else if (GET_CODE (XEXP (x, 0)) == PLUS)
69+ {
70+ rtx plus = XEXP (x, 0);
71+
72+ if (GET_CODE (XEXP (plus, 1)) == CONST_INT)
73+ {
74+ HOST_WIDE_INT cst = INTVAL (XEXP (plus, 1));
75+
76+ if (cst >= 0 && cst < 256)
77+ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode));
78+ else
79+ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode));
80+
81+ *total += rtx_cost (XEXP (plus, 0), code, false);
82+
83+ return true;
84+ }
85+ }
86+
87+ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode));
88+ return false;
89+
90+ case DIV:
91+ case MOD:
92+ case UDIV:
93+ case UMOD:
94+ if (arm_arch_hwdiv)
95+ *total = COSTS_WIDE_INSNS (1);
96+ else
97+ *total = THUMB2_LIBCALL_COST;
98+ return false;
99+
100+ case ROTATE:
101+ if (mode == SImode && REG_P (XEXP (x, 1)))
102+ {
103+ *total = COSTS_WIDE_INSNS (1) + COSTS_NARROW_INSNS (1)
104+ + rtx_cost (XEXP (x, 0), code, false);
105+ return true;
106+ }
107+ /* Fall through */
108+
109+ case ASHIFT:
110+ case LSHIFTRT:
111+ case ASHIFTRT:
112+ if (mode == DImode && GET_CODE (XEXP (x, 1)) == CONST_INT)
113+ {
114+ *total = COSTS_WIDE_INSNS (3) + rtx_cost (XEXP (x, 0), code, false);
115+ return true;
116+ }
117+ else if (mode == SImode)
118+ {
119+ *total = COSTS_NARROW_INSNS (1);
120+ return false;
121+ }
122+
123+ /* Needs a libcall. */
124+ *total = THUMB2_LIBCALL_COST;
125+ return false;
126+
127+ case ROTATERT:
128+ if (mode == DImode && GET_CODE (XEXP (x, 1)) == CONST_INT)
129+ {
130+ *total = COSTS_WIDE_INSNS (3) + rtx_cost (XEXP (x, 0), code, false);
131+ return true;
132+ }
133+ else if (mode == SImode)
134+ {
135+ if (GET_CODE (XEXP (x, 1)) == CONST_INT)
136+ *total = COSTS_WIDE_INSNS (1) + rtx_cost (XEXP (x, 0), code, false);
137+ else
138+ *total = COSTS_NARROW_INSNS (1)
139+ + rtx_cost (XEXP (x, 0), code, false);
140+ return true;
141+ }
142+
143+ /* Needs a libcall. */
144+ *total = THUMB2_LIBCALL_COST;
145+ return false;
146+
147+ case MINUS:
148+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
149+ && (mode == SFmode || !TARGET_VFP_SINGLE))
150+ {
151+ *total = COSTS_WIDE_INSNS (1);
152+ return false;
153+ }
154+
155+ if (mode == SImode)
156+ {
157+ enum rtx_code subcode0 = GET_CODE (XEXP (x, 0));
158+ enum rtx_code subcode1 = GET_CODE (XEXP (x, 1));
159+
160+ if (subcode0 == ROTATE || subcode0 == ROTATERT || subcode0 == ASHIFT
161+ || subcode0 == LSHIFTRT || subcode0 == ASHIFTRT
162+ || subcode1 == ROTATE || subcode1 == ROTATERT
163+ || subcode1 == ASHIFT || subcode1 == LSHIFTRT
164+ || subcode1 == ASHIFTRT)
165+ {
166+ /* It's just the cost of the two operands. */
167+ *total = 0;
168+ return false;
169+ }
170+
171+ if (subcode1 == CONST_INT)
172+ {
173+ HOST_WIDE_INT cst = INTVAL (XEXP (x, 1));
174+
175+ if (cst >= 0 && cst < 256)
176+ *total = COSTS_NARROW_INSNS (1);
177+ else
178+ *total = COSTS_WIDE_INSNS (1);
179+
180+ *total += rtx_cost (XEXP (x, 0), code, false);
181+
182+ return true;
183+ }
184+
185+ *total = COSTS_NARROW_INSNS (1);
186+ return false;
187+ }
188+
189+ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode));
190+ return false;
191+
192+ case PLUS:
193+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
194+ && (mode == SFmode || !TARGET_VFP_SINGLE))
195+ {
196+ *total = COSTS_WIDE_INSNS (1);
197+ return false;
198+ }
199+
200+ /* Fall through */
201+ case AND: case XOR: case IOR:
202+ if (mode == SImode)
203+ {
204+ enum rtx_code subcode = GET_CODE (XEXP (x, 0));
205+
206+ if (subcode == ROTATE || subcode == ROTATERT || subcode == ASHIFT
207+ || subcode == LSHIFTRT || subcode == ASHIFTRT
208+ || (code == AND && subcode == NOT))
209+ {
210+ /* It's just the cost of the two operands. */
211+ *total = 0;
212+ return false;
213+ }
214+
215+ if (code == PLUS && GET_CODE (XEXP (x, 1)) == CONST_INT)
216+ {
217+ HOST_WIDE_INT cst = INTVAL (XEXP (x, 1));
218+
219+ if ((reg_mentioned_p (virtual_stack_vars_rtx, XEXP (x, 0))
220+ || reg_mentioned_p (stack_pointer_rtx, XEXP (x, 0)))
221+ && cst > -512 && cst < 1024)
222+ /* Only approximately correct, depending on destination
223+ register. */
224+ *total = COSTS_NARROW_INSNS (1);
225+ else if (cst > -256 && cst < 256)
226+ *total = COSTS_NARROW_INSNS (1);
227+ else
228+ *total = COSTS_WIDE_INSNS (1);
229+
230+ *total += rtx_cost (XEXP (x, 0), code, false);
231+
232+ return true;
233+ }
234+
235+ if (subcode == MULT
236+ && power_of_two_operand (XEXP (XEXP (x, 0), 1), mode))
237+ {
238+ *total = COSTS_WIDE_INSNS (1)
239+ + rtx_cost (XEXP (x, 1), code, false);
240+ return true;
241+ }
242+ }
243+
244+ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode));
245+ return false;
246+
247+ case MULT:
248+ if (mode == SImode && GET_CODE (XEXP (x, 1)) != CONST_INT)
249+ {
250+ /* Might be using muls. */
251+ *total = COSTS_NARROW_INSNS (1);
252+ return false;
253+ }
254+ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode));
255+ return false;
256+
257+ case NEG:
258+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
259+ && (mode == SFmode || !TARGET_VFP_SINGLE))
260+ {
261+ *total = COSTS_WIDE_INSNS (1);
262+ return false;
263+ }
264+
265+ /* Fall through */
266+ case NOT:
267+ if (mode == SImode)
268+ {
269+ *total = COSTS_NARROW_INSNS (1);
270+ return false;
271+ }
272+ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode));
273+ return false;
274+
275+ case IF_THEN_ELSE:
276+ *total = COSTS_NARROW_INSNS (1);
277+ return false;
278+
279+ case COMPARE:
280+ if (cc_register (XEXP (x, 0), VOIDmode))
281+ *total = 0;
282+ else
283+ *total = COSTS_NARROW_INSNS (1);
284+ return false;
285+
286+ case ABS:
287+ if (TARGET_HARD_FLOAT && GET_MODE_CLASS (mode) == MODE_FLOAT
288+ && (mode == SFmode || !TARGET_VFP_SINGLE))
289+ *total = COSTS_WIDE_INSNS (1);
290+ else
291+ *total = COSTS_NARROW_INSNS (ARM_NUM_REGS (mode)) * 2;
292+ return false;
293+
294+ case SIGN_EXTEND:
295+ if (GET_MODE_SIZE (mode) <= 4)
296+ *total = GET_CODE (XEXP (x, 0)) == MEM ? 0 : COSTS_NARROW_INSNS (1);
297+ else
298+ *total = COSTS_NARROW_INSNS (1)
299+ + COSTS_WIDE_INSNS (ARM_NUM_REGS (mode));
300+ return false;
301+
302+ case ZERO_EXTEND:
303+ if (GET_MODE_SIZE (mode) > 4)
304+ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode) - 1);
305+ else if (GET_CODE (XEXP (x, 0)) == MEM)
306+ *total = 0;
307+ else
308+ *total = COSTS_NARROW_INSNS (1);
309+ return false;
310+
311+ case CONST_INT:
312+ {
313+ HOST_WIDE_INT cst = INTVAL (x);
314+
315+ switch (outer_code)
316+ {
317+ case PLUS:
318+ if (cst > -256 && cst < 256)
319+ *total = 0;
320+ else
321+ /* See note about optabs below. */
322+ *total = COSTS_N_INSNS (1);
323+ return true;
324+
325+ case MINUS:
326+ case COMPARE:
327+ if (cst >= 0 && cst < 256)
328+ *total = 0;
329+ else
330+ /* See note about optabs below. */
331+ *total = COSTS_N_INSNS (1);
332+ return true;
333+
334+ case ASHIFT:
335+ case ASHIFTRT:
336+ case LSHIFTRT:
337+ *total = 0;
338+ return true;
339+
340+ default:
341+ /* Constants are compared explicitly against COSTS_N_INSNS (1) in
342+ optabs.c, creating an alternative, larger code sequence for more
343+ expensive constants). So, it doesn't pay to make some constants
344+ cost more than this. */
345+ *total = COSTS_N_INSNS (1);
346+ }
347+ return true;
348+ }
349+
350+ case CONST:
351+ case LABEL_REF:
352+ case SYMBOL_REF:
353+ *total = COSTS_WIDE_INSNS (2);
354+ return true;
355+
356+ case CONST_DOUBLE:
357+ *total = COSTS_WIDE_INSNS (4);
358+ return true;
359+
360+ case HIGH:
361+ case LO_SUM:
362+ /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the
363+ cost of these slightly. */
364+ *total = COSTS_WIDE_INSNS (1) + 1;
365+ return true;
366+
367+ default:
368+ if (mode != VOIDmode)
369+ *total = COSTS_WIDE_INSNS (ARM_NUM_REGS (mode));
370+ else
371+ /* A guess (inherited from arm_size_rtx_costs). */
372+ *total = COSTS_WIDE_INSNS (4);
373+ return false;
374+ }
375+
376+ return true;
377+#undef THUMB2_LIBCALL_COST
378+#undef COSTS_WIDE_INSNS
379+#undef COSTS_NARROW_INSNS
380+}
381+
382 /* RTX costs when optimizing for size. */
383 static bool
384 arm_rtx_costs (rtx x, int code, int outer_code, int *total,
385 bool speed)
386 {
387 if (!speed)
388- return arm_size_rtx_costs (x, (enum rtx_code) code,
389- (enum rtx_code) outer_code, total);
390+ {
391+ if (TARGET_THUMB2)
392+ return thumb2_size_rtx_costs (x, (enum rtx_code) code,
393+ (enum rtx_code) outer_code, total);
394+ else
395+ return arm_size_rtx_costs (x, (enum rtx_code) code,
396+ (enum rtx_code) outer_code, total);
397+ }
398 else
399 return all_cores[(int)arm_tune].rtx_costs (x, (enum rtx_code) code,
400 (enum rtx_code) outer_code,
401
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99350.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99350.patch
new file mode 100644
index 000000000..3f66f9d15
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99350.patch
@@ -0,0 +1,184 @@
1 Jie Zhang <jie@codesourcery.com>
2
3 Issue #7122
4
5 gcc/
6 * config/arm/vfp.md (movdf_vfp): Add load double 0.0 case.
7 (thumb2_movdf_vfp): Likewise. Require that one of the operands be a
8 register.
9 * config/arm/constraints.md (D0): New constraint.
10
11 gcc/testsuite/
12 * gcc.target/arm/neon-load-df0.c: New test.
13
142010-07-26 Julian Brown <julian@codesourcery.com>
15
16 Merge from Sourcery G++ 4.4:
17
18 2010-02-23 Julian Brown <julian@codesourcery.com>
19
20 gcc/
21
22=== modified file 'gcc/config/arm/constraints.md'
23--- old/gcc/config/arm/constraints.md 2010-08-12 16:47:21 +0000
24+++ new/gcc/config/arm/constraints.md 2010-08-13 10:59:06 +0000
25@@ -29,7 +29,7 @@
26 ;; in Thumb-1 state: I, J, K, L, M, N, O
27
28 ;; The following multi-letter normal constraints have been used:
29-;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di
30+;; in ARM/Thumb-2 state: D0, Da, Db, Dc, Di, Dn, Dl, DL, Dv, Dy
31 ;; in Thumb-1 state: Pa, Pb
32 ;; in Thumb-2 state: Ps, Pt, Pv
33
34@@ -173,6 +173,13 @@
35 (and (match_code "const_double")
36 (match_test "TARGET_32BIT && neg_const_double_rtx_ok_for_fpa (op)")))
37
38+(define_constraint "D0"
39+ "@internal
40+ In ARM/Thumb-2 state a 0.0 floating point constant which can
41+ be loaded with a Neon vmov immediate instruction."
42+ (and (match_code "const_double")
43+ (match_test "TARGET_NEON && op == CONST0_RTX (mode)")))
44+
45 (define_constraint "Da"
46 "@internal
47 In ARM/Thumb-2 state a const_int, const_double or const_vector that can
48
49=== modified file 'gcc/config/arm/vfp.md'
50--- old/gcc/config/arm/vfp.md 2010-08-12 11:29:02 +0000
51+++ new/gcc/config/arm/vfp.md 2010-08-13 10:59:06 +0000
52@@ -402,8 +402,8 @@
53 ;; DFmode moves
54
55 (define_insn "*movdf_vfp"
56- [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w ,Uv,w,r")
57- (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,mF,r,UvF,w, w,r"))]
58+ [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w, r, m,w ,Uv,w,r")
59+ (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,D0,mF,r,UvF,w, w,r"))]
60 "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
61 && ( register_operand (operands[0], DFmode)
62 || register_operand (operands[1], DFmode))"
63@@ -418,16 +418,18 @@
64 case 2:
65 gcc_assert (TARGET_VFP_DOUBLE);
66 return \"fconstd%?\\t%P0, #%G1\";
67- case 3: case 4:
68+ case 3:
69+ return \"vmov.i32\\t%P0, #0\";
70+ case 4: case 5:
71 return output_move_double (operands);
72- case 5: case 6:
73+ case 6: case 7:
74 return output_move_vfp (operands);
75- case 7:
76+ case 8:
77 if (TARGET_VFP_SINGLE)
78 return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
79 else
80 return \"fcpyd%?\\t%P0, %P1\";
81- case 8:
82+ case 9:
83 return \"#\";
84 default:
85 gcc_unreachable ();
86@@ -435,10 +437,10 @@
87 }
88 "
89 [(set_attr "type"
90- "r_2_f,f_2_r,fconstd,f_loadd,f_stored,load2,store2,ffarithd,*")
91- (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
92- (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
93- (eq_attr "alternative" "7")
94+ "r_2_f,f_2_r,fconstd,*,f_loadd,f_stored,load2,store2,ffarithd,*")
95+ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,neon_vmov,*,*,*,*,neon_vmov,*")
96+ (set (attr "length") (cond [(eq_attr "alternative" "4,5,9") (const_int 8)
97+ (eq_attr "alternative" "8")
98 (if_then_else
99 (eq (symbol_ref "TARGET_VFP_SINGLE")
100 (const_int 1))
101@@ -446,14 +448,16 @@
102 (const_int 4))]
103 (const_int 4)))
104 (set_attr "predicable" "yes")
105- (set_attr "pool_range" "*,*,*,1020,*,1020,*,*,*")
106- (set_attr "neg_pool_range" "*,*,*,1008,*,1008,*,*,*")]
107+ (set_attr "pool_range" "*,*,*,*,1020,*,1020,*,*,*")
108+ (set_attr "neg_pool_range" "*,*,*,*,1008,*,1008,*,*,*")]
109 )
110
111 (define_insn "*thumb2_movdf_vfp"
112- [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,r, m,w ,Uv,w,r")
113- (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,mF,r,UvF,w, w,r"))]
114- "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP"
115+ [(set (match_operand:DF 0 "nonimmediate_soft_df_operand" "=w,?r,w ,w,r, m,w ,Uv,w,r")
116+ (match_operand:DF 1 "soft_df_operand" " ?r,w,Dy,D0,mF,r,UvF,w, w,r"))]
117+ "TARGET_THUMB2 && TARGET_HARD_FLOAT && TARGET_VFP
118+ && ( register_operand (operands[0], DFmode)
119+ || register_operand (operands[1], DFmode))"
120 "*
121 {
122 switch (which_alternative)
123@@ -465,11 +469,13 @@
124 case 2:
125 gcc_assert (TARGET_VFP_DOUBLE);
126 return \"fconstd%?\\t%P0, #%G1\";
127- case 3: case 4: case 8:
128+ case 3:
129+ return \"vmov.i32\\t%P0, #0\";
130+ case 4: case 5: case 9:
131 return output_move_double (operands);
132- case 5: case 6:
133+ case 6: case 7:
134 return output_move_vfp (operands);
135- case 7:
136+ case 8:
137 if (TARGET_VFP_SINGLE)
138 return \"fcpys%?\\t%0, %1\;fcpys%?\\t%p0, %p1\";
139 else
140@@ -480,18 +486,18 @@
141 }
142 "
143 [(set_attr "type"
144- "r_2_f,f_2_r,fconstd,load2,store2,f_load,f_store,ffarithd,*")
145- (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,*,*,*,*,neon_vmov,*")
146- (set (attr "length") (cond [(eq_attr "alternative" "3,4,8") (const_int 8)
147- (eq_attr "alternative" "7")
148+ "r_2_f,f_2_r,fconstd,*,load2,store2,f_load,f_store,ffarithd,*")
149+ (set_attr "neon_type" "neon_mcr_2_mcrr,neon_mrrc,*,neon_vmov,*,*,*,*,neon_vmov,*")
150+ (set (attr "length") (cond [(eq_attr "alternative" "4,5,9") (const_int 8)
151+ (eq_attr "alternative" "8")
152 (if_then_else
153 (eq (symbol_ref "TARGET_VFP_SINGLE")
154 (const_int 1))
155 (const_int 8)
156 (const_int 4))]
157 (const_int 4)))
158- (set_attr "pool_range" "*,*,*,4096,*,1020,*,*,*")
159- (set_attr "neg_pool_range" "*,*,*,0,*,1008,*,*,*")]
160+ (set_attr "pool_range" "*,*,*,*,4096,*,1020,*,*,*")
161+ (set_attr "neg_pool_range" "*,*,*,*,0,*,1008,*,*,*")]
162 )
163
164
165
166=== added file 'gcc/testsuite/gcc.target/arm/neon-load-df0.c'
167--- old/gcc/testsuite/gcc.target/arm/neon-load-df0.c 1970-01-01 00:00:00 +0000
168+++ new/gcc/testsuite/gcc.target/arm/neon-load-df0.c 2010-08-13 10:59:06 +0000
169@@ -0,0 +1,14 @@
170+/* Test the optimization of loading 0.0 for ARM Neon. */
171+
172+/* { dg-do compile } */
173+/* { dg-require-effective-target arm_neon_ok } */
174+/* { dg-options "-O2" } */
175+/* { dg-add-options arm_neon } */
176+
177+double x;
178+void bar ()
179+{
180+ x = 0.0;
181+}
182+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[dD\]\[0-9\]+, #0\n" } } */
183+/* { dg-final { cleanup-saved-temps } } */
184
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch
new file mode 100644
index 000000000..aa3b3eb85
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99351.patch
@@ -0,0 +1,548 @@
12010-07-26 Julian Brown <julian@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 Jie Zhang <jie@codesourcery.com>
6 Issue #7122
7
8 gcc/
9 * config/arm/arm.c (arm_rtx_costs_1): Adjust cost for
10 CONST_VECTOR.
11 (arm_size_rtx_costs): Likewise.
12 (thumb2_size_rtx_costs): Likewise.
13 (neon_valid_immediate): Add a case for double 0.0.
14
15 gcc/testsuite/
16 * gcc.target/arm/neon-vdup-1.c: New test case.
17 * gcc.target/arm/neon-vdup-2.c: New test case.
18 * gcc.target/arm/neon-vdup-3.c: New test case.
19 * gcc.target/arm/neon-vdup-4.c: New test case.
20 * gcc.target/arm/neon-vdup-5.c: New test case.
21 * gcc.target/arm/neon-vdup-6.c: New test case.
22 * gcc.target/arm/neon-vdup-7.c: New test case.
23 * gcc.target/arm/neon-vdup-8.c: New test case.
24 * gcc.target/arm/neon-vdup-9.c: New test case.
25 * gcc.target/arm/neon-vdup-10.c: New test case.
26 * gcc.target/arm/neon-vdup-11.c: New test case.
27 * gcc.target/arm/neon-vdup-12.c: New test case.
28 * gcc.target/arm/neon-vdup-13.c: New test case.
29 * gcc.target/arm/neon-vdup-14.c: New test case.
30 * gcc.target/arm/neon-vdup-15.c: New test case.
31 * gcc.target/arm/neon-vdup-16.c: New test case.
32 * gcc.target/arm/neon-vdup-17.c: New test case.
33 * gcc.target/arm/neon-vdup-18.c: New test case.
34 * gcc.target/arm/neon-vdup-19.c: New test case.
35
36
37=== modified file 'gcc/config/arm/arm.c'
38--- old/gcc/config/arm/arm.c 2010-08-13 10:55:28 +0000
39+++ new/gcc/config/arm/arm.c 2010-08-13 11:02:47 +0000
40@@ -7061,6 +7061,17 @@
41 *total = COSTS_N_INSNS (4);
42 return true;
43
44+ case CONST_VECTOR:
45+ if (TARGET_NEON
46+ && TARGET_HARD_FLOAT
47+ && outer == SET
48+ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
49+ && neon_immediate_valid_for_move (x, mode, NULL, NULL))
50+ *total = COSTS_N_INSNS (1);
51+ else
52+ *total = COSTS_N_INSNS (4);
53+ return true;
54+
55 default:
56 *total = COSTS_N_INSNS (4);
57 return false;
58@@ -7301,6 +7312,17 @@
59 *total = COSTS_N_INSNS (4);
60 return true;
61
62+ case CONST_VECTOR:
63+ if (TARGET_NEON
64+ && TARGET_HARD_FLOAT
65+ && outer_code == SET
66+ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
67+ && neon_immediate_valid_for_move (x, mode, NULL, NULL))
68+ *total = COSTS_N_INSNS (1);
69+ else
70+ *total = COSTS_N_INSNS (4);
71+ return true;
72+
73 case HIGH:
74 case LO_SUM:
75 /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the
76@@ -7647,6 +7669,17 @@
77 *total = COSTS_WIDE_INSNS (4);
78 return true;
79
80+ case CONST_VECTOR:
81+ if (TARGET_NEON
82+ && TARGET_HARD_FLOAT
83+ && outer_code == SET
84+ && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode))
85+ && neon_immediate_valid_for_move (x, mode, NULL, NULL))
86+ *total = COSTS_WIDE_INSNS (1);
87+ else
88+ *total = COSTS_WIDE_INSNS (4);
89+ return true;
90+
91 case HIGH:
92 case LO_SUM:
93 /* We prefer constant pool entries to MOVW/MOVT pairs, so bump the
94@@ -8315,11 +8348,14 @@
95 vmov i64 17 aaaaaaaa bbbbbbbb cccccccc dddddddd
96 eeeeeeee ffffffff gggggggg hhhhhhhh
97 vmov f32 18 aBbbbbbc defgh000 00000000 00000000
98+ vmov f32 19 00000000 00000000 00000000 00000000
99
100 For case 18, B = !b. Representable values are exactly those accepted by
101 vfp3_const_double_index, but are output as floating-point numbers rather
102 than indices.
103
104+ For case 19, we will change it to vmov.i32 when assembling.
105+
106 Variants 0-5 (inclusive) may also be used as immediates for the second
107 operand of VORR/VBIC instructions.
108
109@@ -8362,7 +8398,7 @@
110 rtx el0 = CONST_VECTOR_ELT (op, 0);
111 REAL_VALUE_TYPE r0;
112
113- if (!vfp3_const_double_rtx (el0))
114+ if (!vfp3_const_double_rtx (el0) && el0 != CONST0_RTX (GET_MODE (el0)))
115 return -1;
116
117 REAL_VALUE_FROM_CONST_DOUBLE (r0, el0);
118@@ -8384,7 +8420,10 @@
119 if (elementwidth)
120 *elementwidth = 0;
121
122- return 18;
123+ if (el0 == CONST0_RTX (GET_MODE (el0)))
124+ return 19;
125+ else
126+ return 18;
127 }
128
129 /* Splat vector constant out into a byte vector. */
130
131=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-1.c'
132--- old/gcc/testsuite/gcc.target/arm/neon-vdup-1.c 1970-01-01 00:00:00 +0000
133+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-1.c 2010-08-13 11:02:47 +0000
134@@ -0,0 +1,17 @@
135+/* Test the optimization of `vdupq_n_f32' ARM Neon intrinsic. */
136+
137+/* { dg-do compile } */
138+/* { dg-require-effective-target arm_neon_ok } */
139+/* { dg-options "-O2" } */
140+/* { dg-add-options arm_neon } */
141+
142+#include <arm_neon.h>
143+
144+float32x4_t out_float32x4_t;
145+void test_vdupq_nf32 (void)
146+{
147+ out_float32x4_t = vdupq_n_f32 (0.0);
148+}
149+
150+/* { dg-final { scan-assembler "vmov\.f32\[ \]+\[qQ\]\[0-9\]+, #0\.0\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
151+/* { dg-final { cleanup-saved-temps } } */
152
153=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-10.c'
154--- old/gcc/testsuite/gcc.target/arm/neon-vdup-10.c 1970-01-01 00:00:00 +0000
155+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-10.c 2010-08-13 11:02:47 +0000
156@@ -0,0 +1,17 @@
157+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
158+
159+/* { dg-do compile } */
160+/* { dg-require-effective-target arm_neon_ok } */
161+/* { dg-options "-O2" } */
162+/* { dg-add-options arm_neon } */
163+
164+#include <arm_neon.h>
165+
166+uint32x4_t out_uint32x4_t;
167+void test_vdupq_nu32 (void)
168+{
169+ out_uint32x4_t = vdupq_n_u32 (~0x12000000);
170+}
171+
172+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #3992977407\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
173+/* { dg-final { cleanup-saved-temps } } */
174
175=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-11.c'
176--- old/gcc/testsuite/gcc.target/arm/neon-vdup-11.c 1970-01-01 00:00:00 +0000
177+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-11.c 2010-08-13 11:02:47 +0000
178@@ -0,0 +1,17 @@
179+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
180+
181+/* { dg-do compile } */
182+/* { dg-require-effective-target arm_neon_ok } */
183+/* { dg-options "-O2" } */
184+/* { dg-add-options arm_neon } */
185+
186+#include <arm_neon.h>
187+
188+uint16x8_t out_uint16x8_t;
189+void test_vdupq_nu16 (void)
190+{
191+ out_uint16x8_t = vdupq_n_u16 (0x12);
192+}
193+
194+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
195+/* { dg-final { cleanup-saved-temps } } */
196
197=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-12.c'
198--- old/gcc/testsuite/gcc.target/arm/neon-vdup-12.c 1970-01-01 00:00:00 +0000
199+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-12.c 2010-08-13 11:02:47 +0000
200@@ -0,0 +1,17 @@
201+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
202+
203+/* { dg-do compile } */
204+/* { dg-require-effective-target arm_neon_ok } */
205+/* { dg-options "-O2" } */
206+/* { dg-add-options arm_neon } */
207+
208+#include <arm_neon.h>
209+
210+uint16x8_t out_uint16x8_t;
211+void test_vdupq_nu16 (void)
212+{
213+ out_uint16x8_t = vdupq_n_u16 (0x1200);
214+}
215+
216+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
217+/* { dg-final { cleanup-saved-temps } } */
218
219=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-13.c'
220--- old/gcc/testsuite/gcc.target/arm/neon-vdup-13.c 1970-01-01 00:00:00 +0000
221+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-13.c 2010-08-13 11:02:47 +0000
222@@ -0,0 +1,17 @@
223+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
224+
225+/* { dg-do compile } */
226+/* { dg-require-effective-target arm_neon_ok } */
227+/* { dg-options "-O2" } */
228+/* { dg-add-options arm_neon } */
229+
230+#include <arm_neon.h>
231+
232+uint16x8_t out_uint16x8_t;
233+void test_vdupq_nu16 (void)
234+{
235+ out_uint16x8_t = vdupq_n_u16 (~0x12);
236+}
237+
238+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #65517\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
239+/* { dg-final { cleanup-saved-temps } } */
240
241=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-14.c'
242--- old/gcc/testsuite/gcc.target/arm/neon-vdup-14.c 1970-01-01 00:00:00 +0000
243+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-14.c 2010-08-13 11:02:47 +0000
244@@ -0,0 +1,17 @@
245+/* Test the optimization of `vdupq_n_u16' ARM Neon intrinsic. */
246+
247+/* { dg-do compile } */
248+/* { dg-require-effective-target arm_neon_ok } */
249+/* { dg-options "-O2" } */
250+/* { dg-add-options arm_neon } */
251+
252+#include <arm_neon.h>
253+
254+uint16x8_t out_uint16x8_t;
255+void test_vdupq_nu16 (void)
256+{
257+ out_uint16x8_t = vdupq_n_u16 (~0x1200);
258+}
259+
260+/* { dg-final { scan-assembler "vmov\.i16\[ \]+\[qQ\]\[0-9\]+, #60927\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
261+/* { dg-final { cleanup-saved-temps } } */
262
263=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-15.c'
264--- old/gcc/testsuite/gcc.target/arm/neon-vdup-15.c 1970-01-01 00:00:00 +0000
265+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-15.c 2010-08-13 11:02:47 +0000
266@@ -0,0 +1,17 @@
267+/* Test the optimization of `vdupq_n_u8' ARM Neon intrinsic. */
268+
269+/* { dg-do compile } */
270+/* { dg-require-effective-target arm_neon_ok } */
271+/* { dg-options "-O2" } */
272+/* { dg-add-options arm_neon } */
273+
274+#include <arm_neon.h>
275+
276+uint8x16_t out_uint8x16_t;
277+void test_vdupq_nu8 (void)
278+{
279+ out_uint8x16_t = vdupq_n_u8 (0x12);
280+}
281+
282+/* { dg-final { scan-assembler "vmov\.i8\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
283+/* { dg-final { cleanup-saved-temps } } */
284
285=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-16.c'
286--- old/gcc/testsuite/gcc.target/arm/neon-vdup-16.c 1970-01-01 00:00:00 +0000
287+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-16.c 2010-08-13 11:02:47 +0000
288@@ -0,0 +1,17 @@
289+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
290+
291+/* { dg-do compile } */
292+/* { dg-require-effective-target arm_neon_ok } */
293+/* { dg-options "-O2" } */
294+/* { dg-add-options arm_neon } */
295+
296+#include <arm_neon.h>
297+
298+uint32x4_t out_uint32x4_t;
299+void test_vdupq_nu32 (void)
300+{
301+ out_uint32x4_t = vdupq_n_u32 (0x12ff);
302+}
303+
304+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4863\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
305+/* { dg-final { cleanup-saved-temps } } */
306
307=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-17.c'
308--- old/gcc/testsuite/gcc.target/arm/neon-vdup-17.c 1970-01-01 00:00:00 +0000
309+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-17.c 2010-08-13 11:02:47 +0000
310@@ -0,0 +1,17 @@
311+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
312+
313+/* { dg-do compile } */
314+/* { dg-require-effective-target arm_neon_ok } */
315+/* { dg-options "-O2" } */
316+/* { dg-add-options arm_neon } */
317+
318+#include <arm_neon.h>
319+
320+uint32x4_t out_uint32x4_t;
321+void test_vdupq_nu32 (void)
322+{
323+ out_uint32x4_t = vdupq_n_u32 (0x12ffff);
324+}
325+
326+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #1245183\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
327+/* { dg-final { cleanup-saved-temps } } */
328
329=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-18.c'
330--- old/gcc/testsuite/gcc.target/arm/neon-vdup-18.c 1970-01-01 00:00:00 +0000
331+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-18.c 2010-08-13 11:02:47 +0000
332@@ -0,0 +1,17 @@
333+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
334+
335+/* { dg-do compile } */
336+/* { dg-require-effective-target arm_neon_ok } */
337+/* { dg-options "-O2" } */
338+/* { dg-add-options arm_neon } */
339+
340+#include <arm_neon.h>
341+
342+uint32x4_t out_uint32x4_t;
343+void test_vdupq_nu32 (void)
344+{
345+ out_uint32x4_t = vdupq_n_u32 (~0x12ff);
346+}
347+
348+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294962432\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
349+/* { dg-final { cleanup-saved-temps } } */
350
351=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-19.c'
352--- old/gcc/testsuite/gcc.target/arm/neon-vdup-19.c 1970-01-01 00:00:00 +0000
353+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-19.c 2010-08-13 11:02:47 +0000
354@@ -0,0 +1,17 @@
355+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
356+
357+/* { dg-do compile } */
358+/* { dg-require-effective-target arm_neon_ok } */
359+/* { dg-options "-O2" } */
360+/* { dg-add-options arm_neon } */
361+
362+#include <arm_neon.h>
363+
364+uint32x4_t out_uint32x4_t;
365+void test_vdupq_nu32 (void)
366+{
367+ out_uint32x4_t = vdupq_n_u32 (~0x12ffff);
368+}
369+
370+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4293722112\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
371+/* { dg-final { cleanup-saved-temps } } */
372
373=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-2.c'
374--- old/gcc/testsuite/gcc.target/arm/neon-vdup-2.c 1970-01-01 00:00:00 +0000
375+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-2.c 2010-08-13 11:02:47 +0000
376@@ -0,0 +1,17 @@
377+/* Test the optimization of `vdupq_n_f32' ARM Neon intrinsic. */
378+
379+/* { dg-do compile } */
380+/* { dg-require-effective-target arm_neon_ok } */
381+/* { dg-options "-O2" } */
382+/* { dg-add-options arm_neon } */
383+
384+#include <arm_neon.h>
385+
386+float32x4_t out_float32x4_t;
387+void test_vdupq_nf32 (void)
388+{
389+ out_float32x4_t = vdupq_n_f32 (0.125);
390+}
391+
392+/* { dg-final { scan-assembler "vmov\.f32\[ \]+\[qQ\]\[0-9\]+, #1\.25e-1\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
393+/* { dg-final { cleanup-saved-temps } } */
394
395=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-3.c'
396--- old/gcc/testsuite/gcc.target/arm/neon-vdup-3.c 1970-01-01 00:00:00 +0000
397+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-3.c 2010-08-13 11:02:47 +0000
398@@ -0,0 +1,17 @@
399+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
400+
401+/* { dg-do compile } */
402+/* { dg-require-effective-target arm_neon_ok } */
403+/* { dg-options "-O2" } */
404+/* { dg-add-options arm_neon } */
405+
406+#include <arm_neon.h>
407+
408+uint32x4_t out_uint32x4_t;
409+void test_vdupq_nu32 (void)
410+{
411+ out_uint32x4_t = vdupq_n_u32 (0x12);
412+}
413+
414+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
415+/* { dg-final { cleanup-saved-temps } } */
416
417=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-4.c'
418--- old/gcc/testsuite/gcc.target/arm/neon-vdup-4.c 1970-01-01 00:00:00 +0000
419+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-4.c 2010-08-13 11:02:47 +0000
420@@ -0,0 +1,17 @@
421+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
422+
423+/* { dg-do compile } */
424+/* { dg-require-effective-target arm_neon_ok } */
425+/* { dg-options "-O2" } */
426+/* { dg-add-options arm_neon } */
427+
428+#include <arm_neon.h>
429+
430+uint32x4_t out_uint32x4_t;
431+void test_vdupq_nu32 (void)
432+{
433+ out_uint32x4_t = vdupq_n_u32 (0x1200);
434+}
435+
436+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
437+/* { dg-final { cleanup-saved-temps } } */
438
439=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-5.c'
440--- old/gcc/testsuite/gcc.target/arm/neon-vdup-5.c 1970-01-01 00:00:00 +0000
441+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-5.c 2010-08-13 11:02:47 +0000
442@@ -0,0 +1,17 @@
443+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
444+
445+/* { dg-do compile } */
446+/* { dg-require-effective-target arm_neon_ok } */
447+/* { dg-options "-O2" } */
448+/* { dg-add-options arm_neon } */
449+
450+#include <arm_neon.h>
451+
452+uint32x4_t out_uint32x4_t;
453+void test_vdupq_nu32 (void)
454+{
455+ out_uint32x4_t = vdupq_n_u32 (0x120000);
456+}
457+
458+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #1179648\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
459+/* { dg-final { cleanup-saved-temps } } */
460
461=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-6.c'
462--- old/gcc/testsuite/gcc.target/arm/neon-vdup-6.c 1970-01-01 00:00:00 +0000
463+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-6.c 2010-08-13 11:02:47 +0000
464@@ -0,0 +1,17 @@
465+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
466+
467+/* { dg-do compile } */
468+/* { dg-require-effective-target arm_neon_ok } */
469+/* { dg-options "-O2" } */
470+/* { dg-add-options arm_neon } */
471+
472+#include <arm_neon.h>
473+
474+uint32x4_t out_uint32x4_t;
475+void test_vdupq_nu32 (void)
476+{
477+ out_uint32x4_t = vdupq_n_u32 (0x12000000);
478+}
479+
480+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #301989888\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
481+/* { dg-final { cleanup-saved-temps } } */
482
483=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-7.c'
484--- old/gcc/testsuite/gcc.target/arm/neon-vdup-7.c 1970-01-01 00:00:00 +0000
485+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-7.c 2010-08-13 11:02:47 +0000
486@@ -0,0 +1,17 @@
487+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
488+
489+/* { dg-do compile } */
490+/* { dg-require-effective-target arm_neon_ok } */
491+/* { dg-options "-O2" } */
492+/* { dg-add-options arm_neon } */
493+
494+#include <arm_neon.h>
495+
496+uint32x4_t out_uint32x4_t;
497+void test_vdupq_nu32 (void)
498+{
499+ out_uint32x4_t = vdupq_n_u32 (~0x12);
500+}
501+
502+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294967277\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
503+/* { dg-final { cleanup-saved-temps } } */
504
505=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-8.c'
506--- old/gcc/testsuite/gcc.target/arm/neon-vdup-8.c 1970-01-01 00:00:00 +0000
507+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-8.c 2010-08-13 11:02:47 +0000
508@@ -0,0 +1,17 @@
509+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
510+
511+/* { dg-do compile } */
512+/* { dg-require-effective-target arm_neon_ok } */
513+/* { dg-options "-O2" } */
514+/* { dg-add-options arm_neon } */
515+
516+#include <arm_neon.h>
517+
518+uint32x4_t out_uint32x4_t;
519+void test_vdupq_nu32 (void)
520+{
521+ out_uint32x4_t = vdupq_n_u32 (~0x1200);
522+}
523+
524+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4294962687\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
525+/* { dg-final { cleanup-saved-temps } } */
526
527=== added file 'gcc/testsuite/gcc.target/arm/neon-vdup-9.c'
528--- old/gcc/testsuite/gcc.target/arm/neon-vdup-9.c 1970-01-01 00:00:00 +0000
529+++ new/gcc/testsuite/gcc.target/arm/neon-vdup-9.c 2010-08-13 11:02:47 +0000
530@@ -0,0 +1,17 @@
531+/* Test the optimization of `vdupq_n_u32' ARM Neon intrinsic. */
532+
533+/* { dg-do compile } */
534+/* { dg-require-effective-target arm_neon_ok } */
535+/* { dg-options "-O2" } */
536+/* { dg-add-options arm_neon } */
537+
538+#include <arm_neon.h>
539+
540+uint32x4_t out_uint32x4_t;
541+void test_vdupq_nu32 (void)
542+{
543+ out_uint32x4_t = vdupq_n_u32 (~0x120000);
544+}
545+
546+/* { dg-final { scan-assembler "vmov\.i32\[ \]+\[qQ\]\[0-9\]+, #4293787647\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
547+/* { dg-final { cleanup-saved-temps } } */
548
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99352.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99352.patch
new file mode 100644
index 000000000..8d48ada2f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99352.patch
@@ -0,0 +1,118 @@
12010-07-26 Julian Brown <julian@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2010-04-07 Thomas Schwinge <thomas@codesourcery.com>
6 Daniel Jacobowitz <dan@codesourcery.com>
7
8 Issue #6715
9
10 PR debug/40521
11
12 gcc/
13 * dwarf2out.c (NEED_UNWIND_TABLES): Define.
14 (dwarf2out_do_frame, dwarf2out_do_cfi_asm, dwarf2out_begin_prologue)
15 (dwarf2out_frame_finish, dwarf2out_assembly_start): Use it.
16 (dwarf2out_assembly_start): Correct logic for TARGET_UNWIND_INFO.
17 * config/arm/arm.h (DWARF2_UNWIND_INFO): Remove definition.
18 * config/arm/bpabi.h (DWARF2_UNWIND_INFO): Define to zero.
19
20
21=== modified file 'gcc/config/arm/arm.h'
22--- old/gcc/config/arm/arm.h 2010-08-13 10:30:35 +0000
23+++ new/gcc/config/arm/arm.h 2010-08-13 11:11:15 +0000
24@@ -932,9 +932,6 @@
25 #define MUST_USE_SJLJ_EXCEPTIONS 1
26 #endif
27
28-/* We can generate DWARF2 Unwind info, even though we don't use it. */
29-#define DWARF2_UNWIND_INFO 1
30-
31 /* Use r0 and r1 to pass exception handling information. */
32 #define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? N : INVALID_REGNUM)
33
34
35=== modified file 'gcc/config/arm/bpabi.h'
36--- old/gcc/config/arm/bpabi.h 2009-11-20 17:37:30 +0000
37+++ new/gcc/config/arm/bpabi.h 2010-08-13 11:11:15 +0000
38@@ -26,6 +26,7 @@
39 #define TARGET_BPABI (TARGET_AAPCS_BASED)
40
41 /* BPABI targets use EABI frame unwinding tables. */
42+#define DWARF2_UNWIND_INFO 0
43 #define TARGET_UNWIND_INFO 1
44
45 /* Section 4.1 of the AAPCS requires the use of VFP format. */
46
47=== modified file 'gcc/dwarf2out.c'
48--- old/gcc/dwarf2out.c 2010-07-01 11:31:19 +0000
49+++ new/gcc/dwarf2out.c 2010-08-13 11:11:15 +0000
50@@ -124,6 +124,9 @@
51 # endif
52 #endif
53
54+#define NEED_UNWIND_TABLES \
55+ (flag_unwind_tables || (flag_exceptions && ! USING_SJLJ_EXCEPTIONS))
56+
57 /* Map register numbers held in the call frame info that gcc has
58 collected using DWARF_FRAME_REGNUM to those that should be output in
59 .debug_frame and .eh_frame. */
60@@ -147,9 +150,7 @@
61 || write_symbols == VMS_AND_DWARF2_DEBUG
62 || DWARF2_FRAME_INFO || saved_do_cfi_asm
63 #ifdef DWARF2_UNWIND_INFO
64- || (DWARF2_UNWIND_INFO
65- && (flag_unwind_tables
66- || (flag_exceptions && ! USING_SJLJ_EXCEPTIONS)))
67+ || (DWARF2_UNWIND_INFO && NEED_UNWIND_TABLES)
68 #endif
69 );
70 }
71@@ -185,7 +186,7 @@
72 #ifdef TARGET_UNWIND_INFO
73 return false;
74 #else
75- if (USING_SJLJ_EXCEPTIONS || (!flag_unwind_tables && !flag_exceptions))
76+ if (!NEED_UNWIND_TABLES)
77 return false;
78 #endif
79 }
80@@ -3906,8 +3907,7 @@
81 /* ??? current_function_func_begin_label is also used by except.c
82 for call-site information. We must emit this label if it might
83 be used. */
84- if ((! flag_exceptions || USING_SJLJ_EXCEPTIONS)
85- && ! dwarf2out_do_frame ())
86+ if (! NEED_UNWIND_TABLES && ! dwarf2out_do_frame ())
87 return;
88 #else
89 if (! dwarf2out_do_frame ())
90@@ -4067,7 +4067,7 @@
91
92 #ifndef TARGET_UNWIND_INFO
93 /* Output another copy for the unwinder. */
94- if (! USING_SJLJ_EXCEPTIONS && (flag_unwind_tables || flag_exceptions))
95+ if (NEED_UNWIND_TABLES)
96 output_call_frame_info (1);
97 #endif
98 }
99@@ -20732,10 +20732,15 @@
100 {
101 if (HAVE_GAS_CFI_SECTIONS_DIRECTIVE && dwarf2out_do_cfi_asm ())
102 {
103-#ifndef TARGET_UNWIND_INFO
104- if (USING_SJLJ_EXCEPTIONS || (!flag_unwind_tables && !flag_exceptions))
105-#endif
106+#ifdef TARGET_UNWIND_INFO
107+ /* We're only ever interested in .debug_frame. */
108+ fprintf (asm_out_file, "\t.cfi_sections\t.debug_frame\n");
109+#else
110+ /* GAS defaults to emitting .eh_frame only, and .debug_frame is not
111+ wanted in case that the former one is present. */
112+ if (! NEED_UNWIND_TABLES)
113 fprintf (asm_out_file, "\t.cfi_sections\t.debug_frame\n");
114+#endif
115 }
116 }
117
118
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99353.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99353.patch
new file mode 100644
index 000000000..239251d2b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99353.patch
@@ -0,0 +1,298 @@
1 2010-04-08 Bernd Schmidt <bernds@codesourcery.com>
2
3 Issue #6952
4
5 gcc/
6 * ira-costs.c (record_reg_classes): Ignore alternatives that are
7 not enabled.
8 * config/arm/vfp.md (arm_movdi_vfp): Enable only when not tuning
9 for Cortex-A8.
10 (arm_movdi_vfp_cortexa8): New pattern.
11 * config/arm/neon.md (adddi3_neon, subdi3_neon, anddi3_neon,
12 iordi3_neon, xordi3_neon): Add alternatives to discourage Neon
13 instructions when tuning for Cortex-A8. Set attribute "alt_tune".
14 * config/arm/arm.md (define_attr "alt_tune", define_attr "enabled"):
15 New.
16
172010-07-26 Julian Brown <julian@codesourcery.com>
18
19 Merge from Sourcery G++ 4.4:
20
21 2010-04-07 Thomas Schwinge <thomas@codesourcery.com>
22 Daniel Jacobowitz <dan@codesourcery.com>
23
24
25=== modified file 'gcc/config/arm/arm.md'
26--- old/gcc/config/arm/arm.md 2010-08-13 10:30:35 +0000
27+++ new/gcc/config/arm/arm.md 2010-08-13 11:40:17 +0000
28@@ -432,6 +432,20 @@
29 (const_string "yes")
30 (const_string "no"))))
31
32+; Specifies which machine an alternative is tuned for. Used to compute
33+; attribute ENABLED.
34+(define_attr "alt_tune" "all,onlya8,nota8" (const_string "all"))
35+
36+(define_attr "enabled" ""
37+ (cond [(and (eq_attr "alt_tune" "onlya8")
38+ (not (eq_attr "tune" "cortexa8")))
39+ (const_int 0)
40+
41+ (and (eq_attr "alt_tune" "nota8")
42+ (eq_attr "tune" "cortexa8"))
43+ (const_int 0)]
44+ (const_int 1)))
45+
46 (include "arm-generic.md")
47 (include "arm926ejs.md")
48 (include "arm1020e.md")
49
50=== modified file 'gcc/config/arm/neon.md'
51--- old/gcc/config/arm/neon.md 2010-08-10 13:31:21 +0000
52+++ new/gcc/config/arm/neon.md 2010-08-13 11:40:17 +0000
53@@ -827,23 +827,25 @@
54 )
55
56 (define_insn "adddi3_neon"
57- [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r")
58- (plus:DI (match_operand:DI 1 "s_register_operand" "%w,0,0")
59- (match_operand:DI 2 "s_register_operand" "w,r,0")))
60+ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,?&r,?&r")
61+ (plus:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,0")
62+ (match_operand:DI 2 "s_register_operand" "w,w,r,0")))
63 (clobber (reg:CC CC_REGNUM))]
64 "TARGET_NEON"
65 {
66 switch (which_alternative)
67 {
68- case 0: return "vadd.i64\t%P0, %P1, %P2";
69- case 1: return "#";
70+ case 0: /* fall through */
71+ case 1: return "vadd.i64\t%P0, %P1, %P2";
72 case 2: return "#";
73+ case 3: return "#";
74 default: gcc_unreachable ();
75 }
76 }
77- [(set_attr "neon_type" "neon_int_1,*,*")
78- (set_attr "conds" "*,clob,clob")
79- (set_attr "length" "*,8,8")]
80+ [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")
81+ (set_attr "conds" "*,*,clob,clob")
82+ (set_attr "length" "*,*,8,8")
83+ (set_attr "alt_tune" "nota8,onlya8,*,*")]
84 )
85
86 (define_insn "*sub<mode>3_neon"
87@@ -861,24 +863,26 @@
88 )
89
90 (define_insn "subdi3_neon"
91- [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r,?&r")
92- (minus:DI (match_operand:DI 1 "s_register_operand" "w,0,r,0")
93- (match_operand:DI 2 "s_register_operand" "w,r,0,0")))
94+ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,?&r,?&r,?&r")
95+ (minus:DI (match_operand:DI 1 "s_register_operand" "w,w,0,r,0")
96+ (match_operand:DI 2 "s_register_operand" "w,w,r,0,0")))
97 (clobber (reg:CC CC_REGNUM))]
98 "TARGET_NEON"
99 {
100 switch (which_alternative)
101 {
102- case 0: return "vsub.i64\t%P0, %P1, %P2";
103- case 1: /* fall through */
104- case 2: /* fall through */
105- case 3: return "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2";
106+ case 0: /* fall through */
107+ case 1: return "vsub.i64\t%P0, %P1, %P2";
108+ case 2: /* fall through */
109+ case 3: /* fall through */
110+ case 4: return "subs\\t%Q0, %Q1, %Q2\;sbc\\t%R0, %R1, %R2";
111 default: gcc_unreachable ();
112 }
113 }
114- [(set_attr "neon_type" "neon_int_2,*,*,*")
115- (set_attr "conds" "*,clob,clob,clob")
116- (set_attr "length" "*,8,8,8")]
117+ [(set_attr "neon_type" "neon_int_2,neon_int_2,*,*,*")
118+ (set_attr "conds" "*,*,clob,clob,clob")
119+ (set_attr "length" "*,*,8,8,8")
120+ (set_attr "alt_tune" "nota8,onlya8,*,*,*")]
121 )
122
123 (define_insn "*mul<mode>3_neon"
124@@ -964,23 +968,26 @@
125 )
126
127 (define_insn "iordi3_neon"
128- [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r")
129- (ior:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r")
130- (match_operand:DI 2 "neon_logic_op2" "w,Dl,r,r")))]
131+ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,w,?w,?&r,?&r")
132+ (ior:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,0,0,r")
133+ (match_operand:DI 2 "neon_logic_op2" "w,w,Dl,Dl,r,r")))]
134 "TARGET_NEON"
135 {
136 switch (which_alternative)
137 {
138- case 0: return "vorr\t%P0, %P1, %P2";
139- case 1: return neon_output_logic_immediate ("vorr", &operands[2],
140+ case 0: /* fall through */
141+ case 1: return "vorr\t%P0, %P1, %P2";
142+ case 2: /* fall through */
143+ case 3: return neon_output_logic_immediate ("vorr", &operands[2],
144 DImode, 0, VALID_NEON_QREG_MODE (DImode));
145- case 2: return "#";
146- case 3: return "#";
147+ case 4: return "#";
148+ case 5: return "#";
149 default: gcc_unreachable ();
150 }
151 }
152- [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")
153- (set_attr "length" "*,*,8,8")]
154+ [(set_attr "neon_type" "neon_int_1,neon_int_1,neon_int_1,neon_int_1,*,*")
155+ (set_attr "length" "*,*,*,*,8,8")
156+ (set_attr "alt_tune" "nota8,onlya8,nota8,onlya8,*,*")]
157 )
158
159 ;; The concrete forms of the Neon immediate-logic instructions are vbic and
160@@ -1006,23 +1013,26 @@
161 )
162
163 (define_insn "anddi3_neon"
164- [(set (match_operand:DI 0 "s_register_operand" "=w,w,?&r,?&r")
165- (and:DI (match_operand:DI 1 "s_register_operand" "%w,0,0,r")
166- (match_operand:DI 2 "neon_inv_logic_op2" "w,DL,r,r")))]
167+ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,w,?w,?&r,?&r")
168+ (and:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,0,0,r")
169+ (match_operand:DI 2 "neon_inv_logic_op2" "w,w,DL,DL,r,r")))]
170 "TARGET_NEON"
171 {
172 switch (which_alternative)
173 {
174- case 0: return "vand\t%P0, %P1, %P2";
175- case 1: return neon_output_logic_immediate ("vand", &operands[2],
176+ case 0: /* fall through */
177+ case 1: return "vand\t%P0, %P1, %P2";
178+ case 2: /* fall through */
179+ case 3: return neon_output_logic_immediate ("vand", &operands[2],
180 DImode, 1, VALID_NEON_QREG_MODE (DImode));
181- case 2: return "#";
182- case 3: return "#";
183+ case 4: return "#";
184+ case 5: return "#";
185 default: gcc_unreachable ();
186 }
187 }
188- [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")
189- (set_attr "length" "*,*,8,8")]
190+ [(set_attr "neon_type" "neon_int_1,neon_int_1,neon_int_1,neon_int_1,*,*")
191+ (set_attr "length" "*,*,*,*,8,8")
192+ (set_attr "alt_tune" "nota8,onlya8,nota8,onlya8,*,*")]
193 )
194
195 (define_insn "orn<mode>3_neon"
196@@ -1080,16 +1090,18 @@
197 )
198
199 (define_insn "xordi3_neon"
200- [(set (match_operand:DI 0 "s_register_operand" "=w,?&r,?&r")
201- (xor:DI (match_operand:DI 1 "s_register_operand" "%w,0,r")
202- (match_operand:DI 2 "s_register_operand" "w,r,r")))]
203+ [(set (match_operand:DI 0 "s_register_operand" "=w,?w,?&r,?&r")
204+ (xor:DI (match_operand:DI 1 "s_register_operand" "%w,w,0,r")
205+ (match_operand:DI 2 "s_register_operand" "w,w,r,r")))]
206 "TARGET_NEON"
207 "@
208 veor\t%P0, %P1, %P2
209+ veor\t%P0, %P1, %P2
210 #
211 #"
212- [(set_attr "neon_type" "neon_int_1,*,*")
213- (set_attr "length" "*,8,8")]
214+ [(set_attr "neon_type" "neon_int_1,neon_int_1,*,*")
215+ (set_attr "length" "*,*,8,8")
216+ (set_attr "alt_tune" "nota8,onlya8,*,*")]
217 )
218
219 (define_insn "one_cmpl<mode>2"
220
221=== modified file 'gcc/config/arm/vfp.md'
222--- old/gcc/config/arm/vfp.md 2010-08-13 10:59:06 +0000
223+++ new/gcc/config/arm/vfp.md 2010-08-13 11:40:17 +0000
224@@ -133,9 +133,51 @@
225 ;; DImode moves
226
227 (define_insn "*arm_movdi_vfp"
228- [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,r,w,w, Uv")
229- (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))]
230- "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP
231+ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, m,w,r,w,w, Uv")
232+ (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))]
233+ "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune != cortexa8
234+ && ( register_operand (operands[0], DImode)
235+ || register_operand (operands[1], DImode))"
236+ "*
237+ switch (which_alternative)
238+ {
239+ case 0:
240+ return \"#\";
241+ case 1:
242+ case 2:
243+ return output_move_double (operands);
244+ case 3:
245+ return \"fmdrr%?\\t%P0, %Q1, %R1\\t%@ int\";
246+ case 4:
247+ return \"fmrrd%?\\t%Q0, %R0, %P1\\t%@ int\";
248+ case 5:
249+ if (TARGET_VFP_SINGLE)
250+ return \"fcpys%?\\t%0, %1\\t%@ int\;fcpys%?\\t%p0, %p1\\t%@ int\";
251+ else
252+ return \"fcpyd%?\\t%P0, %P1\\t%@ int\";
253+ case 6: case 7:
254+ return output_move_vfp (operands);
255+ default:
256+ gcc_unreachable ();
257+ }
258+ "
259+ [(set_attr "type" "*,load2,store2,r_2_f,f_2_r,ffarithd,f_loadd,f_stored")
260+ (set_attr "neon_type" "*,*,*,neon_mcr_2_mcrr,neon_mrrc,neon_vmov,*,*")
261+ (set (attr "length") (cond [(eq_attr "alternative" "0,1,2") (const_int 8)
262+ (eq_attr "alternative" "5")
263+ (if_then_else
264+ (eq (symbol_ref "TARGET_VFP_SINGLE") (const_int 1))
265+ (const_int 8)
266+ (const_int 4))]
267+ (const_int 4)))
268+ (set_attr "pool_range" "*,1020,*,*,*,*,1020,*")
269+ (set_attr "neg_pool_range" "*,1008,*,*,*,*,1008,*")]
270+)
271+
272+(define_insn "*arm_movdi_vfp_cortexa8"
273+ [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r,m,w,!r,w,w, Uv")
274+ (match_operand:DI 1 "di_operand" "rIK,mi,r,r,w,w,Uvi,w"))]
275+ "TARGET_ARM && TARGET_HARD_FLOAT && TARGET_VFP && arm_tune == cortexa8
276 && ( register_operand (operands[0], DImode)
277 || register_operand (operands[1], DImode))"
278 "*
279
280=== modified file 'gcc/ira-costs.c'
281--- old/gcc/ira-costs.c 2009-11-25 10:55:54 +0000
282+++ new/gcc/ira-costs.c 2010-08-13 11:40:17 +0000
283@@ -224,6 +224,14 @@
284 int alt_fail = 0;
285 int alt_cost = 0, op_cost_add;
286
287+ if (!recog_data.alternative_enabled_p[alt])
288+ {
289+ for (i = 0; i < recog_data.n_operands; i++)
290+ constraints[i] = skip_alternative (constraints[i]);
291+
292+ continue;
293+ }
294+
295 for (i = 0; i < n_ops; i++)
296 {
297 unsigned char c;
298
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99354.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99354.patch
new file mode 100644
index 000000000..743e2751c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99354.patch
@@ -0,0 +1,384 @@
1 Richard Earnshaw <rearnsha@arm.com>
2
3 gcc/
4 * doc/tm.texi (OVERLAPPING_REGISTER_NAMES): Document new macro.
5 * output.h (decode_reg_name_and_count): Declare.
6 * varasm.c (decode_reg_name_and_count): New function.
7 (decode_reg_name): Reimplement using decode_reg_name_and_count.
8 * reginfo.c (fix_register): Use decode_reg_name_and_count and
9 iterate over all regs used.
10 * stmt.c (expand_asm_operands): Likewise.
11 * config/arm/aout.h (OVERLAPPING_REGISTER_NAMES): Define.
12 (ADDITIONAL_REGISTER_NAMES): Remove aliases that overlap
13 multiple machine registers.
14
152010-07-26 Julian Brown <julian@codesourcery.com>
16
17 Merge from Sourcery G++ 4.4:
18
19 2010-04-08 Bernd Schmidt <bernds@codesourcery.com>
20
21 Issue #6952
22
23=== modified file 'gcc/config/arm/aout.h'
24--- old/gcc/config/arm/aout.h 2009-06-21 19:48:15 +0000
25+++ new/gcc/config/arm/aout.h 2010-08-13 11:53:46 +0000
26@@ -163,31 +163,45 @@
27 {"mvdx12", 39}, \
28 {"mvdx13", 40}, \
29 {"mvdx14", 41}, \
30- {"mvdx15", 42}, \
31- {"d0", 63}, {"q0", 63}, \
32- {"d1", 65}, \
33- {"d2", 67}, {"q1", 67}, \
34- {"d3", 69}, \
35- {"d4", 71}, {"q2", 71}, \
36- {"d5", 73}, \
37- {"d6", 75}, {"q3", 75}, \
38- {"d7", 77}, \
39- {"d8", 79}, {"q4", 79}, \
40- {"d9", 81}, \
41- {"d10", 83}, {"q5", 83}, \
42- {"d11", 85}, \
43- {"d12", 87}, {"q6", 87}, \
44- {"d13", 89}, \
45- {"d14", 91}, {"q7", 91}, \
46- {"d15", 93}, \
47- {"q8", 95}, \
48- {"q9", 99}, \
49- {"q10", 103}, \
50- {"q11", 107}, \
51- {"q12", 111}, \
52- {"q13", 115}, \
53- {"q14", 119}, \
54- {"q15", 123} \
55+ {"mvdx15", 42} \
56+}
57+#endif
58+
59+#ifndef OVERLAPPING_REGISTER_NAMES
60+#define OVERLAPPING_REGISTER_NAMES \
61+{ \
62+ {"d0", 63, 2}, \
63+ {"d1", 65, 2}, \
64+ {"d2", 67, 2}, \
65+ {"d3", 69, 2}, \
66+ {"d4", 71, 2}, \
67+ {"d5", 73, 2}, \
68+ {"d6", 75, 2}, \
69+ {"d7", 77, 2}, \
70+ {"d8", 79, 2}, \
71+ {"d9", 81, 2}, \
72+ {"d10", 83, 2}, \
73+ {"d11", 85, 2}, \
74+ {"d12", 87, 2}, \
75+ {"d13", 89, 2}, \
76+ {"d14", 91, 2}, \
77+ {"d15", 93, 2}, \
78+ {"q0", 63, 4}, \
79+ {"q1", 67, 4}, \
80+ {"q2", 71, 4}, \
81+ {"q3", 75, 4}, \
82+ {"q4", 79, 4}, \
83+ {"q5", 83, 4}, \
84+ {"q6", 87, 4}, \
85+ {"q7", 91, 4}, \
86+ {"q8", 95, 4}, \
87+ {"q9", 99, 4}, \
88+ {"q10", 103, 4}, \
89+ {"q11", 107, 4}, \
90+ {"q12", 111, 4}, \
91+ {"q13", 115, 4}, \
92+ {"q14", 119, 4}, \
93+ {"q15", 123, 4} \
94 }
95 #endif
96
97
98=== modified file 'gcc/doc/tm.texi'
99--- old/gcc/doc/tm.texi 2010-06-24 20:06:37 +0000
100+++ new/gcc/doc/tm.texi 2010-08-13 11:53:46 +0000
101@@ -8339,6 +8339,22 @@
102 to registers using alternate names.
103 @end defmac
104
105+@defmac OVERLAPPING_REGISTER_NAMES
106+If defined, a C initializer for an array of structures containing a
107+name, a register number and a count of the number of consecutive
108+machine registers the name overlaps. This macro defines additional
109+names for hard registers, thus allowing the @code{asm} option in
110+declarations to refer to registers using alternate names. Unlike
111+@code{ADDITIONAL_REGISTER_NAMES}, this macro should be used when the
112+register name implies multiple underlying registers.
113+
114+This macro should be used when it is important that a clobber in an
115+@code{asm} statement clobbers all the underlying values implied by the
116+register name. For example, on ARM, clobbering the double-precision
117+VFP register ``d0'' implies clobbering both single-precision registers
118+``s0'' and ``s1''.
119+@end defmac
120+
121 @defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
122 Define this macro if you are using an unusual assembler that
123 requires different names for the machine instructions.
124
125=== modified file 'gcc/output.h'
126--- old/gcc/output.h 2009-10-26 21:57:10 +0000
127+++ new/gcc/output.h 2010-08-13 11:53:46 +0000
128@@ -173,6 +173,11 @@
129 Prefixes such as % are optional. */
130 extern int decode_reg_name (const char *);
131
132+/* Similar to decode_reg_name, but takes an extra parameter that is a
133+ pointer to the number of (internal) registers described by the
134+ external name. */
135+extern int decode_reg_name_and_count (const char *, int *);
136+
137 extern void assemble_alias (tree, tree);
138
139 extern void default_assemble_visibility (tree, int);
140
141=== modified file 'gcc/reginfo.c'
142--- old/gcc/reginfo.c 2010-04-19 09:04:43 +0000
143+++ new/gcc/reginfo.c 2010-08-13 11:53:46 +0000
144@@ -799,36 +799,41 @@
145 fix_register (const char *name, int fixed, int call_used)
146 {
147 int i;
148+ int reg, nregs;
149
150 /* Decode the name and update the primary form of
151 the register info. */
152
153- if ((i = decode_reg_name (name)) >= 0)
154+ if ((reg = decode_reg_name_and_count (name, &nregs)) >= 0)
155 {
156- if ((i == STACK_POINTER_REGNUM
157+ gcc_assert (nregs >= 1);
158+ for (i = reg; i < reg + nregs; i++)
159+ {
160+ if ((i == STACK_POINTER_REGNUM
161 #ifdef HARD_FRAME_POINTER_REGNUM
162- || i == HARD_FRAME_POINTER_REGNUM
163+ || i == HARD_FRAME_POINTER_REGNUM
164 #else
165- || i == FRAME_POINTER_REGNUM
166+ || i == FRAME_POINTER_REGNUM
167 #endif
168- )
169- && (fixed == 0 || call_used == 0))
170- {
171- static const char * const what_option[2][2] = {
172- { "call-saved", "call-used" },
173- { "no-such-option", "fixed" }};
174+ )
175+ && (fixed == 0 || call_used == 0))
176+ {
177+ static const char * const what_option[2][2] = {
178+ { "call-saved", "call-used" },
179+ { "no-such-option", "fixed" }};
180
181- error ("can't use '%s' as a %s register", name,
182- what_option[fixed][call_used]);
183- }
184- else
185- {
186- fixed_regs[i] = fixed;
187- call_used_regs[i] = call_used;
188+ error ("can't use '%s' as a %s register", name,
189+ what_option[fixed][call_used]);
190+ }
191+ else
192+ {
193+ fixed_regs[i] = fixed;
194+ call_used_regs[i] = call_used;
195 #ifdef CALL_REALLY_USED_REGISTERS
196- if (fixed == 0)
197- call_really_used_regs[i] = call_used;
198+ if (fixed == 0)
199+ call_really_used_regs[i] = call_used;
200 #endif
201+ }
202 }
203 }
204 else
205
206=== modified file 'gcc/stmt.c'
207--- old/gcc/stmt.c 2010-02-19 09:53:51 +0000
208+++ new/gcc/stmt.c 2010-08-13 11:53:46 +0000
209@@ -684,13 +684,14 @@
210 for (tail = clobbers; tail; tail = TREE_CHAIN (tail))
211 {
212 const char *regname;
213+ int nregs;
214
215 if (TREE_VALUE (tail) == error_mark_node)
216 return;
217 regname = TREE_STRING_POINTER (TREE_VALUE (tail));
218
219- i = decode_reg_name (regname);
220- if (i >= 0 || i == -4)
221+ i = decode_reg_name_and_count (regname, &nregs);
222+ if (i == -4)
223 ++nclobbers;
224 else if (i == -2)
225 error ("unknown register name %qs in %<asm%>", regname);
226@@ -698,14 +699,21 @@
227 /* Mark clobbered registers. */
228 if (i >= 0)
229 {
230- /* Clobbering the PIC register is an error. */
231- if (i == (int) PIC_OFFSET_TABLE_REGNUM)
232+ int reg;
233+
234+ for (reg = i; reg < i + nregs; reg++)
235 {
236- error ("PIC register %qs clobbered in %<asm%>", regname);
237- return;
238+ ++nclobbers;
239+
240+ /* Clobbering the PIC register is an error. */
241+ if (reg == (int) PIC_OFFSET_TABLE_REGNUM)
242+ {
243+ error ("PIC register clobbered by %qs in %<asm%>", regname);
244+ return;
245+ }
246+
247+ SET_HARD_REG_BIT (clobbered_regs, reg);
248 }
249-
250- SET_HARD_REG_BIT (clobbered_regs, i);
251 }
252 }
253
254@@ -1026,7 +1034,8 @@
255 for (tail = clobbers; tail; tail = TREE_CHAIN (tail))
256 {
257 const char *regname = TREE_STRING_POINTER (TREE_VALUE (tail));
258- int j = decode_reg_name (regname);
259+ int reg, nregs;
260+ int j = decode_reg_name_and_count (regname, &nregs);
261 rtx clobbered_reg;
262
263 if (j < 0)
264@@ -1048,30 +1057,39 @@
265 continue;
266 }
267
268- /* Use QImode since that's guaranteed to clobber just one reg. */
269- clobbered_reg = gen_rtx_REG (QImode, j);
270-
271- /* Do sanity check for overlap between clobbers and respectively
272- input and outputs that hasn't been handled. Such overlap
273- should have been detected and reported above. */
274- if (!clobber_conflict_found)
275+ for (reg = j; reg < j + nregs; reg++)
276 {
277- int opno;
278-
279- /* We test the old body (obody) contents to avoid tripping
280- over the under-construction body. */
281- for (opno = 0; opno < noutputs; opno++)
282- if (reg_overlap_mentioned_p (clobbered_reg, output_rtx[opno]))
283- internal_error ("asm clobber conflict with output operand");
284-
285- for (opno = 0; opno < ninputs - ninout; opno++)
286- if (reg_overlap_mentioned_p (clobbered_reg,
287- ASM_OPERANDS_INPUT (obody, opno)))
288- internal_error ("asm clobber conflict with input operand");
289+ /* Use QImode since that's guaranteed to clobber just
290+ * one reg. */
291+ clobbered_reg = gen_rtx_REG (QImode, reg);
292+
293+ /* Do sanity check for overlap between clobbers and
294+ respectively input and outputs that hasn't been
295+ handled. Such overlap should have been detected and
296+ reported above. */
297+ if (!clobber_conflict_found)
298+ {
299+ int opno;
300+
301+ /* We test the old body (obody) contents to avoid
302+ tripping over the under-construction body. */
303+ for (opno = 0; opno < noutputs; opno++)
304+ if (reg_overlap_mentioned_p (clobbered_reg,
305+ output_rtx[opno]))
306+ internal_error
307+ ("asm clobber conflict with output operand");
308+
309+ for (opno = 0; opno < ninputs - ninout; opno++)
310+ if (reg_overlap_mentioned_p (clobbered_reg,
311+ ASM_OPERANDS_INPUT (obody,
312+ opno)))
313+ internal_error
314+ ("asm clobber conflict with input operand");
315+ }
316+
317+ XVECEXP (body, 0, i++)
318+ = gen_rtx_CLOBBER (VOIDmode, clobbered_reg);
319 }
320-
321- XVECEXP (body, 0, i++)
322- = gen_rtx_CLOBBER (VOIDmode, clobbered_reg);
323 }
324
325 if (nlabels > 0)
326
327=== modified file 'gcc/varasm.c'
328--- old/gcc/varasm.c 2010-03-27 11:56:30 +0000
329+++ new/gcc/varasm.c 2010-08-13 11:53:46 +0000
330@@ -1043,8 +1043,11 @@
331 Prefixes such as % are optional. */
332
333 int
334-decode_reg_name (const char *asmspec)
335+decode_reg_name_and_count (const char *asmspec, int *pnregs)
336 {
337+ /* Presume just one register is clobbered. */
338+ *pnregs = 1;
339+
340 if (asmspec != 0)
341 {
342 int i;
343@@ -1070,6 +1073,25 @@
344 && ! strcmp (asmspec, strip_reg_name (reg_names[i])))
345 return i;
346
347+#ifdef OVERLAPPING_REGISTER_NAMES
348+ {
349+ static const struct
350+ {
351+ const char *const name;
352+ const int number;
353+ const int nregs;
354+ } table[] = OVERLAPPING_REGISTER_NAMES;
355+
356+ for (i = 0; i < (int) ARRAY_SIZE (table); i++)
357+ if (table[i].name[0]
358+ && ! strcmp (asmspec, table[i].name))
359+ {
360+ *pnregs = table[i].nregs;
361+ return table[i].number;
362+ }
363+ }
364+#endif /* OVERLAPPING_REGISTER_NAMES */
365+
366 #ifdef ADDITIONAL_REGISTER_NAMES
367 {
368 static const struct { const char *const name; const int number; } table[]
369@@ -1093,6 +1115,14 @@
370
371 return -1;
372 }
373+
374+int
375+decode_reg_name (const char *name)
376+{
377+ int count;
378+ return decode_reg_name_and_count (name, &count);
379+}
380+
381
382 /* Return true if DECL's initializer is suitable for a BSS section. */
383
384
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99355.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99355.patch
new file mode 100644
index 000000000..b47c2ceb4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99355.patch
@@ -0,0 +1,181 @@
1 2010-04-12 Andrew Stubbs <ams@codesourcery.com>
2
3 Issue #7178
4
5 gcc/
6 * config/arm/arm.c (arm_init_libfuncs): Change __gnu_f2h_ieee to
7 __aeabi_f2h, __gnu_f2h_alternative to __aeabi_f2h_alt, __gnu_h2f_ieee
8 to __aeabi_h2f, and __gnu_h2f_alternative to __aeabi_h2f_alt.
9 * config/arm/fp16.c (__gnu_f2h_internal): Change return type to
10 unsigned int. Change 'sign' variable likewise.
11 (__gnu_h2f_internal): Set to static inline.
12 Change return type to unsigned int. Change 'sign' variable likewise.
13 (ALIAS): New define.
14 (__gnu_f2h_ieee): Change unsigned short to unsigned int.
15 (__gnu_h2f_ieee): Likewise.
16 (__gnu_f2h_alternative): Likewise.
17 (__gnu_h2f_alternative): Likewise.
18 (__aeabi_f2h, __aeabi_h2f): New aliases.
19 (__aeabi_f2h_alt, __aeabi_h2f_alt): Likewise.
20 * config/arm/sfp-machine.h (__extendhfsf2): Set to __aeabi_h2f.
21 (__truncsfhf2): Set to __aeabi_f2h.
22
23 gcc/testsuite/
24 * g++.dg/ext/arm-fp16/arm-fp16-ops-5.C: Check for __aeabi_h2f
25 and __aeabi_f2h.
26 * g++.dg/ext/arm-fp16/arm-fp16-ops-6.C: Likewise.
27 * gcc.dg/torture/arm-fp16-ops-5.c: Likewise.
28 * gcc.dg/torture/arm-fp16-ops-6.c: Likewise.
29
302010-07-26 Julian Brown <julian@codesourcery.com>
31
32 Merge from Sourcery G++ 4.4:
33
34 Richard Earnshaw <rearnsha@arm.com>
35
36 gcc/
37
38=== modified file 'gcc/config/arm/arm.c'
39--- old/gcc/config/arm/arm.c 2010-08-13 11:02:47 +0000
40+++ new/gcc/config/arm/arm.c 2010-08-13 14:08:20 +0000
41@@ -1054,12 +1054,12 @@
42 /* Conversions. */
43 set_conv_libfunc (trunc_optab, HFmode, SFmode,
44 (arm_fp16_format == ARM_FP16_FORMAT_IEEE
45- ? "__gnu_f2h_ieee"
46- : "__gnu_f2h_alternative"));
47+ ? "__aeabi_f2h"
48+ : "__aeabi_f2h_alt"));
49 set_conv_libfunc (sext_optab, SFmode, HFmode,
50 (arm_fp16_format == ARM_FP16_FORMAT_IEEE
51- ? "__gnu_h2f_ieee"
52- : "__gnu_h2f_alternative"));
53+ ? "__aeabi_h2f"
54+ : "__aeabi_h2f_alt"));
55
56 /* Arithmetic. */
57 set_optab_libfunc (add_optab, HFmode, NULL);
58
59=== modified file 'gcc/config/arm/fp16.c'
60--- old/gcc/config/arm/fp16.c 2009-06-18 11:26:37 +0000
61+++ new/gcc/config/arm/fp16.c 2010-08-13 14:08:20 +0000
62@@ -22,10 +22,10 @@
63 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
64 <http://www.gnu.org/licenses/>. */
65
66-static inline unsigned short
67+static inline unsigned int
68 __gnu_f2h_internal(unsigned int a, int ieee)
69 {
70- unsigned short sign = (a >> 16) & 0x8000;
71+ unsigned int sign = (a >> 16) & 0x8000;
72 int aexp = (a >> 23) & 0xff;
73 unsigned int mantissa = a & 0x007fffff;
74 unsigned int mask;
75@@ -95,10 +95,10 @@
76 return sign | (((aexp + 14) << 10) + (mantissa >> 13));
77 }
78
79-unsigned int
80-__gnu_h2f_internal(unsigned short a, int ieee)
81+static inline unsigned int
82+__gnu_h2f_internal(unsigned int a, int ieee)
83 {
84- unsigned int sign = (unsigned int)(a & 0x8000) << 16;
85+ unsigned int sign = (a & 0x00008000) << 16;
86 int aexp = (a >> 10) & 0x1f;
87 unsigned int mantissa = a & 0x3ff;
88
89@@ -120,26 +120,33 @@
90 return sign | (((aexp + 0x70) << 23) + (mantissa << 13));
91 }
92
93-unsigned short
94+#define ALIAS(src, dst) \
95+ typeof (src) dst __attribute__ ((alias (#src)));
96+
97+unsigned int
98 __gnu_f2h_ieee(unsigned int a)
99 {
100 return __gnu_f2h_internal(a, 1);
101 }
102+ALIAS (__gnu_f2h_ieee, __aeabi_f2h)
103
104 unsigned int
105-__gnu_h2f_ieee(unsigned short a)
106+__gnu_h2f_ieee(unsigned int a)
107 {
108 return __gnu_h2f_internal(a, 1);
109 }
110+ALIAS (__gnu_h2f_ieee, __aeabi_h2f)
111
112-unsigned short
113+unsigned int
114 __gnu_f2h_alternative(unsigned int x)
115 {
116 return __gnu_f2h_internal(x, 0);
117 }
118+ALIAS (__gnu_f2h_alternative, __aeabi_f2h_alt)
119
120 unsigned int
121-__gnu_h2f_alternative(unsigned short a)
122+__gnu_h2f_alternative(unsigned int a)
123 {
124 return __gnu_h2f_internal(a, 0);
125 }
126+ALIAS (__gnu_h2f_alternative, __aeabi_h2f_alt)
127
128=== modified file 'gcc/config/arm/sfp-machine.h'
129--- old/gcc/config/arm/sfp-machine.h 2009-06-18 11:26:37 +0000
130+++ new/gcc/config/arm/sfp-machine.h 2010-08-13 14:08:20 +0000
131@@ -99,7 +99,7 @@
132 #define __fixdfdi __aeabi_d2lz
133 #define __fixunsdfdi __aeabi_d2ulz
134 #define __floatdidf __aeabi_l2d
135-#define __extendhfsf2 __gnu_h2f_ieee
136-#define __truncsfhf2 __gnu_f2h_ieee
137+#define __extendhfsf2 __aeabi_h2f
138+#define __truncsfhf2 __aeabi_f2h
139
140 #endif /* __ARM_EABI__ */
141
142=== modified file 'gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C'
143--- old/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C 2010-07-29 15:38:15 +0000
144+++ new/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-5.C 2010-08-13 14:08:20 +0000
145@@ -13,3 +13,5 @@
146 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
147 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
148 /* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
149+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_h2f" } } */
150+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_f2h" } } */
151
152=== modified file 'gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C'
153--- old/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C 2010-07-29 15:38:15 +0000
154+++ new/gcc/testsuite/g++.dg/ext/arm-fp16/arm-fp16-ops-6.C 2010-08-13 14:08:20 +0000
155@@ -13,3 +13,5 @@
156 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
157 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
158 /* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
159+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_h2f" } } */
160+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_f2h" } } */
161
162=== modified file 'gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c'
163--- old/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c 2010-07-29 15:38:15 +0000
164+++ new/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-5.c 2010-08-13 14:08:20 +0000
165@@ -13,3 +13,5 @@
166 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
167 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
168 /* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
169+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_h2f" } } */
170+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_f2h" } } */
171
172=== modified file 'gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c'
173--- old/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c 2010-07-29 15:38:15 +0000
174+++ new/gcc/testsuite/gcc.dg/torture/arm-fp16-ops-6.c 2010-08-13 14:08:20 +0000
175@@ -13,3 +13,5 @@
176 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h\[a-z\]*_ieee" } } */
177 /* { dg-final { scan-assembler-not "\tbl\t__gnu_h2f_ieee" } } */
178 /* { dg-final { scan-assembler-not "\tbl\t__gnu_f2h_ieee" } } */
179+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_h2f" } } */
180+/* { dg-final { scan-assembler-not "\tbl\t__aeabi_f2h" } } */
181
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99356.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99356.patch
new file mode 100644
index 000000000..64efbc759
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99356.patch
@@ -0,0 +1,376 @@
1
2 2010-04-11 Julian Brown <julian@codesourcery.com>
3
4 Issue #7326
5
6 gcc/
7 * config/arm/arm.c (arm_issue_rate): Return 2 for Cortex-A5.
8 * config/arm/arm.md (generic_sched): No for Cortex-A5.
9 (generic_vfp): Likewise.
10 (cortex-a5.md): Include.
11 * config/arm/cortex-a5.md: New.
12
132010-07-26 Julian Brown <julian@codesourcery.com>
14
15 Merge from Sourcery G++ 4.4:
16
17 2010-04-12 Andrew Stubbs <ams@codesourcery.com>
18
19
20=== modified file 'gcc/config/arm/arm.c'
21--- old/gcc/config/arm/arm.c 2010-08-13 14:08:20 +0000
22+++ new/gcc/config/arm/arm.c 2010-08-13 15:15:12 +0000
23@@ -22262,6 +22262,7 @@
24 {
25 case cortexr4:
26 case cortexr4f:
27+ case cortexa5:
28 case cortexa8:
29 case cortexa9:
30 return 2;
31
32=== modified file 'gcc/config/arm/arm.md'
33--- old/gcc/config/arm/arm.md 2010-08-13 11:40:17 +0000
34+++ new/gcc/config/arm/arm.md 2010-08-13 15:15:12 +0000
35@@ -419,7 +419,7 @@
36
37 (define_attr "generic_sched" "yes,no"
38 (const (if_then_else
39- (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa8,cortexa9")
40+ (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9")
41 (eq_attr "tune_cortexr4" "yes"))
42 (const_string "no")
43 (const_string "yes"))))
44@@ -427,7 +427,7 @@
45 (define_attr "generic_vfp" "yes,no"
46 (const (if_then_else
47 (and (eq_attr "fpu" "vfp")
48- (eq_attr "tune" "!arm1020e,arm1022e,cortexa8,cortexa9")
49+ (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa8,cortexa9")
50 (eq_attr "tune_cortexr4" "no"))
51 (const_string "yes")
52 (const_string "no"))))
53@@ -451,6 +451,7 @@
54 (include "arm1020e.md")
55 (include "arm1026ejs.md")
56 (include "arm1136jfs.md")
57+(include "cortex-a5.md")
58 (include "cortex-a8.md")
59 (include "cortex-a9.md")
60 (include "cortex-r4.md")
61
62=== added file 'gcc/config/arm/cortex-a5.md'
63--- old/gcc/config/arm/cortex-a5.md 1970-01-01 00:00:00 +0000
64+++ new/gcc/config/arm/cortex-a5.md 2010-08-13 15:15:12 +0000
65@@ -0,0 +1,310 @@
66+;; ARM Cortex-A5 pipeline description
67+;; Copyright (C) 2010 Free Software Foundation, Inc.
68+;; Contributed by CodeSourcery.
69+;;
70+;; This file is part of GCC.
71+;;
72+;; GCC is free software; you can redistribute it and/or modify it
73+;; under the terms of the GNU General Public License as published by
74+;; the Free Software Foundation; either version 3, or (at your option)
75+;; any later version.
76+;;
77+;; GCC is distributed in the hope that it will be useful, but
78+;; WITHOUT ANY WARRANTY; without even the implied warranty of
79+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
80+;; General Public License for more details.
81+;;
82+;; You should have received a copy of the GNU General Public License
83+;; along with GCC; see the file COPYING3. If not see
84+;; <http://www.gnu.org/licenses/>.
85+
86+(define_automaton "cortex_a5")
87+
88+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89+;; Functional units.
90+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
91+
92+;; The integer (ALU) pipeline. There are five DPU pipeline stages. However the
93+;; decode/issue stages operate the same for all instructions, so do not model
94+;; them. We only need to model the first execute stage because instructions
95+;; always advance one stage per cycle in order. Only branch instructions may
96+;; dual-issue, so a single unit covers all of the LS, ALU, MAC and FPU
97+;; pipelines.
98+
99+(define_cpu_unit "cortex_a5_ex1" "cortex_a5")
100+
101+;; The branch pipeline. Branches can dual-issue with other instructions
102+;; (except when those instructions take multiple cycles to issue).
103+
104+(define_cpu_unit "cortex_a5_branch" "cortex_a5")
105+
106+;; Pseudo-unit for blocking the multiply pipeline when a double-precision
107+;; multiply is in progress.
108+
109+(define_cpu_unit "cortex_a5_fpmul_pipe" "cortex_a5")
110+
111+;; The floating-point add pipeline (ex1/f1 stage), used to model the usage
112+;; of the add pipeline by fmac instructions, etc.
113+
114+(define_cpu_unit "cortex_a5_fpadd_pipe" "cortex_a5")
115+
116+;; Floating-point div/sqrt (long latency, out-of-order completion).
117+
118+(define_cpu_unit "cortex_a5_fp_div_sqrt" "cortex_a5")
119+
120+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
121+;; ALU instructions.
122+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
123+
124+(define_insn_reservation "cortex_a5_alu" 2
125+ (and (eq_attr "tune" "cortexa5")
126+ (eq_attr "type" "alu"))
127+ "cortex_a5_ex1")
128+
129+(define_insn_reservation "cortex_a5_alu_shift" 2
130+ (and (eq_attr "tune" "cortexa5")
131+ (eq_attr "type" "alu_shift,alu_shift_reg"))
132+ "cortex_a5_ex1")
133+
134+;; Forwarding path for unshifted operands.
135+
136+(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift"
137+ "cortex_a5_alu")
138+
139+(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift"
140+ "cortex_a5_alu_shift"
141+ "arm_no_early_alu_shift_dep")
142+
143+;; The multiplier pipeline can forward results from wr stage only (so I don't
144+;; think there's any need to specify bypasses).
145+
146+(define_insn_reservation "cortex_a5_mul" 2
147+ (and (eq_attr "tune" "cortexa5")
148+ (eq_attr "type" "mult"))
149+ "cortex_a5_ex1")
150+
151+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
152+;; Load/store instructions.
153+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
154+
155+;; Address-generation happens in the issue stage, which is one stage behind
156+;; the ex1 stage (the first stage we care about for scheduling purposes). The
157+;; dc1 stage is parallel with ex1, dc2 with ex2 and rot with wr.
158+
159+;; FIXME: These might not be entirely accurate for load2, load3, load4. I think
160+;; they make sense since there's a 32-bit interface between the DPU and the DCU,
161+;; so we can't load more than that per cycle. The store2, store3, store4
162+;; reservations are similarly guessed.
163+
164+(define_insn_reservation "cortex_a5_load1" 2
165+ (and (eq_attr "tune" "cortexa5")
166+ (eq_attr "type" "load_byte,load1"))
167+ "cortex_a5_ex1")
168+
169+(define_insn_reservation "cortex_a5_store1" 0
170+ (and (eq_attr "tune" "cortexa5")
171+ (eq_attr "type" "store1"))
172+ "cortex_a5_ex1")
173+
174+(define_insn_reservation "cortex_a5_load2" 3
175+ (and (eq_attr "tune" "cortexa5")
176+ (eq_attr "type" "load2"))
177+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
178+
179+(define_insn_reservation "cortex_a5_store2" 0
180+ (and (eq_attr "tune" "cortexa5")
181+ (eq_attr "type" "store2"))
182+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
183+
184+(define_insn_reservation "cortex_a5_load3" 4
185+ (and (eq_attr "tune" "cortexa5")
186+ (eq_attr "type" "load3"))
187+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
188+ cortex_a5_ex1")
189+
190+(define_insn_reservation "cortex_a5_store3" 0
191+ (and (eq_attr "tune" "cortexa5")
192+ (eq_attr "type" "store3"))
193+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
194+ cortex_a5_ex1")
195+
196+(define_insn_reservation "cortex_a5_load4" 5
197+ (and (eq_attr "tune" "cortexa5")
198+ (eq_attr "type" "load3"))
199+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
200+ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
201+
202+(define_insn_reservation "cortex_a5_store4" 0
203+ (and (eq_attr "tune" "cortexa5")
204+ (eq_attr "type" "store3"))
205+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
206+ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
207+
208+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
209+;; Branches.
210+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
211+
212+;; Direct branches are the only instructions we can dual-issue (also IT and
213+;; nop, but those aren't very interesting for scheduling). (The latency here
214+;; is meant to represent when the branch actually takes place, but may not be
215+;; entirely correct.)
216+
217+(define_insn_reservation "cortex_a5_branch" 3
218+ (and (eq_attr "tune" "cortexa5")
219+ (eq_attr "type" "branch,call"))
220+ "cortex_a5_branch")
221+
222+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
223+;; Floating-point arithmetic.
224+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
225+
226+(define_insn_reservation "cortex_a5_fpalu" 4
227+ (and (eq_attr "tune" "cortexa5")
228+ (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fcpys, fmuls, f_cvt,\
229+ fcmps, fcmpd"))
230+ "cortex_a5_ex1+cortex_a5_fpadd_pipe")
231+
232+;; For fconsts and fconstd, 8-bit immediate data is passed directly from
233+;; f1 to f3 (which I think reduces the latency by one cycle).
234+
235+(define_insn_reservation "cortex_a5_fconst" 3
236+ (and (eq_attr "tune" "cortexa5")
237+ (eq_attr "type" "fconsts,fconstd"))
238+ "cortex_a5_ex1+cortex_a5_fpadd_pipe")
239+
240+;; We should try not to attempt to issue a single-precision multiplication in
241+;; the middle of a double-precision multiplication operation (the usage of
242+;; cortex_a5_fpmul_pipe).
243+
244+(define_insn_reservation "cortex_a5_fpmuls" 4
245+ (and (eq_attr "tune" "cortexa5")
246+ (eq_attr "type" "fmuls"))
247+ "cortex_a5_ex1+cortex_a5_fpmul_pipe")
248+
249+;; For single-precision multiply-accumulate, the add (accumulate) is issued
250+;; whilst the multiply is in F4. The multiply result can then be forwarded
251+;; from F5 to F1. The issue unit is only used once (when we first start
252+;; processing the instruction), but the usage of the FP add pipeline could
253+;; block other instructions attempting to use it simultaneously. We try to
254+;; avoid that using cortex_a5_fpadd_pipe.
255+
256+(define_insn_reservation "cortex_a5_fpmacs" 8
257+ (and (eq_attr "tune" "cortexa5")
258+ (eq_attr "type" "fmacs"))
259+ "cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe")
260+
261+;; Non-multiply instructions can issue in the middle two instructions of a
262+;; double-precision multiply. Note that it isn't entirely clear when a branch
263+;; can dual-issue when a multi-cycle multiplication is in progress; we ignore
264+;; that for now though.
265+
266+(define_insn_reservation "cortex_a5_fpmuld" 7
267+ (and (eq_attr "tune" "cortexa5")
268+ (eq_attr "type" "fmuld"))
269+ "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\
270+ cortex_a5_ex1+cortex_a5_fpmul_pipe")
271+
272+(define_insn_reservation "cortex_a5_fpmacd" 11
273+ (and (eq_attr "tune" "cortexa5")
274+ (eq_attr "type" "fmacd"))
275+ "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\
276+ cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe")
277+
278+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
279+;; Floating-point divide/square root instructions.
280+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
281+
282+;; ??? Not sure if the 14 cycles taken for single-precision divide to complete
283+;; includes the time taken for the special instruction used to collect the
284+;; result to travel down the multiply pipeline, or not. Assuming so. (If
285+;; that's wrong, the latency should be increased by a few cycles.)
286+
287+;; fsqrt takes one cycle less, but that is not modelled, nor is the use of the
288+;; multiply pipeline to collect the divide/square-root result.
289+
290+(define_insn_reservation "cortex_a5_fdivs" 14
291+ (and (eq_attr "tune" "cortexa5")
292+ (eq_attr "type" "fdivs"))
293+ "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 13")
294+
295+;; ??? Similarly for fdivd.
296+
297+(define_insn_reservation "cortex_a5_fdivd" 29
298+ (and (eq_attr "tune" "cortexa5")
299+ (eq_attr "type" "fdivd"))
300+ "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 28")
301+
302+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
303+;; VFP to/from core transfers.
304+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
305+
306+;; FP loads take data from wr/rot/f3. Might need to define bypasses to model
307+;; this?
308+
309+;; Core-to-VFP transfers use the multiply pipeline.
310+;; Not sure about this at all... I think we need some bypasses too.
311+
312+(define_insn_reservation "cortex_a5_r2f" 4
313+ (and (eq_attr "tune" "cortexa5")
314+ (eq_attr "type" "r_2_f"))
315+ "cortex_a5_ex1")
316+
317+;; Not sure about this either. 6.8.7 says "Additionally, the store pipe used
318+;; for store and FP->core register transfers can forward into the F2 and F3
319+;; stages."
320+;; This doesn't correspond to what we have though.
321+
322+(define_insn_reservation "cortex_a5_f2r" 2
323+ (and (eq_attr "tune" "cortexa5")
324+ (eq_attr "type" "f_2_r"))
325+ "cortex_a5_ex1")
326+
327+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
328+;; VFP flag transfer.
329+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
330+
331+;; ??? The flag forwarding described in section 6.8.11 of the Cortex-A5 DPU
332+;; specification (from fmstat to the ex2 stage of the second instruction) is
333+;; not modeled at present.
334+
335+(define_insn_reservation "cortex_a5_f_flags" 4
336+ (and (eq_attr "tune" "cortexa5")
337+ (eq_attr "type" "f_flag"))
338+ "cortex_a5_ex1")
339+
340+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
341+;; VFP load/store.
342+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
343+
344+(define_insn_reservation "cortex_a5_f_loads" 4
345+ (and (eq_attr "tune" "cortexa5")
346+ (eq_attr "type" "f_loads"))
347+ "cortex_a5_ex1")
348+
349+(define_insn_reservation "cortex_a5_f_loadd" 5
350+ (and (eq_attr "tune" "cortexa5")
351+ (eq_attr "type" "f_load,f_loadd"))
352+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
353+
354+(define_insn_reservation "cortex_a5_f_stores" 0
355+ (and (eq_attr "tune" "cortexa5")
356+ (eq_attr "type" "f_stores"))
357+ "cortex_a5_ex1")
358+
359+(define_insn_reservation "cortex_a5_f_stored" 0
360+ (and (eq_attr "tune" "cortexa5")
361+ (eq_attr "type" "f_store,f_stored"))
362+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
363+
364+;; Load-to-use for floating-point values has a penalty of one cycle, i.e. a
365+;; latency of two (6.8.3).
366+
367+(define_bypass 2 "cortex_a5_f_loads"
368+ "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\
369+ cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\
370+ cortex_a5_f2r")
371+
372+(define_bypass 3 "cortex_a5_f_loadd"
373+ "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\
374+ cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\
375+ cortex_a5_f2r")
376
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99357.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99357.patch
new file mode 100644
index 000000000..bbdd38b55
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99357.patch
@@ -0,0 +1,27 @@
1 2010-06-12 Jie Zhang <jie@codesourcery.com>
2
3 gcc/
4 * config/arm/vfp.md (arm_movsi_vfp): Set neon_type correctly
5 for neon_ldr and neon_str instructions.
6
72010-07-26 Julian Brown <julian@codesourcery.com>
8
9 Merge from Sourcery G++ 4.4:
10
11 2010-04-11 Julian Brown <julian@codesourcery.com>
12
13 Issue #7326
14
15=== modified file 'gcc/config/arm/vfp.md'
16--- old/gcc/config/arm/vfp.md 2010-08-13 11:40:17 +0000
17+++ new/gcc/config/arm/vfp.md 2010-08-13 15:28:31 +0000
18@@ -82,7 +82,7 @@
19 "
20 [(set_attr "predicable" "yes")
21 (set_attr "type" "*,*,*,*,load1,store1,r_2_f,f_2_r,fcpys,f_loads,f_stores")
22- (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,*,*")
23+ (set_attr "neon_type" "*,*,*,*,*,*,neon_mcr,neon_mrc,neon_vmov,neon_ldr,neon_str")
24 (set_attr "pool_range" "*,*,*,*,4096,*,*,*,*,1020,*")
25 (set_attr "neg_pool_range" "*,*,*,*,4084,*,*,*,*,1008,*")]
26 )
27
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99358.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99358.patch
new file mode 100644
index 000000000..eedcf62d1
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99358.patch
@@ -0,0 +1,38 @@
1 2010-06-14 Paul Brook <paul@codesourcery.com>
2
3 Issue #8879
4 gcc/
5 * config/arm/arm.c (use_vfp_abi): Add sorry() for Thumb-1
6 hard-float ABI.
7
82010-07-26 Julian Brown <julian@codesourcery.com>
9
10 Merge from Sourcery G++ 4.4:
11
12 2010-06-12 Jie Zhang <jie@codesourcery.com>
13
14
15=== modified file 'gcc/config/arm/arm.c'
16--- old/gcc/config/arm/arm.c 2010-08-13 15:15:12 +0000
17+++ new/gcc/config/arm/arm.c 2010-08-13 15:37:39 +0000
18@@ -3969,7 +3969,18 @@
19 use_vfp_abi (enum arm_pcs pcs_variant, bool is_double)
20 {
21 if (pcs_variant == ARM_PCS_AAPCS_VFP)
22- return true;
23+ {
24+ static bool seen_thumb1_vfp = false;
25+
26+ if (TARGET_THUMB1 && !seen_thumb1_vfp)
27+ {
28+ sorry ("Thumb-1 hard-float VFP ABI");
29+ /* sorry() is not immediately fatal, so only display this once. */
30+ seen_thumb1_vfp = true;
31+ }
32+
33+ return true;
34+ }
35
36 if (pcs_variant != ARM_PCS_AAPCS_LOCAL)
37 return false;
38
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99359.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99359.patch
new file mode 100644
index 000000000..92dfe0038
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99359.patch
@@ -0,0 +1,27 @@
12010-07-28 Julian Brown <julian@codesourcery.com>
2
3 Backport from FSF mainline:
4
5 gcc/
6 * config/arm/thumb2.md (*thumb2_movdf_soft_insn): Fix alternatives
7 for pool ranges.
8
9 2010-07-26 Julian Brown <julian@codesourcery.com>
10
11 Merge from Sourcery G++ 4.4:
12
13=== modified file 'gcc/config/arm/thumb2.md'
14--- old/gcc/config/arm/thumb2.md 2010-08-13 10:30:35 +0000
15+++ new/gcc/config/arm/thumb2.md 2010-08-13 16:00:58 +0000
16@@ -319,8 +319,8 @@
17 "
18 [(set_attr "length" "8,12,16,8,8")
19 (set_attr "type" "*,*,*,load2,store2")
20- (set_attr "pool_range" "1020")
21- (set_attr "neg_pool_range" "0")]
22+ (set_attr "pool_range" "*,*,*,1020,*")
23+ (set_attr "neg_pool_range" "*,*,*,0,*")]
24 )
25
26 (define_insn "*thumb2_cmpsi_shiftsi"
27
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99360.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99360.patch
new file mode 100644
index 000000000..a58dd2441
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99360.patch
@@ -0,0 +1,1759 @@
12010-07-28 Maxim Kuvyrkov <maxim@codesourcery.com>
2
3 Backport code hoisting improvements from mainline:
4
5 2010-07-28 Jakub Jelinek <jakub@redhat.com>
6 PR debug/45105
7 * gcc.dg/pr45105.c: New test.
8
9 2010-07-28 Jakub Jelinek <jakub@redhat.com>
10 PR debug/45105
11 * gcse.c (hoist_code): Use FOR_BB_INSNS macro.
12
13 2010-07-28 Maxim Kuvyrkov <maxim@codesourcery.com>
14 PR rtl-optimization/45107
15 * gcc.dg/pr45107.c: New test.
16
17 2010-07-28 Maxim Kuvyrkov <maxim@codesourcery.com>
18 PR rtl-optimization/45107
19 * gcse.c (hash_scan_set): Use max_distance for gcse-las.
20
21 2010-07-28 Maxim Kuvyrkov <maxim@codesourcery.com>
22 PR rtl-optimization/45101
23 * gcc.dg/pr45101.c: New test.
24
25 2010-07-28 Maxim Kuvyrkov <maxim@codesourcery.com>
26 PR rtl-optimization/45101
27 * gcse.c (hash_scan_set): Fix argument ordering of insert_expr_in_table
28 for gcse-las.
29
30 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
31 PR rtl-optimization/40956
32 PR target/42495
33 PR middle-end/42574
34 * gcc.target/arm/pr40956.c, gcc.target/arm/pr42495.c,
35 * gcc.target/arm/pr42574.c: Add tests.
36
37 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
38 * config/arm/arm.c (params.h): Include.
39 (arm_override_options): Tune gcse-unrestricted-cost.
40 * config/arm/t-arm (arm.o): Define dependencies.
41
42 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
43 PR target/42495
44 PR middle-end/42574
45 * basic-block.h (get_dominated_to_depth): Declare.
46 * dominance.c (get_dominated_to_depth): New function, use
47 get_all_dominated_blocks as a base.
48 (get_all_dominated_blocks): Use get_dominated_to_depth.
49 * gcse.c (occr_t, VEC (occr_t, heap)): Define.
50 (hoist_exprs): Remove.
51 (alloc_code_hoist_mem, free_code_hoist_mem): Update.
52 (compute_code_hoist_vbeinout): Add debug print outs.
53 (hoist_code): Partially rewrite, simplify. Use get_dominated_to_depth.
54 * params.def (PARAM_MAX_HOIST_DEPTH): New parameter to avoid
55 quadratic behavior.
56 * params.h (MAX_HOIST_DEPTH): New macro.
57 * doc/invoke.texi (max-hoist-depth): Document.
58
59 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
60 PR rtl-optimization/40956
61 * config/arm/arm.c (thumb1_size_rtx_costs): Fix cost of simple
62 constants.
63
64 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
65 PR target/42495
66 PR middle-end/42574
67 * config/arm/arm.c (legitimize_pic_address): Use
68 gen_calculate_pic_address pattern to emit calculation of PIC address.
69 (will_be_in_index_register): New function.
70 (arm_legitimate_address_outer_p, thumb2_legitimate_address_p,)
71 (thumb1_legitimate_address_p): Use it provided !strict_p.
72 * config/arm/arm.md (calculate_pic_address): New expand and split.
73
74 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
75 PR target/42495
76 PR middle-end/42574
77 * config/arm/arm.c (thumb1_size_rtx_costs): Add cost for "J" constants.
78 * config/arm/arm.md (define_split "J", define_split "K"): Make
79 IRA/reload friendly.
80
81 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
82 * gcse.c (insert_insn_end_basic_block): Update signature, remove
83 unused checks.
84 (pre_edge_insert, hoist_code): Update.
85
86 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
87 PR target/42495
88 PR middle-end/42574
89 * gcse.c (hoist_expr_reaches_here_p): Remove excessive check.
90
91 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
92 * gcse.c (hoist_code): Generate new pseudo for every new set insn.
93
94 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
95 PR rtl-optimization/40956
96 PR target/42495
97 PR middle-end/42574
98 * gcse.c (compute_code_hoist_vbeinout): Consider more expressions
99 for hoisting.
100 (hoist_code): Count occurences in current block too.
101
102 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
103 * gcse.c (struct expr:max_distance): New field.
104 (doing_code_hoisting_p): New static variable.
105 (want_to_gcse_p): Change signature. Allow constrained hoisting of
106 simple expressions, don't change behavior for PRE. Set max_distance.
107 (insert_expr_in_table): Set new max_distance field.
108 (hash_scan_set): Update.
109 (hoist_expr_reaches_here_p): Stop search after max_distance
110 instructions.
111 (find_occr_in_bb): New static function. Use it in ...
112 (hoist_code): Calculate sizes of basic block before any changes are
113 done. Pass max_distance to hoist_expr_reaches_here_p.
114 (one_code_hoisting_pass): Set doing_code_hoisting_p.
115 * params.def (PARAM_GCSE_COST_DISTANCE_RATIO,)
116 (PARAM_GCSE_UNRESTRICTED_COST): New parameters.
117 * params.h (GCSE_COST_DISTANCE_RATIO, GCSE_UNRESTRICTED_COST): New
118 macros.
119 * doc/invoke.texi (gcse-cost-distance-ratio, gcse-unrestricted-cost):
120 Document.
121
122 2010-07-27 Jeff Law <law@redhat.com>
123 Maxim Kuvyrkov <maxim@codesourcery.com>
124 * gcse.c (compute_transpout, transpout): Remove, move logic
125 to prune_expressions.
126 (compute_pre_data): Move pruning of trapping expressions ...
127 (prune_expressions): ... here. New static function.
128 (compute_code_hoist_data): Use it.
129 (alloc_code_hoist_mem, free_code_hoist_mem, hoist_code): Update.
130
131 2010-07-27 Maxim Kuvyrkov <maxim@codesourcery.com>
132 * dbgcnt.def (hoist_insn): New debug counter.
133 * gcse.c (hoist_code): Use it.
134
135 2010-07-28 Julian Brown <julian@codesourcery.com>
136
137 Backport from FSF mainline:
138
139=== modified file 'gcc/basic-block.h'
140--- old/gcc/basic-block.h 2010-04-02 18:54:46 +0000
141+++ new/gcc/basic-block.h 2010-08-16 09:41:58 +0000
142@@ -932,6 +932,8 @@
143 extern VEC (basic_block, heap) *get_dominated_by_region (enum cdi_direction,
144 basic_block *,
145 unsigned);
146+extern VEC (basic_block, heap) *get_dominated_to_depth (enum cdi_direction,
147+ basic_block, int);
148 extern VEC (basic_block, heap) *get_all_dominated_blocks (enum cdi_direction,
149 basic_block);
150 extern void add_to_dominance_info (enum cdi_direction, basic_block);
151
152=== modified file 'gcc/config/arm/arm.c'
153--- old/gcc/config/arm/arm.c 2010-08-13 15:37:39 +0000
154+++ new/gcc/config/arm/arm.c 2010-08-16 09:41:58 +0000
155@@ -56,6 +56,7 @@
156 #include "df.h"
157 #include "intl.h"
158 #include "libfuncs.h"
159+#include "params.h"
160
161 /* Forward definitions of types. */
162 typedef struct minipool_node Mnode;
163@@ -1902,6 +1903,14 @@
164 flag_reorder_blocks = 1;
165 }
166
167+ if (!PARAM_SET_P (PARAM_GCSE_UNRESTRICTED_COST)
168+ && flag_pic)
169+ /* Hoisting PIC address calculations more aggressively provides a small,
170+ but measurable, size reduction for PIC code. Therefore, we decrease
171+ the bar for unrestricted expression hoisting to the cost of PIC address
172+ calculation, which is 2 instructions. */
173+ set_param_value ("gcse-unrestricted-cost", 2);
174+
175 /* Register global variables with the garbage collector. */
176 arm_add_gc_roots ();
177
178@@ -5070,17 +5079,13 @@
179 if (GET_CODE (orig) == SYMBOL_REF
180 || GET_CODE (orig) == LABEL_REF)
181 {
182- rtx pic_ref, address;
183 rtx insn;
184
185 if (reg == 0)
186 {
187 gcc_assert (can_create_pseudo_p ());
188 reg = gen_reg_rtx (Pmode);
189- address = gen_reg_rtx (Pmode);
190 }
191- else
192- address = reg;
193
194 /* VxWorks does not impose a fixed gap between segments; the run-time
195 gap can be different from the object-file gap. We therefore can't
196@@ -5096,18 +5101,21 @@
197 insn = arm_pic_static_addr (orig, reg);
198 else
199 {
200+ rtx pat;
201+ rtx mem;
202+
203 /* If this function doesn't have a pic register, create one now. */
204 require_pic_register ();
205
206- if (TARGET_32BIT)
207- emit_insn (gen_pic_load_addr_32bit (address, orig));
208- else /* TARGET_THUMB1 */
209- emit_insn (gen_pic_load_addr_thumb1 (address, orig));
210-
211- pic_ref = gen_const_mem (Pmode,
212- gen_rtx_PLUS (Pmode, cfun->machine->pic_reg,
213- address));
214- insn = emit_move_insn (reg, pic_ref);
215+ pat = gen_calculate_pic_address (reg, cfun->machine->pic_reg, orig);
216+
217+ /* Make the MEM as close to a constant as possible. */
218+ mem = SET_SRC (pat);
219+ gcc_assert (MEM_P (mem) && !MEM_VOLATILE_P (mem));
220+ MEM_READONLY_P (mem) = 1;
221+ MEM_NOTRAP_P (mem) = 1;
222+
223+ insn = emit_insn (pat);
224 }
225
226 /* Put a REG_EQUAL note on this insn, so that it can be optimized
227@@ -5387,6 +5395,15 @@
228 return FALSE;
229 }
230
231+/* Return true if X will surely end up in an index register after next
232+ splitting pass. */
233+static bool
234+will_be_in_index_register (const_rtx x)
235+{
236+ /* arm.md: calculate_pic_address will split this into a register. */
237+ return GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_PIC_SYM;
238+}
239+
240 /* Return nonzero if X is a valid ARM state address operand. */
241 int
242 arm_legitimate_address_outer_p (enum machine_mode mode, rtx x, RTX_CODE outer,
243@@ -5444,8 +5461,9 @@
244 rtx xop1 = XEXP (x, 1);
245
246 return ((arm_address_register_rtx_p (xop0, strict_p)
247- && GET_CODE(xop1) == CONST_INT
248- && arm_legitimate_index_p (mode, xop1, outer, strict_p))
249+ && ((GET_CODE(xop1) == CONST_INT
250+ && arm_legitimate_index_p (mode, xop1, outer, strict_p))
251+ || (!strict_p && will_be_in_index_register (xop1))))
252 || (arm_address_register_rtx_p (xop1, strict_p)
253 && arm_legitimate_index_p (mode, xop0, outer, strict_p)));
254 }
255@@ -5531,7 +5549,8 @@
256 rtx xop1 = XEXP (x, 1);
257
258 return ((arm_address_register_rtx_p (xop0, strict_p)
259- && thumb2_legitimate_index_p (mode, xop1, strict_p))
260+ && (thumb2_legitimate_index_p (mode, xop1, strict_p)
261+ || (!strict_p && will_be_in_index_register (xop1))))
262 || (arm_address_register_rtx_p (xop1, strict_p)
263 && thumb2_legitimate_index_p (mode, xop0, strict_p)));
264 }
265@@ -5834,7 +5853,8 @@
266 && XEXP (x, 0) != frame_pointer_rtx
267 && XEXP (x, 1) != frame_pointer_rtx
268 && thumb1_index_register_rtx_p (XEXP (x, 0), strict_p)
269- && thumb1_index_register_rtx_p (XEXP (x, 1), strict_p))
270+ && (thumb1_index_register_rtx_p (XEXP (x, 1), strict_p)
271+ || (!strict_p && will_be_in_index_register (XEXP (x, 1)))))
272 return 1;
273
274 /* REG+const has 5-7 bit offset for non-SP registers. */
275@@ -6413,12 +6433,16 @@
276
277 case CONST_INT:
278 if (outer == SET)
279- {
280- if ((unsigned HOST_WIDE_INT) INTVAL (x) < 256)
281- return 0;
282- if (thumb_shiftable_const (INTVAL (x)))
283- return COSTS_N_INSNS (2);
284- return COSTS_N_INSNS (3);
285+ {
286+ if ((unsigned HOST_WIDE_INT) INTVAL (x) < 256)
287+ return COSTS_N_INSNS (1);
288+ /* See split "TARGET_THUMB1 && satisfies_constraint_J". */
289+ if (INTVAL (x) >= -255 && INTVAL (x) <= -1)
290+ return COSTS_N_INSNS (2);
291+ /* See split "TARGET_THUMB1 && satisfies_constraint_K". */
292+ if (thumb_shiftable_const (INTVAL (x)))
293+ return COSTS_N_INSNS (2);
294+ return COSTS_N_INSNS (3);
295 }
296 else if ((outer == PLUS || outer == COMPARE)
297 && INTVAL (x) < 256 && INTVAL (x) > -256)
298@@ -7110,6 +7134,12 @@
299 a single register, otherwise it costs one insn per word. */
300 if (REG_P (XEXP (x, 0)))
301 *total = COSTS_N_INSNS (1);
302+ else if (flag_pic
303+ && GET_CODE (XEXP (x, 0)) == PLUS
304+ && will_be_in_index_register (XEXP (XEXP (x, 0), 1)))
305+ /* This will be split into two instructions.
306+ See arm.md:calculate_pic_address. */
307+ *total = COSTS_N_INSNS (2);
308 else
309 *total = COSTS_N_INSNS (ARM_NUM_REGS (mode));
310 return true;
311
312=== modified file 'gcc/config/arm/arm.md'
313--- old/gcc/config/arm/arm.md 2010-08-13 15:15:12 +0000
314+++ new/gcc/config/arm/arm.md 2010-08-16 09:41:58 +0000
315@@ -5290,17 +5290,21 @@
316 [(set (match_operand:SI 0 "register_operand" "")
317 (match_operand:SI 1 "const_int_operand" ""))]
318 "TARGET_THUMB1 && satisfies_constraint_J (operands[1])"
319- [(set (match_dup 0) (match_dup 1))
320- (set (match_dup 0) (neg:SI (match_dup 0)))]
321- "operands[1] = GEN_INT (- INTVAL (operands[1]));"
322+ [(set (match_dup 2) (match_dup 1))
323+ (set (match_dup 0) (neg:SI (match_dup 2)))]
324+ "
325+ {
326+ operands[1] = GEN_INT (- INTVAL (operands[1]));
327+ operands[2] = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0];
328+ }"
329 )
330
331 (define_split
332 [(set (match_operand:SI 0 "register_operand" "")
333 (match_operand:SI 1 "const_int_operand" ""))]
334 "TARGET_THUMB1 && satisfies_constraint_K (operands[1])"
335- [(set (match_dup 0) (match_dup 1))
336- (set (match_dup 0) (ashift:SI (match_dup 0) (match_dup 2)))]
337+ [(set (match_dup 2) (match_dup 1))
338+ (set (match_dup 0) (ashift:SI (match_dup 2) (match_dup 3)))]
339 "
340 {
341 unsigned HOST_WIDE_INT val = INTVAL (operands[1]) & 0xffffffffu;
342@@ -5311,12 +5315,13 @@
343 if ((val & (mask << i)) == val)
344 break;
345
346- /* Shouldn't happen, but we don't want to split if the shift is zero. */
347+ /* Don't split if the shift is zero. */
348 if (i == 0)
349 FAIL;
350
351 operands[1] = GEN_INT (val >> i);
352- operands[2] = GEN_INT (i);
353+ operands[2] = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0];
354+ operands[3] = GEN_INT (i);
355 }"
356 )
357
358@@ -5325,6 +5330,34 @@
359 ;; we use an unspec. The offset will be loaded from a constant pool entry,
360 ;; since that is the only type of relocation we can use.
361
362+;; Wrap calculation of the whole PIC address in a single pattern for the
363+;; benefit of optimizers, particularly, PRE and HOIST. Calculation of
364+;; a PIC address involves two loads from memory, so we want to CSE it
365+;; as often as possible.
366+;; This pattern will be split into one of the pic_load_addr_* patterns
367+;; and a move after GCSE optimizations.
368+;;
369+;; Note: Update arm.c: legitimize_pic_address() when changing this pattern.
370+(define_expand "calculate_pic_address"
371+ [(set (match_operand:SI 0 "register_operand" "")
372+ (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "")
373+ (unspec:SI [(match_operand:SI 2 "" "")]
374+ UNSPEC_PIC_SYM))))]
375+ "flag_pic"
376+)
377+
378+;; Split calculate_pic_address into pic_load_addr_* and a move.
379+(define_split
380+ [(set (match_operand:SI 0 "register_operand" "")
381+ (mem:SI (plus:SI (match_operand:SI 1 "register_operand" "")
382+ (unspec:SI [(match_operand:SI 2 "" "")]
383+ UNSPEC_PIC_SYM))))]
384+ "flag_pic"
385+ [(set (match_dup 3) (unspec:SI [(match_dup 2)] UNSPEC_PIC_SYM))
386+ (set (match_dup 0) (mem:SI (plus:SI (match_dup 1) (match_dup 3))))]
387+ "operands[3] = can_create_pseudo_p () ? gen_reg_rtx (SImode) : operands[0];"
388+)
389+
390 ;; The rather odd constraints on the following are to force reload to leave
391 ;; the insn alone, and to force the minipool generation pass to then move
392 ;; the GOT symbol to memory.
393
394=== modified file 'gcc/config/arm/t-arm'
395--- old/gcc/config/arm/t-arm 2009-06-21 19:48:15 +0000
396+++ new/gcc/config/arm/t-arm 2010-08-16 09:41:58 +0000
397@@ -45,6 +45,15 @@
398 $(srcdir)/config/arm/arm-cores.def > \
399 $(srcdir)/config/arm/arm-tune.md
400
401+arm.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
402+ $(RTL_H) $(TREE_H) $(OBSTACK_H) $(REGS_H) hard-reg-set.h \
403+ insn-config.h conditions.h output.h \
404+ $(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
405+ $(EXPR_H) $(OPTABS_H) toplev.h $(RECOG_H) $(CGRAPH_H) \
406+ $(GGC_H) except.h $(C_PRAGMA_H) $(INTEGRATE_H) $(TM_P_H) \
407+ $(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \
408+ intl.h libfuncs.h $(PARAMS_H)
409+
410 arm-c.o: $(srcdir)/config/arm/arm-c.c $(CONFIG_H) $(SYSTEM_H) \
411 coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H)
412 $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
413
414=== modified file 'gcc/dbgcnt.def'
415--- old/gcc/dbgcnt.def 2009-11-25 10:55:54 +0000
416+++ new/gcc/dbgcnt.def 2010-08-16 09:41:58 +0000
417@@ -158,6 +158,7 @@
418 DEBUG_COUNTER (global_alloc_at_func)
419 DEBUG_COUNTER (global_alloc_at_reg)
420 DEBUG_COUNTER (hoist)
421+DEBUG_COUNTER (hoist_insn)
422 DEBUG_COUNTER (ia64_sched2)
423 DEBUG_COUNTER (if_conversion)
424 DEBUG_COUNTER (if_after_combine)
425
426=== modified file 'gcc/doc/invoke.texi'
427--- old/gcc/doc/invoke.texi 2010-08-05 15:20:54 +0000
428+++ new/gcc/doc/invoke.texi 2010-08-16 09:41:58 +0000
429@@ -8086,6 +8086,29 @@
430 vectorization needs to be greater than the value specified by this option
431 to allow vectorization. The default value is 0.
432
433+@item gcse-cost-distance-ratio
434+Scaling factor in calculation of maximum distance an expression
435+can be moved by GCSE optimizations. This is currently supported only in
436+code hoisting pass. The bigger the ratio, the more agressive code hoisting
437+will be with simple expressions, i.e., the expressions which have cost
438+less than @option{gcse-unrestricted-cost}. Specifying 0 will disable
439+hoisting of simple expressions. The default value is 10.
440+
441+@item gcse-unrestricted-cost
442+Cost, roughly measured as the cost of a single typical machine
443+instruction, at which GCSE optimizations will not constrain
444+the distance an expression can travel. This is currently
445+supported only in code hoisting pass. The lesser the cost,
446+the more aggressive code hoisting will be. Specifying 0 will
447+allow all expressions to travel unrestricted distances.
448+The default value is 3.
449+
450+@item max-hoist-depth
451+The depth of search in the dominator tree for expressions to hoist.
452+This is used to avoid quadratic behavior in hoisting algorithm.
453+The value of 0 will avoid limiting the search, but may slow down compilation
454+of huge functions. The default value is 30.
455+
456 @item max-unrolled-insns
457 The maximum number of instructions that a loop should have if that loop
458 is unrolled, and if the loop is unrolled, it determines how many times
459
460=== modified file 'gcc/dominance.c'
461--- old/gcc/dominance.c 2010-04-02 18:54:46 +0000
462+++ new/gcc/dominance.c 2010-08-16 09:41:58 +0000
463@@ -782,16 +782,20 @@
464 }
465
466 /* Returns the list of basic blocks including BB dominated by BB, in the
467- direction DIR. The vector will be sorted in preorder. */
468+ direction DIR up to DEPTH in the dominator tree. The DEPTH of zero will
469+ produce a vector containing all dominated blocks. The vector will be sorted
470+ in preorder. */
471
472 VEC (basic_block, heap) *
473-get_all_dominated_blocks (enum cdi_direction dir, basic_block bb)
474+get_dominated_to_depth (enum cdi_direction dir, basic_block bb, int depth)
475 {
476 VEC(basic_block, heap) *bbs = NULL;
477 unsigned i;
478+ unsigned next_level_start;
479
480 i = 0;
481 VEC_safe_push (basic_block, heap, bbs, bb);
482+ next_level_start = 1; /* = VEC_length (basic_block, bbs); */
483
484 do
485 {
486@@ -802,12 +806,24 @@
487 son;
488 son = next_dom_son (dir, son))
489 VEC_safe_push (basic_block, heap, bbs, son);
490+
491+ if (i == next_level_start && --depth)
492+ next_level_start = VEC_length (basic_block, bbs);
493 }
494- while (i < VEC_length (basic_block, bbs));
495+ while (i < next_level_start);
496
497 return bbs;
498 }
499
500+/* Returns the list of basic blocks including BB dominated by BB, in the
501+ direction DIR. The vector will be sorted in preorder. */
502+
503+VEC (basic_block, heap) *
504+get_all_dominated_blocks (enum cdi_direction dir, basic_block bb)
505+{
506+ return get_dominated_to_depth (dir, bb, 0);
507+}
508+
509 /* Redirect all edges pointing to BB to TO. */
510 void
511 redirect_immediate_dominators (enum cdi_direction dir, basic_block bb,
512
513=== modified file 'gcc/gcse.c'
514--- old/gcc/gcse.c 2010-03-16 10:50:42 +0000
515+++ new/gcc/gcse.c 2010-08-16 09:41:58 +0000
516@@ -296,6 +296,12 @@
517 The value is the newly created pseudo-reg to record a copy of the
518 expression in all the places that reach the redundant copy. */
519 rtx reaching_reg;
520+ /* Maximum distance in instructions this expression can travel.
521+ We avoid moving simple expressions for more than a few instructions
522+ to keep register pressure under control.
523+ A value of "0" removes restrictions on how far the expression can
524+ travel. */
525+ int max_distance;
526 };
527
528 /* Occurrence of an expression.
529@@ -317,6 +323,10 @@
530 char copied_p;
531 };
532
533+typedef struct occr *occr_t;
534+DEF_VEC_P (occr_t);
535+DEF_VEC_ALLOC_P (occr_t, heap);
536+
537 /* Expression and copy propagation hash tables.
538 Each hash table is an array of buckets.
539 ??? It is known that if it were an array of entries, structure elements
540@@ -419,6 +429,9 @@
541 /* Number of global copies propagated. */
542 static int global_copy_prop_count;
543
544+/* Doing code hoisting. */
545+static bool doing_code_hoisting_p = false;
546+
547 /* For available exprs */
548 static sbitmap *ae_kill;
549
550@@ -432,12 +445,12 @@
551 static void hash_scan_set (rtx, rtx, struct hash_table_d *);
552 static void hash_scan_clobber (rtx, rtx, struct hash_table_d *);
553 static void hash_scan_call (rtx, rtx, struct hash_table_d *);
554-static int want_to_gcse_p (rtx);
555+static int want_to_gcse_p (rtx, int *);
556 static bool gcse_constant_p (const_rtx);
557 static int oprs_unchanged_p (const_rtx, const_rtx, int);
558 static int oprs_anticipatable_p (const_rtx, const_rtx);
559 static int oprs_available_p (const_rtx, const_rtx);
560-static void insert_expr_in_table (rtx, enum machine_mode, rtx, int, int,
561+static void insert_expr_in_table (rtx, enum machine_mode, rtx, int, int, int,
562 struct hash_table_d *);
563 static void insert_set_in_table (rtx, rtx, struct hash_table_d *);
564 static unsigned int hash_expr (const_rtx, enum machine_mode, int *, int);
565@@ -462,7 +475,6 @@
566 static void alloc_cprop_mem (int, int);
567 static void free_cprop_mem (void);
568 static void compute_transp (const_rtx, int, sbitmap *, int);
569-static void compute_transpout (void);
570 static void compute_local_properties (sbitmap *, sbitmap *, sbitmap *,
571 struct hash_table_d *);
572 static void compute_cprop_data (void);
573@@ -486,7 +498,7 @@
574 static void compute_pre_data (void);
575 static int pre_expr_reaches_here_p (basic_block, struct expr *,
576 basic_block);
577-static void insert_insn_end_basic_block (struct expr *, basic_block, int);
578+static void insert_insn_end_basic_block (struct expr *, basic_block);
579 static void pre_insert_copy_insn (struct expr *, rtx);
580 static void pre_insert_copies (void);
581 static int pre_delete (void);
582@@ -497,7 +509,8 @@
583 static void free_code_hoist_mem (void);
584 static void compute_code_hoist_vbeinout (void);
585 static void compute_code_hoist_data (void);
586-static int hoist_expr_reaches_here_p (basic_block, int, basic_block, char *);
587+static int hoist_expr_reaches_here_p (basic_block, int, basic_block, char *,
588+ int, int *);
589 static int hoist_code (void);
590 static int one_code_hoisting_pass (void);
591 static rtx process_insert_insn (struct expr *);
592@@ -755,7 +768,7 @@
593 GCSE. */
594
595 static int
596-want_to_gcse_p (rtx x)
597+want_to_gcse_p (rtx x, int *max_distance_ptr)
598 {
599 #ifdef STACK_REGS
600 /* On register stack architectures, don't GCSE constants from the
601@@ -765,18 +778,67 @@
602 x = avoid_constant_pool_reference (x);
603 #endif
604
605+ /* GCSE'ing constants:
606+
607+ We do not specifically distinguish between constant and non-constant
608+ expressions in PRE and Hoist. We use rtx_cost below to limit
609+ the maximum distance simple expressions can travel.
610+
611+ Nevertheless, constants are much easier to GCSE, and, hence,
612+ it is easy to overdo the optimizations. Usually, excessive PRE and
613+ Hoisting of constant leads to increased register pressure.
614+
615+ RA can deal with this by rematerialing some of the constants.
616+ Therefore, it is important that the back-end generates sets of constants
617+ in a way that allows reload rematerialize them under high register
618+ pressure, i.e., a pseudo register with REG_EQUAL to constant
619+ is set only once. Failing to do so will result in IRA/reload
620+ spilling such constants under high register pressure instead of
621+ rematerializing them. */
622+
623 switch (GET_CODE (x))
624 {
625 case REG:
626 case SUBREG:
627- case CONST_INT:
628- case CONST_DOUBLE:
629- case CONST_FIXED:
630- case CONST_VECTOR:
631 case CALL:
632 return 0;
633
634+ case CONST_INT:
635+ case CONST_DOUBLE:
636+ case CONST_FIXED:
637+ case CONST_VECTOR:
638+ if (!doing_code_hoisting_p)
639+ /* Do not PRE constants. */
640+ return 0;
641+
642+ /* FALLTHRU */
643+
644 default:
645+ if (doing_code_hoisting_p)
646+ /* PRE doesn't implement max_distance restriction. */
647+ {
648+ int cost;
649+ int max_distance;
650+
651+ gcc_assert (!optimize_function_for_speed_p (cfun)
652+ && optimize_function_for_size_p (cfun));
653+ cost = rtx_cost (x, SET, 0);
654+
655+ if (cost < COSTS_N_INSNS (GCSE_UNRESTRICTED_COST))
656+ {
657+ max_distance = (GCSE_COST_DISTANCE_RATIO * cost) / 10;
658+ if (max_distance == 0)
659+ return 0;
660+
661+ gcc_assert (max_distance > 0);
662+ }
663+ else
664+ max_distance = 0;
665+
666+ if (max_distance_ptr)
667+ *max_distance_ptr = max_distance;
668+ }
669+
670 return can_assign_to_reg_without_clobbers_p (x);
671 }
672 }
673@@ -1090,11 +1152,14 @@
674 It is only used if X is a CONST_INT.
675
676 ANTIC_P is nonzero if X is an anticipatable expression.
677- AVAIL_P is nonzero if X is an available expression. */
678+ AVAIL_P is nonzero if X is an available expression.
679+
680+ MAX_DISTANCE is the maximum distance in instructions this expression can
681+ be moved. */
682
683 static void
684 insert_expr_in_table (rtx x, enum machine_mode mode, rtx insn, int antic_p,
685- int avail_p, struct hash_table_d *table)
686+ int avail_p, int max_distance, struct hash_table_d *table)
687 {
688 int found, do_not_record_p;
689 unsigned int hash;
690@@ -1137,7 +1202,11 @@
691 cur_expr->next_same_hash = NULL;
692 cur_expr->antic_occr = NULL;
693 cur_expr->avail_occr = NULL;
694+ gcc_assert (max_distance >= 0);
695+ cur_expr->max_distance = max_distance;
696 }
697+ else
698+ gcc_assert (cur_expr->max_distance == max_distance);
699
700 /* Now record the occurrence(s). */
701 if (antic_p)
702@@ -1238,6 +1307,8 @@
703 cur_expr->next_same_hash = NULL;
704 cur_expr->antic_occr = NULL;
705 cur_expr->avail_occr = NULL;
706+ /* Not used for set_p tables. */
707+ cur_expr->max_distance = 0;
708 }
709
710 /* Now record the occurrence. */
711@@ -1307,6 +1378,7 @@
712 {
713 unsigned int regno = REGNO (dest);
714 rtx tmp;
715+ int max_distance = 0;
716
717 /* See if a REG_EQUAL note shows this equivalent to a simpler expression.
718
719@@ -1329,7 +1401,7 @@
720 && !REG_P (src)
721 && (table->set_p
722 ? gcse_constant_p (XEXP (note, 0))
723- : want_to_gcse_p (XEXP (note, 0))))
724+ : want_to_gcse_p (XEXP (note, 0), NULL)))
725 src = XEXP (note, 0), pat = gen_rtx_SET (VOIDmode, dest, src);
726
727 /* Only record sets of pseudo-regs in the hash table. */
728@@ -1344,7 +1416,7 @@
729 can't do the same thing at the rtl level. */
730 && !can_throw_internal (insn)
731 /* Is SET_SRC something we want to gcse? */
732- && want_to_gcse_p (src)
733+ && want_to_gcse_p (src, &max_distance)
734 /* Don't CSE a nop. */
735 && ! set_noop_p (pat)
736 /* Don't GCSE if it has attached REG_EQUIV note.
737@@ -1368,7 +1440,8 @@
738 int avail_p = (oprs_available_p (src, insn)
739 && ! JUMP_P (insn));
740
741- insert_expr_in_table (src, GET_MODE (dest), insn, antic_p, avail_p, table);
742+ insert_expr_in_table (src, GET_MODE (dest), insn, antic_p, avail_p,
743+ max_distance, table);
744 }
745
746 /* Record sets for constant/copy propagation. */
747@@ -1394,6 +1467,7 @@
748 else if (flag_gcse_las && REG_P (src) && MEM_P (dest))
749 {
750 unsigned int regno = REGNO (src);
751+ int max_distance = 0;
752
753 /* Do not do this for constant/copy propagation. */
754 if (! table->set_p
755@@ -1405,7 +1479,7 @@
756 do that easily for EH edges so disable GCSE on these for now. */
757 && !can_throw_internal (insn)
758 /* Is SET_DEST something we want to gcse? */
759- && want_to_gcse_p (dest)
760+ && want_to_gcse_p (dest, &max_distance)
761 /* Don't CSE a nop. */
762 && ! set_noop_p (pat)
763 /* Don't GCSE if it has attached REG_EQUIV note.
764@@ -1427,7 +1501,7 @@
765
766 /* Record the memory expression (DEST) in the hash table. */
767 insert_expr_in_table (dest, GET_MODE (dest), insn,
768- antic_p, avail_p, table);
769+ antic_p, avail_p, max_distance, table);
770 }
771 }
772 }
773@@ -1513,8 +1587,8 @@
774 if (flat_table[i] != 0)
775 {
776 expr = flat_table[i];
777- fprintf (file, "Index %d (hash value %d)\n ",
778- expr->bitmap_index, hash_val[i]);
779+ fprintf (file, "Index %d (hash value %d; max distance %d)\n ",
780+ expr->bitmap_index, hash_val[i], expr->max_distance);
781 print_rtl (file, expr->expr);
782 fprintf (file, "\n");
783 }
784@@ -3168,11 +3242,6 @@
785 /* Nonzero for expressions that are transparent in the block. */
786 static sbitmap *transp;
787
788-/* Nonzero for expressions that are transparent at the end of the block.
789- This is only zero for expressions killed by abnormal critical edge
790- created by a calls. */
791-static sbitmap *transpout;
792-
793 /* Nonzero for expressions that are computed (available) in the block. */
794 static sbitmap *comp;
795
796@@ -3236,28 +3305,105 @@
797 pre_optimal = pre_redundant = pre_insert_map = pre_delete_map = NULL;
798 }
799
800-/* Top level routine to do the dataflow analysis needed by PRE. */
801+/* Remove certain expressions from anticipatable and transparent
802+ sets of basic blocks that have incoming abnormal edge.
803+ For PRE remove potentially trapping expressions to avoid placing
804+ them on abnormal edges. For hoisting remove memory references that
805+ can be clobbered by calls. */
806
807 static void
808-compute_pre_data (void)
809+prune_expressions (bool pre_p)
810 {
811- sbitmap trapping_expr;
812- basic_block bb;
813+ sbitmap prune_exprs;
814 unsigned int ui;
815-
816- compute_local_properties (transp, comp, antloc, &expr_hash_table);
817- sbitmap_vector_zero (ae_kill, last_basic_block);
818-
819- /* Collect expressions which might trap. */
820- trapping_expr = sbitmap_alloc (expr_hash_table.n_elems);
821- sbitmap_zero (trapping_expr);
822+ basic_block bb;
823+
824+ prune_exprs = sbitmap_alloc (expr_hash_table.n_elems);
825+ sbitmap_zero (prune_exprs);
826 for (ui = 0; ui < expr_hash_table.size; ui++)
827 {
828 struct expr *e;
829 for (e = expr_hash_table.table[ui]; e != NULL; e = e->next_same_hash)
830- if (may_trap_p (e->expr))
831- SET_BIT (trapping_expr, e->bitmap_index);
832- }
833+ {
834+ /* Note potentially trapping expressions. */
835+ if (may_trap_p (e->expr))
836+ {
837+ SET_BIT (prune_exprs, e->bitmap_index);
838+ continue;
839+ }
840+
841+ if (!pre_p && MEM_P (e->expr))
842+ /* Note memory references that can be clobbered by a call.
843+ We do not split abnormal edges in hoisting, so would
844+ a memory reference get hoisted along an abnormal edge,
845+ it would be placed /before/ the call. Therefore, only
846+ constant memory references can be hoisted along abnormal
847+ edges. */
848+ {
849+ if (GET_CODE (XEXP (e->expr, 0)) == SYMBOL_REF
850+ && CONSTANT_POOL_ADDRESS_P (XEXP (e->expr, 0)))
851+ continue;
852+
853+ if (MEM_READONLY_P (e->expr)
854+ && !MEM_VOLATILE_P (e->expr)
855+ && MEM_NOTRAP_P (e->expr))
856+ /* Constant memory reference, e.g., a PIC address. */
857+ continue;
858+
859+ /* ??? Optimally, we would use interprocedural alias
860+ analysis to determine if this mem is actually killed
861+ by this call. */
862+
863+ SET_BIT (prune_exprs, e->bitmap_index);
864+ }
865+ }
866+ }
867+
868+ FOR_EACH_BB (bb)
869+ {
870+ edge e;
871+ edge_iterator ei;
872+
873+ /* If the current block is the destination of an abnormal edge, we
874+ kill all trapping (for PRE) and memory (for hoist) expressions
875+ because we won't be able to properly place the instruction on
876+ the edge. So make them neither anticipatable nor transparent.
877+ This is fairly conservative.
878+
879+ ??? For hoisting it may be necessary to check for set-and-jump
880+ instructions here, not just for abnormal edges. The general problem
881+ is that when an expression cannot not be placed right at the end of
882+ a basic block we should account for any side-effects of a subsequent
883+ jump instructions that could clobber the expression. It would
884+ be best to implement this check along the lines of
885+ hoist_expr_reaches_here_p where the target block is already known
886+ and, hence, there's no need to conservatively prune expressions on
887+ "intermediate" set-and-jump instructions. */
888+ FOR_EACH_EDGE (e, ei, bb->preds)
889+ if ((e->flags & EDGE_ABNORMAL)
890+ && (pre_p || CALL_P (BB_END (e->src))))
891+ {
892+ sbitmap_difference (antloc[bb->index],
893+ antloc[bb->index], prune_exprs);
894+ sbitmap_difference (transp[bb->index],
895+ transp[bb->index], prune_exprs);
896+ break;
897+ }
898+ }
899+
900+ sbitmap_free (prune_exprs);
901+}
902+
903+/* Top level routine to do the dataflow analysis needed by PRE. */
904+
905+static void
906+compute_pre_data (void)
907+{
908+ basic_block bb;
909+
910+ compute_local_properties (transp, comp, antloc, &expr_hash_table);
911+ prune_expressions (true);
912+ sbitmap_vector_zero (ae_kill, last_basic_block);
913
914 /* Compute ae_kill for each basic block using:
915
916@@ -3266,21 +3412,6 @@
917
918 FOR_EACH_BB (bb)
919 {
920- edge e;
921- edge_iterator ei;
922-
923- /* If the current block is the destination of an abnormal edge, we
924- kill all trapping expressions because we won't be able to properly
925- place the instruction on the edge. So make them neither
926- anticipatable nor transparent. This is fairly conservative. */
927- FOR_EACH_EDGE (e, ei, bb->preds)
928- if (e->flags & EDGE_ABNORMAL)
929- {
930- sbitmap_difference (antloc[bb->index], antloc[bb->index], trapping_expr);
931- sbitmap_difference (transp[bb->index], transp[bb->index], trapping_expr);
932- break;
933- }
934-
935 sbitmap_a_or_b (ae_kill[bb->index], transp[bb->index], comp[bb->index]);
936 sbitmap_not (ae_kill[bb->index], ae_kill[bb->index]);
937 }
938@@ -3291,7 +3422,6 @@
939 antloc = NULL;
940 sbitmap_vector_free (ae_kill);
941 ae_kill = NULL;
942- sbitmap_free (trapping_expr);
943 }
944
945 /* PRE utilities */
946@@ -3406,14 +3536,10 @@
947
948 /* Add EXPR to the end of basic block BB.
949
950- This is used by both the PRE and code hoisting.
951-
952- For PRE, we want to verify that the expr is either transparent
953- or locally anticipatable in the target block. This check makes
954- no sense for code hoisting. */
955+ This is used by both the PRE and code hoisting. */
956
957 static void
958-insert_insn_end_basic_block (struct expr *expr, basic_block bb, int pre)
959+insert_insn_end_basic_block (struct expr *expr, basic_block bb)
960 {
961 rtx insn = BB_END (bb);
962 rtx new_insn;
963@@ -3440,12 +3566,6 @@
964 #ifdef HAVE_cc0
965 rtx note;
966 #endif
967- /* It should always be the case that we can put these instructions
968- anywhere in the basic block with performing PRE optimizations.
969- Check this. */
970- gcc_assert (!NONJUMP_INSN_P (insn) || !pre
971- || TEST_BIT (antloc[bb->index], expr->bitmap_index)
972- || TEST_BIT (transp[bb->index], expr->bitmap_index));
973
974 /* If this is a jump table, then we can't insert stuff here. Since
975 we know the previous real insn must be the tablejump, we insert
976@@ -3482,15 +3602,7 @@
977 /* Keeping in mind SMALL_REGISTER_CLASSES and parameters in registers,
978 we search backward and place the instructions before the first
979 parameter is loaded. Do this for everyone for consistency and a
980- presumption that we'll get better code elsewhere as well.
981-
982- It should always be the case that we can put these instructions
983- anywhere in the basic block with performing PRE optimizations.
984- Check this. */
985-
986- gcc_assert (!pre
987- || TEST_BIT (antloc[bb->index], expr->bitmap_index)
988- || TEST_BIT (transp[bb->index], expr->bitmap_index));
989+ presumption that we'll get better code elsewhere as well. */
990
991 /* Since different machines initialize their parameter registers
992 in different orders, assume nothing. Collect the set of all
993@@ -3587,7 +3699,7 @@
994 now. */
995
996 if (eg->flags & EDGE_ABNORMAL)
997- insert_insn_end_basic_block (index_map[j], bb, 0);
998+ insert_insn_end_basic_block (index_map[j], bb);
999 else
1000 {
1001 insn = process_insert_insn (index_map[j]);
1002@@ -4046,61 +4158,12 @@
1003 }
1004 }
1005
1006-/* Compute transparent outgoing information for each block.
1007-
1008- An expression is transparent to an edge unless it is killed by
1009- the edge itself. This can only happen with abnormal control flow,
1010- when the edge is traversed through a call. This happens with
1011- non-local labels and exceptions.
1012-
1013- This would not be necessary if we split the edge. While this is
1014- normally impossible for abnormal critical edges, with some effort
1015- it should be possible with exception handling, since we still have
1016- control over which handler should be invoked. But due to increased
1017- EH table sizes, this may not be worthwhile. */
1018-
1019-static void
1020-compute_transpout (void)
1021-{
1022- basic_block bb;
1023- unsigned int i;
1024- struct expr *expr;
1025-
1026- sbitmap_vector_ones (transpout, last_basic_block);
1027-
1028- FOR_EACH_BB (bb)
1029- {
1030- /* Note that flow inserted a nop at the end of basic blocks that
1031- end in call instructions for reasons other than abnormal
1032- control flow. */
1033- if (! CALL_P (BB_END (bb)))
1034- continue;
1035-
1036- for (i = 0; i < expr_hash_table.size; i++)
1037- for (expr = expr_hash_table.table[i]; expr ; expr = expr->next_same_hash)
1038- if (MEM_P (expr->expr))
1039- {
1040- if (GET_CODE (XEXP (expr->expr, 0)) == SYMBOL_REF
1041- && CONSTANT_POOL_ADDRESS_P (XEXP (expr->expr, 0)))
1042- continue;
1043-
1044- /* ??? Optimally, we would use interprocedural alias
1045- analysis to determine if this mem is actually killed
1046- by this call. */
1047- RESET_BIT (transpout[bb->index], expr->bitmap_index);
1048- }
1049- }
1050-}
1051-
1052 /* Code Hoisting variables and subroutines. */
1053
1054 /* Very busy expressions. */
1055 static sbitmap *hoist_vbein;
1056 static sbitmap *hoist_vbeout;
1057
1058-/* Hoistable expressions. */
1059-static sbitmap *hoist_exprs;
1060-
1061 /* ??? We could compute post dominators and run this algorithm in
1062 reverse to perform tail merging, doing so would probably be
1063 more effective than the tail merging code in jump.c.
1064@@ -4119,8 +4182,6 @@
1065
1066 hoist_vbein = sbitmap_vector_alloc (n_blocks, n_exprs);
1067 hoist_vbeout = sbitmap_vector_alloc (n_blocks, n_exprs);
1068- hoist_exprs = sbitmap_vector_alloc (n_blocks, n_exprs);
1069- transpout = sbitmap_vector_alloc (n_blocks, n_exprs);
1070 }
1071
1072 /* Free vars used for code hoisting analysis. */
1073@@ -4134,8 +4195,6 @@
1074
1075 sbitmap_vector_free (hoist_vbein);
1076 sbitmap_vector_free (hoist_vbeout);
1077- sbitmap_vector_free (hoist_exprs);
1078- sbitmap_vector_free (transpout);
1079
1080 free_dominance_info (CDI_DOMINATORS);
1081 }
1082@@ -4166,8 +4225,15 @@
1083 FOR_EACH_BB_REVERSE (bb)
1084 {
1085 if (bb->next_bb != EXIT_BLOCK_PTR)
1086- sbitmap_intersection_of_succs (hoist_vbeout[bb->index],
1087- hoist_vbein, bb->index);
1088+ {
1089+ sbitmap_intersection_of_succs (hoist_vbeout[bb->index],
1090+ hoist_vbein, bb->index);
1091+
1092+ /* Include expressions in VBEout that are calculated
1093+ in BB and available at its end. */
1094+ sbitmap_a_or_b (hoist_vbeout[bb->index],
1095+ hoist_vbeout[bb->index], comp[bb->index]);
1096+ }
1097
1098 changed |= sbitmap_a_or_b_and_c_cg (hoist_vbein[bb->index],
1099 antloc[bb->index],
1100@@ -4179,7 +4245,17 @@
1101 }
1102
1103 if (dump_file)
1104- fprintf (dump_file, "hoisting vbeinout computation: %d passes\n", passes);
1105+ {
1106+ fprintf (dump_file, "hoisting vbeinout computation: %d passes\n", passes);
1107+
1108+ FOR_EACH_BB (bb)
1109+ {
1110+ fprintf (dump_file, "vbein (%d): ", bb->index);
1111+ dump_sbitmap_file (dump_file, hoist_vbein[bb->index]);
1112+ fprintf (dump_file, "vbeout(%d): ", bb->index);
1113+ dump_sbitmap_file (dump_file, hoist_vbeout[bb->index]);
1114+ }
1115+ }
1116 }
1117
1118 /* Top level routine to do the dataflow analysis needed by code hoisting. */
1119@@ -4188,7 +4264,7 @@
1120 compute_code_hoist_data (void)
1121 {
1122 compute_local_properties (transp, comp, antloc, &expr_hash_table);
1123- compute_transpout ();
1124+ prune_expressions (false);
1125 compute_code_hoist_vbeinout ();
1126 calculate_dominance_info (CDI_DOMINATORS);
1127 if (dump_file)
1128@@ -4197,6 +4273,8 @@
1129
1130 /* Determine if the expression identified by EXPR_INDEX would
1131 reach BB unimpared if it was placed at the end of EXPR_BB.
1132+ Stop the search if the expression would need to be moved more
1133+ than DISTANCE instructions.
1134
1135 It's unclear exactly what Muchnick meant by "unimpared". It seems
1136 to me that the expression must either be computed or transparent in
1137@@ -4209,12 +4287,24 @@
1138 paths. */
1139
1140 static int
1141-hoist_expr_reaches_here_p (basic_block expr_bb, int expr_index, basic_block bb, char *visited)
1142+hoist_expr_reaches_here_p (basic_block expr_bb, int expr_index, basic_block bb,
1143+ char *visited, int distance, int *bb_size)
1144 {
1145 edge pred;
1146 edge_iterator ei;
1147 int visited_allocated_locally = 0;
1148
1149+ /* Terminate the search if distance, for which EXPR is allowed to move,
1150+ is exhausted. */
1151+ if (distance > 0)
1152+ {
1153+ distance -= bb_size[bb->index];
1154+
1155+ if (distance <= 0)
1156+ return 0;
1157+ }
1158+ else
1159+ gcc_assert (distance == 0);
1160
1161 if (visited == NULL)
1162 {
1163@@ -4233,9 +4323,6 @@
1164 else if (visited[pred_bb->index])
1165 continue;
1166
1167- /* Does this predecessor generate this expression? */
1168- else if (TEST_BIT (comp[pred_bb->index], expr_index))
1169- break;
1170 else if (! TEST_BIT (transp[pred_bb->index], expr_index))
1171 break;
1172
1173@@ -4243,8 +4330,8 @@
1174 else
1175 {
1176 visited[pred_bb->index] = 1;
1177- if (! hoist_expr_reaches_here_p (expr_bb, expr_index,
1178- pred_bb, visited))
1179+ if (! hoist_expr_reaches_here_p (expr_bb, expr_index, pred_bb,
1180+ visited, distance, bb_size))
1181 break;
1182 }
1183 }
1184@@ -4254,20 +4341,33 @@
1185 return (pred == NULL);
1186 }
1187
1188+/* Find occurence in BB. */
1189+static struct occr *
1190+find_occr_in_bb (struct occr *occr, basic_block bb)
1191+{
1192+ /* Find the right occurrence of this expression. */
1193+ while (occr && BLOCK_FOR_INSN (occr->insn) != bb)
1194+ occr = occr->next;
1195+
1196+ return occr;
1197+}
1198+
1199 /* Actually perform code hoisting. */
1200
1201 static int
1202 hoist_code (void)
1203 {
1204 basic_block bb, dominated;
1205+ VEC (basic_block, heap) *dom_tree_walk;
1206+ unsigned int dom_tree_walk_index;
1207 VEC (basic_block, heap) *domby;
1208 unsigned int i,j;
1209 struct expr **index_map;
1210 struct expr *expr;
1211+ int *to_bb_head;
1212+ int *bb_size;
1213 int changed = 0;
1214
1215- sbitmap_vector_zero (hoist_exprs, last_basic_block);
1216-
1217 /* Compute a mapping from expression number (`bitmap_index') to
1218 hash table entry. */
1219
1220@@ -4276,28 +4376,98 @@
1221 for (expr = expr_hash_table.table[i]; expr != NULL; expr = expr->next_same_hash)
1222 index_map[expr->bitmap_index] = expr;
1223
1224+ /* Calculate sizes of basic blocks and note how far
1225+ each instruction is from the start of its block. We then use this
1226+ data to restrict distance an expression can travel. */
1227+
1228+ to_bb_head = XCNEWVEC (int, get_max_uid ());
1229+ bb_size = XCNEWVEC (int, last_basic_block);
1230+
1231+ FOR_EACH_BB (bb)
1232+ {
1233+ rtx insn;
1234+ int to_head;
1235+
1236+ to_head = 0;
1237+ FOR_BB_INSNS (bb, insn)
1238+ {
1239+ /* Don't count debug instructions to avoid them affecting
1240+ decision choices. */
1241+ if (NONDEBUG_INSN_P (insn))
1242+ to_bb_head[INSN_UID (insn)] = to_head++;
1243+ }
1244+
1245+ bb_size[bb->index] = to_head;
1246+ }
1247+
1248+ gcc_assert (EDGE_COUNT (ENTRY_BLOCK_PTR->succs) == 1
1249+ && (EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest
1250+ == ENTRY_BLOCK_PTR->next_bb));
1251+
1252+ dom_tree_walk = get_all_dominated_blocks (CDI_DOMINATORS,
1253+ ENTRY_BLOCK_PTR->next_bb);
1254+
1255 /* Walk over each basic block looking for potentially hoistable
1256 expressions, nothing gets hoisted from the entry block. */
1257- FOR_EACH_BB (bb)
1258+ for (dom_tree_walk_index = 0;
1259+ VEC_iterate (basic_block, dom_tree_walk, dom_tree_walk_index, bb);
1260+ dom_tree_walk_index++)
1261 {
1262- int found = 0;
1263- int insn_inserted_p;
1264-
1265- domby = get_dominated_by (CDI_DOMINATORS, bb);
1266+ domby = get_dominated_to_depth (CDI_DOMINATORS, bb, MAX_HOIST_DEPTH);
1267+
1268+ if (VEC_length (basic_block, domby) == 0)
1269+ continue;
1270+
1271 /* Examine each expression that is very busy at the exit of this
1272 block. These are the potentially hoistable expressions. */
1273 for (i = 0; i < hoist_vbeout[bb->index]->n_bits; i++)
1274 {
1275- int hoistable = 0;
1276-
1277- if (TEST_BIT (hoist_vbeout[bb->index], i)
1278- && TEST_BIT (transpout[bb->index], i))
1279+ if (TEST_BIT (hoist_vbeout[bb->index], i))
1280 {
1281+ /* Current expression. */
1282+ struct expr *expr = index_map[i];
1283+ /* Number of occurences of EXPR that can be hoisted to BB. */
1284+ int hoistable = 0;
1285+ /* Basic blocks that have occurences reachable from BB. */
1286+ bitmap_head _from_bbs, *from_bbs = &_from_bbs;
1287+ /* Occurences reachable from BB. */
1288+ VEC (occr_t, heap) *occrs_to_hoist = NULL;
1289+ /* We want to insert the expression into BB only once, so
1290+ note when we've inserted it. */
1291+ int insn_inserted_p;
1292+ occr_t occr;
1293+
1294+ bitmap_initialize (from_bbs, 0);
1295+
1296+ /* If an expression is computed in BB and is available at end of
1297+ BB, hoist all occurences dominated by BB to BB. */
1298+ if (TEST_BIT (comp[bb->index], i))
1299+ {
1300+ occr = find_occr_in_bb (expr->antic_occr, bb);
1301+
1302+ if (occr)
1303+ {
1304+ /* An occurence might've been already deleted
1305+ while processing a dominator of BB. */
1306+ if (occr->deleted_p)
1307+ gcc_assert (MAX_HOIST_DEPTH > 1);
1308+ else
1309+ {
1310+ gcc_assert (NONDEBUG_INSN_P (occr->insn));
1311+ hoistable++;
1312+ }
1313+ }
1314+ else
1315+ hoistable++;
1316+ }
1317+
1318 /* We've found a potentially hoistable expression, now
1319 we look at every block BB dominates to see if it
1320 computes the expression. */
1321 for (j = 0; VEC_iterate (basic_block, domby, j, dominated); j++)
1322 {
1323+ int max_distance;
1324+
1325 /* Ignore self dominance. */
1326 if (bb == dominated)
1327 continue;
1328@@ -4307,17 +4477,43 @@
1329 if (!TEST_BIT (antloc[dominated->index], i))
1330 continue;
1331
1332+ occr = find_occr_in_bb (expr->antic_occr, dominated);
1333+ gcc_assert (occr);
1334+
1335+ /* An occurence might've been already deleted
1336+ while processing a dominator of BB. */
1337+ if (occr->deleted_p)
1338+ {
1339+ gcc_assert (MAX_HOIST_DEPTH > 1);
1340+ continue;
1341+ }
1342+ gcc_assert (NONDEBUG_INSN_P (occr->insn));
1343+
1344+ max_distance = expr->max_distance;
1345+ if (max_distance > 0)
1346+ /* Adjust MAX_DISTANCE to account for the fact that
1347+ OCCR won't have to travel all of DOMINATED, but
1348+ only part of it. */
1349+ max_distance += (bb_size[dominated->index]
1350+ - to_bb_head[INSN_UID (occr->insn)]);
1351+
1352 /* Note if the expression would reach the dominated block
1353 unimpared if it was placed at the end of BB.
1354
1355 Keep track of how many times this expression is hoistable
1356 from a dominated block into BB. */
1357- if (hoist_expr_reaches_here_p (bb, i, dominated, NULL))
1358- hoistable++;
1359+ if (hoist_expr_reaches_here_p (bb, i, dominated, NULL,
1360+ max_distance, bb_size))
1361+ {
1362+ hoistable++;
1363+ VEC_safe_push (occr_t, heap,
1364+ occrs_to_hoist, occr);
1365+ bitmap_set_bit (from_bbs, dominated->index);
1366+ }
1367 }
1368
1369 /* If we found more than one hoistable occurrence of this
1370- expression, then note it in the bitmap of expressions to
1371+ expression, then note it in the vector of expressions to
1372 hoist. It makes no sense to hoist things which are computed
1373 in only one BB, and doing so tends to pessimize register
1374 allocation. One could increase this value to try harder
1375@@ -4326,91 +4522,80 @@
1376 the vast majority of hoistable expressions are only movable
1377 from two successors, so raising this threshold is likely
1378 to nullify any benefit we get from code hoisting. */
1379- if (hoistable > 1)
1380- {
1381- SET_BIT (hoist_exprs[bb->index], i);
1382- found = 1;
1383- }
1384- }
1385- }
1386- /* If we found nothing to hoist, then quit now. */
1387- if (! found)
1388- {
1389- VEC_free (basic_block, heap, domby);
1390- continue;
1391- }
1392-
1393- /* Loop over all the hoistable expressions. */
1394- for (i = 0; i < hoist_exprs[bb->index]->n_bits; i++)
1395- {
1396- /* We want to insert the expression into BB only once, so
1397- note when we've inserted it. */
1398- insn_inserted_p = 0;
1399-
1400- /* These tests should be the same as the tests above. */
1401- if (TEST_BIT (hoist_exprs[bb->index], i))
1402- {
1403- /* We've found a potentially hoistable expression, now
1404- we look at every block BB dominates to see if it
1405- computes the expression. */
1406- for (j = 0; VEC_iterate (basic_block, domby, j, dominated); j++)
1407- {
1408- /* Ignore self dominance. */
1409- if (bb == dominated)
1410- continue;
1411-
1412- /* We've found a dominated block, now see if it computes
1413- the busy expression and whether or not moving that
1414- expression to the "beginning" of that block is safe. */
1415- if (!TEST_BIT (antloc[dominated->index], i))
1416- continue;
1417-
1418- /* The expression is computed in the dominated block and
1419- it would be safe to compute it at the start of the
1420- dominated block. Now we have to determine if the
1421- expression would reach the dominated block if it was
1422- placed at the end of BB. */
1423- if (hoist_expr_reaches_here_p (bb, i, dominated, NULL))
1424- {
1425- struct expr *expr = index_map[i];
1426- struct occr *occr = expr->antic_occr;
1427- rtx insn;
1428- rtx set;
1429-
1430- /* Find the right occurrence of this expression. */
1431- while (BLOCK_FOR_INSN (occr->insn) != dominated && occr)
1432- occr = occr->next;
1433-
1434- gcc_assert (occr);
1435- insn = occr->insn;
1436- set = single_set (insn);
1437- gcc_assert (set);
1438-
1439- /* Create a pseudo-reg to store the result of reaching
1440- expressions into. Get the mode for the new pseudo
1441- from the mode of the original destination pseudo. */
1442- if (expr->reaching_reg == NULL)
1443- expr->reaching_reg
1444- = gen_reg_rtx_and_attrs (SET_DEST (set));
1445-
1446- gcse_emit_move_after (expr->reaching_reg, SET_DEST (set), insn);
1447- delete_insn (insn);
1448- occr->deleted_p = 1;
1449- changed = 1;
1450- gcse_subst_count++;
1451-
1452- if (!insn_inserted_p)
1453- {
1454- insert_insn_end_basic_block (index_map[i], bb, 0);
1455- insn_inserted_p = 1;
1456- }
1457- }
1458- }
1459+ if (hoistable > 1 && dbg_cnt (hoist_insn))
1460+ {
1461+ /* If (hoistable != VEC_length), then there is
1462+ an occurence of EXPR in BB itself. Don't waste
1463+ time looking for LCA in this case. */
1464+ if ((unsigned) hoistable
1465+ == VEC_length (occr_t, occrs_to_hoist))
1466+ {
1467+ basic_block lca;
1468+
1469+ lca = nearest_common_dominator_for_set (CDI_DOMINATORS,
1470+ from_bbs);
1471+ if (lca != bb)
1472+ /* Punt, it's better to hoist these occurences to
1473+ LCA. */
1474+ VEC_free (occr_t, heap, occrs_to_hoist);
1475+ }
1476+ }
1477+ else
1478+ /* Punt, no point hoisting a single occurence. */
1479+ VEC_free (occr_t, heap, occrs_to_hoist);
1480+
1481+ insn_inserted_p = 0;
1482+
1483+ /* Walk through occurences of I'th expressions we want
1484+ to hoist to BB and make the transformations. */
1485+ for (j = 0;
1486+ VEC_iterate (occr_t, occrs_to_hoist, j, occr);
1487+ j++)
1488+ {
1489+ rtx insn;
1490+ rtx set;
1491+
1492+ gcc_assert (!occr->deleted_p);
1493+
1494+ insn = occr->insn;
1495+ set = single_set (insn);
1496+ gcc_assert (set);
1497+
1498+ /* Create a pseudo-reg to store the result of reaching
1499+ expressions into. Get the mode for the new pseudo
1500+ from the mode of the original destination pseudo.
1501+
1502+ It is important to use new pseudos whenever we
1503+ emit a set. This will allow reload to use
1504+ rematerialization for such registers. */
1505+ if (!insn_inserted_p)
1506+ expr->reaching_reg
1507+ = gen_reg_rtx_and_attrs (SET_DEST (set));
1508+
1509+ gcse_emit_move_after (expr->reaching_reg, SET_DEST (set),
1510+ insn);
1511+ delete_insn (insn);
1512+ occr->deleted_p = 1;
1513+ changed = 1;
1514+ gcse_subst_count++;
1515+
1516+ if (!insn_inserted_p)
1517+ {
1518+ insert_insn_end_basic_block (expr, bb);
1519+ insn_inserted_p = 1;
1520+ }
1521+ }
1522+
1523+ VEC_free (occr_t, heap, occrs_to_hoist);
1524+ bitmap_clear (from_bbs);
1525 }
1526 }
1527 VEC_free (basic_block, heap, domby);
1528 }
1529
1530+ VEC_free (basic_block, heap, dom_tree_walk);
1531+ free (bb_size);
1532+ free (to_bb_head);
1533 free (index_map);
1534
1535 return changed;
1536@@ -4433,6 +4618,8 @@
1537 || is_too_expensive (_("GCSE disabled")))
1538 return 0;
1539
1540+ doing_code_hoisting_p = true;
1541+
1542 /* We need alias. */
1543 init_alias_analysis ();
1544
1545@@ -4468,6 +4655,8 @@
1546 gcse_subst_count, gcse_create_count);
1547 }
1548
1549+ doing_code_hoisting_p = false;
1550+
1551 return changed;
1552 }
1553
1554
1555=== modified file 'gcc/params.def'
1556--- old/gcc/params.def 2010-04-02 18:54:46 +0000
1557+++ new/gcc/params.def 2010-08-16 09:41:58 +0000
1558@@ -219,6 +219,29 @@
1559 "gcse-after-reload-critical-fraction",
1560 "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload",
1561 10, 0, 0)
1562+
1563+/* GCSE will use GCSE_COST_DISTANCE_RATION as a scaling factor
1564+ to calculate maximum distance for which an expression is allowed to move
1565+ from its rtx_cost. */
1566+DEFPARAM(PARAM_GCSE_COST_DISTANCE_RATIO,
1567+ "gcse-cost-distance-ratio",
1568+ "Scaling factor in calculation of maximum distance an expression can be moved by GCSE optimizations",
1569+ 10, 0, 0)
1570+/* GCSE won't restrict distance for which an expression with rtx_cost greater
1571+ than COSTS_N_INSN(GCSE_UNRESTRICTED_COST) is allowed to move. */
1572+DEFPARAM(PARAM_GCSE_UNRESTRICTED_COST,
1573+ "gcse-unrestricted-cost",
1574+ "Cost at which GCSE optimizations will not constraint the distance an expression can travel",
1575+ 3, 0, 0)
1576+
1577+/* How deep from a given basic block the dominator tree should be searched
1578+ for expressions to hoist to the block. The value of 0 will avoid limiting
1579+ the search. */
1580+DEFPARAM(PARAM_MAX_HOIST_DEPTH,
1581+ "max-hoist-depth",
1582+ "Maximum depth of search in the dominator tree for expressions to hoist",
1583+ 30, 0, 0)
1584+
1585 /* This parameter limits the number of insns in a loop that will be unrolled,
1586 and by how much the loop is unrolled.
1587
1588
1589=== modified file 'gcc/params.h'
1590--- old/gcc/params.h 2009-12-01 19:12:29 +0000
1591+++ new/gcc/params.h 2010-08-16 09:41:58 +0000
1592@@ -125,6 +125,12 @@
1593 PARAM_VALUE (PARAM_GCSE_AFTER_RELOAD_PARTIAL_FRACTION)
1594 #define GCSE_AFTER_RELOAD_CRITICAL_FRACTION \
1595 PARAM_VALUE (PARAM_GCSE_AFTER_RELOAD_CRITICAL_FRACTION)
1596+#define GCSE_COST_DISTANCE_RATIO \
1597+ PARAM_VALUE (PARAM_GCSE_COST_DISTANCE_RATIO)
1598+#define GCSE_UNRESTRICTED_COST \
1599+ PARAM_VALUE (PARAM_GCSE_UNRESTRICTED_COST)
1600+#define MAX_HOIST_DEPTH \
1601+ PARAM_VALUE (PARAM_MAX_HOIST_DEPTH)
1602 #define MAX_UNROLLED_INSNS \
1603 PARAM_VALUE (PARAM_MAX_UNROLLED_INSNS)
1604 #define MAX_SMS_LOOP_NUMBER \
1605
1606=== added file 'gcc/testsuite/gcc.dg/pr45101.c'
1607--- old/gcc/testsuite/gcc.dg/pr45101.c 1970-01-01 00:00:00 +0000
1608+++ new/gcc/testsuite/gcc.dg/pr45101.c 2010-08-16 09:41:58 +0000
1609@@ -0,0 +1,15 @@
1610+/* PR rtl-optimization/45101 */
1611+/* { dg-do compile } */
1612+/* { dg-options "-O2 -fgcse -fgcse-las" } */
1613+
1614+struct
1615+{
1616+ int i;
1617+} *s;
1618+
1619+extern void bar (void);
1620+
1621+void foo ()
1622+{
1623+ !s ? s->i++ : bar ();
1624+}
1625
1626=== added file 'gcc/testsuite/gcc.dg/pr45105.c'
1627--- old/gcc/testsuite/gcc.dg/pr45105.c 1970-01-01 00:00:00 +0000
1628+++ new/gcc/testsuite/gcc.dg/pr45105.c 2010-08-16 09:41:58 +0000
1629@@ -0,0 +1,27 @@
1630+/* PR debug/45105 */
1631+/* { dg-do compile } */
1632+/* { dg-options "-Os -fcompare-debug" } */
1633+
1634+extern int *baz (int *, int *);
1635+
1636+void
1637+bar (int *p1, int *p2)
1638+{
1639+ int n = *baz (0, 0);
1640+ p1[n] = p2[n];
1641+}
1642+
1643+void
1644+foo (int *p, int l)
1645+{
1646+ int a1[32];
1647+ int a2[32];
1648+ baz (a1, a2);
1649+ while (l)
1650+ {
1651+ if (l & 1)
1652+ p = baz (a2, p);
1653+ l--;
1654+ bar (a1, a2);
1655+ }
1656+}
1657
1658=== added file 'gcc/testsuite/gcc.dg/pr45107.c'
1659--- old/gcc/testsuite/gcc.dg/pr45107.c 1970-01-01 00:00:00 +0000
1660+++ new/gcc/testsuite/gcc.dg/pr45107.c 2010-08-16 09:41:58 +0000
1661@@ -0,0 +1,13 @@
1662+/* PR rtl-optimization/45107 */
1663+/* { dg-do compile } */
1664+/* { dg-options "-Os -fgcse-las" } */
1665+
1666+extern void bar(int *);
1667+
1668+int foo (int *p)
1669+{
1670+ int i = *p;
1671+ if (i != 1)
1672+ bar(&i);
1673+ *p = i;
1674+}
1675
1676=== added file 'gcc/testsuite/gcc.target/arm/pr40956.c'
1677--- old/gcc/testsuite/gcc.target/arm/pr40956.c 1970-01-01 00:00:00 +0000
1678+++ new/gcc/testsuite/gcc.target/arm/pr40956.c 2010-08-16 09:41:58 +0000
1679@@ -0,0 +1,14 @@
1680+/* { dg-options "-mthumb -Os -fpic -march=armv5te" } */
1681+/* { dg-require-effective-target arm_thumb1_ok } */
1682+/* { dg-require-effective-target fpic } */
1683+/* Make sure the constant "0" is loaded into register only once. */
1684+/* { dg-final { scan-assembler-times "mov\[\\t \]*r., #0" 1 } } */
1685+
1686+int foo(int p, int* q)
1687+{
1688+ if (p!=9)
1689+ *q = 0;
1690+ else
1691+ *(q+1) = 0;
1692+ return 3;
1693+}
1694
1695=== added file 'gcc/testsuite/gcc.target/arm/pr42495.c'
1696--- old/gcc/testsuite/gcc.target/arm/pr42495.c 1970-01-01 00:00:00 +0000
1697+++ new/gcc/testsuite/gcc.target/arm/pr42495.c 2010-08-16 09:41:58 +0000
1698@@ -0,0 +1,31 @@
1699+/* { dg-options "-mthumb -Os -fpic -march=armv5te -fdump-rtl-hoist" } */
1700+/* { dg-require-effective-target arm_thumb1_ok } */
1701+/* { dg-require-effective-target fpic } */
1702+/* Make sure all calculations of gObj's address get hoisted to one location. */
1703+/* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" } } */
1704+
1705+struct st_a {
1706+ int data;
1707+};
1708+
1709+struct st_b {
1710+ struct st_a *p_a;
1711+ struct st_b *next;
1712+};
1713+
1714+extern struct st_b gObj;
1715+extern void foo(int, struct st_b*);
1716+
1717+int goo(struct st_b * obj) {
1718+ struct st_a *pa;
1719+ if (gObj.p_a->data != 0) {
1720+ foo(gObj.p_a->data, obj);
1721+ }
1722+ pa = obj->p_a;
1723+ if (pa == 0) {
1724+ return 0;
1725+ } else if (pa == gObj.p_a) {
1726+ return 0;
1727+ }
1728+ return pa->data;
1729+}
1730
1731=== added file 'gcc/testsuite/gcc.target/arm/pr42574.c'
1732--- old/gcc/testsuite/gcc.target/arm/pr42574.c 1970-01-01 00:00:00 +0000
1733+++ new/gcc/testsuite/gcc.target/arm/pr42574.c 2010-08-16 09:41:58 +0000
1734@@ -0,0 +1,24 @@
1735+/* { dg-options "-mthumb -Os -fpic -march=armv5te" } */
1736+/* { dg-require-effective-target arm_thumb1_ok } */
1737+/* { dg-require-effective-target fpic } */
1738+/* Make sure the address of glob.c is calculated only once and using
1739+ a logical shift for the offset (200<<1). */
1740+/* { dg-final { scan-assembler-times "lsl" 1 } } */
1741+
1742+struct A {
1743+ char a[400];
1744+ float* c;
1745+};
1746+struct A glob;
1747+void func();
1748+void func1(float*);
1749+int func2(float*, int*);
1750+void func3(float*);
1751+
1752+void test(int *p) {
1753+ func1(glob.c);
1754+ if (func2(glob.c, p)) {
1755+ func();
1756+ }
1757+ func3(glob.c);
1758+}
1759
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99361.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99361.patch
new file mode 100644
index 000000000..db9e63917
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99361.patch
@@ -0,0 +1,17586 @@
12010-08-04 Julian Brown <julian@codesourcery.com>
2
3 gcc/
4 * config/arm/neon-testgen.ml (regexps): Allow any characters
5 in comments after assembly instructions.
6
7 gcc/testsuite/
8 * gcc.target/arm/neon/vfp-shift-a2t2.c: Allow any characters in
9 comments after assembly instructions.
10 * gcc.target/arm/neon/v*.c: Regenerate.
11
12 2010-07-28 Maxim Kuvyrkov <maxim@codesourcery.com>
13
14 Backport code hoisting improvements from mainline:
15
16=== modified file 'gcc/config/arm/neon-testgen.ml'
17--- old/gcc/config/arm/neon-testgen.ml 2010-07-29 15:38:15 +0000
18+++ new/gcc/config/arm/neon-testgen.ml 2010-08-20 13:27:11 +0000
19@@ -257,7 +257,7 @@
20 intrinsic expands to. Watch out for any writeback character and
21 comments after the instruction. *)
22 let regexps = List.map (fun regexp -> insn_regexp ^ "\\[ \t\\]+" ^ regexp ^
23- "!?\\(\\[ \t\\]+@\\[a-zA-Z0-9 \\]+\\)?\\n")
24+ "!?\\(\\[ \t\\]+@.*\\)?\\n")
25 (analyze_all_shapes features shape analyze_shape)
26 in
27 (* Emit file and function prologues. *)
28
29=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c'
30--- old/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c 2010-07-29 15:38:15 +0000
31+++ new/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c 2010-08-20 13:27:11 +0000
32@@ -17,5 +17,5 @@
33 out_int8x8_t = vraddhn_s16 (arg0_int16x8_t, arg1_int16x8_t);
34 }
35
36-/* { dg-final { scan-assembler "vraddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
37+/* { dg-final { scan-assembler "vraddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
38 /* { dg-final { cleanup-saved-temps } } */
39
40=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c'
41--- old/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c 2010-07-29 15:38:15 +0000
42+++ new/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c 2010-08-20 13:27:11 +0000
43@@ -17,5 +17,5 @@
44 out_int16x4_t = vraddhn_s32 (arg0_int32x4_t, arg1_int32x4_t);
45 }
46
47-/* { dg-final { scan-assembler "vraddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
48+/* { dg-final { scan-assembler "vraddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
49 /* { dg-final { cleanup-saved-temps } } */
50
51=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c'
52--- old/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c 2010-07-29 15:38:15 +0000
53+++ new/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c 2010-08-20 13:27:11 +0000
54@@ -17,5 +17,5 @@
55 out_int32x2_t = vraddhn_s64 (arg0_int64x2_t, arg1_int64x2_t);
56 }
57
58-/* { dg-final { scan-assembler "vraddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
59+/* { dg-final { scan-assembler "vraddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
60 /* { dg-final { cleanup-saved-temps } } */
61
62=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c'
63--- old/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c 2010-07-29 15:38:15 +0000
64+++ new/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c 2010-08-20 13:27:11 +0000
65@@ -17,5 +17,5 @@
66 out_uint8x8_t = vraddhn_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
67 }
68
69-/* { dg-final { scan-assembler "vraddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
70+/* { dg-final { scan-assembler "vraddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
71 /* { dg-final { cleanup-saved-temps } } */
72
73=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c'
74--- old/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c 2010-07-29 15:38:15 +0000
75+++ new/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c 2010-08-20 13:27:11 +0000
76@@ -17,5 +17,5 @@
77 out_uint16x4_t = vraddhn_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
78 }
79
80-/* { dg-final { scan-assembler "vraddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
81+/* { dg-final { scan-assembler "vraddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
82 /* { dg-final { cleanup-saved-temps } } */
83
84=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c'
85--- old/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c 2010-07-29 15:38:15 +0000
86+++ new/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c 2010-08-20 13:27:11 +0000
87@@ -17,5 +17,5 @@
88 out_uint32x2_t = vraddhn_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
89 }
90
91-/* { dg-final { scan-assembler "vraddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
92+/* { dg-final { scan-assembler "vraddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
93 /* { dg-final { cleanup-saved-temps } } */
94
95=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c'
96--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c 2010-07-29 15:38:15 +0000
97+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c 2010-08-20 13:27:11 +0000
98@@ -17,5 +17,5 @@
99 out_int16x8_t = vrhaddq_s16 (arg0_int16x8_t, arg1_int16x8_t);
100 }
101
102-/* { dg-final { scan-assembler "vrhadd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
103+/* { dg-final { scan-assembler "vrhadd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
104 /* { dg-final { cleanup-saved-temps } } */
105
106=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c'
107--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c 2010-07-29 15:38:15 +0000
108+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c 2010-08-20 13:27:11 +0000
109@@ -17,5 +17,5 @@
110 out_int32x4_t = vrhaddq_s32 (arg0_int32x4_t, arg1_int32x4_t);
111 }
112
113-/* { dg-final { scan-assembler "vrhadd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
114+/* { dg-final { scan-assembler "vrhadd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
115 /* { dg-final { cleanup-saved-temps } } */
116
117=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c'
118--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c 2010-07-29 15:38:15 +0000
119+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c 2010-08-20 13:27:11 +0000
120@@ -17,5 +17,5 @@
121 out_int8x16_t = vrhaddq_s8 (arg0_int8x16_t, arg1_int8x16_t);
122 }
123
124-/* { dg-final { scan-assembler "vrhadd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
125+/* { dg-final { scan-assembler "vrhadd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
126 /* { dg-final { cleanup-saved-temps } } */
127
128=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c'
129--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c 2010-07-29 15:38:15 +0000
130+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c 2010-08-20 13:27:11 +0000
131@@ -17,5 +17,5 @@
132 out_uint16x8_t = vrhaddq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
133 }
134
135-/* { dg-final { scan-assembler "vrhadd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
136+/* { dg-final { scan-assembler "vrhadd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
137 /* { dg-final { cleanup-saved-temps } } */
138
139=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c'
140--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c 2010-07-29 15:38:15 +0000
141+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c 2010-08-20 13:27:11 +0000
142@@ -17,5 +17,5 @@
143 out_uint32x4_t = vrhaddq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
144 }
145
146-/* { dg-final { scan-assembler "vrhadd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
147+/* { dg-final { scan-assembler "vrhadd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
148 /* { dg-final { cleanup-saved-temps } } */
149
150=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c'
151--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c 2010-07-29 15:38:15 +0000
152+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c 2010-08-20 13:27:11 +0000
153@@ -17,5 +17,5 @@
154 out_uint8x16_t = vrhaddq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
155 }
156
157-/* { dg-final { scan-assembler "vrhadd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
158+/* { dg-final { scan-assembler "vrhadd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
159 /* { dg-final { cleanup-saved-temps } } */
160
161=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhadds16.c'
162--- old/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c 2010-07-29 15:38:15 +0000
163+++ new/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c 2010-08-20 13:27:11 +0000
164@@ -17,5 +17,5 @@
165 out_int16x4_t = vrhadd_s16 (arg0_int16x4_t, arg1_int16x4_t);
166 }
167
168-/* { dg-final { scan-assembler "vrhadd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
169+/* { dg-final { scan-assembler "vrhadd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
170 /* { dg-final { cleanup-saved-temps } } */
171
172=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhadds32.c'
173--- old/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c 2010-07-29 15:38:15 +0000
174+++ new/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c 2010-08-20 13:27:11 +0000
175@@ -17,5 +17,5 @@
176 out_int32x2_t = vrhadd_s32 (arg0_int32x2_t, arg1_int32x2_t);
177 }
178
179-/* { dg-final { scan-assembler "vrhadd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
180+/* { dg-final { scan-assembler "vrhadd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
181 /* { dg-final { cleanup-saved-temps } } */
182
183=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhadds8.c'
184--- old/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c 2010-07-29 15:38:15 +0000
185+++ new/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c 2010-08-20 13:27:11 +0000
186@@ -17,5 +17,5 @@
187 out_int8x8_t = vrhadd_s8 (arg0_int8x8_t, arg1_int8x8_t);
188 }
189
190-/* { dg-final { scan-assembler "vrhadd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
191+/* { dg-final { scan-assembler "vrhadd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
192 /* { dg-final { cleanup-saved-temps } } */
193
194=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c'
195--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c 2010-07-29 15:38:15 +0000
196+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c 2010-08-20 13:27:11 +0000
197@@ -17,5 +17,5 @@
198 out_uint16x4_t = vrhadd_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
199 }
200
201-/* { dg-final { scan-assembler "vrhadd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
202+/* { dg-final { scan-assembler "vrhadd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
203 /* { dg-final { cleanup-saved-temps } } */
204
205=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c'
206--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c 2010-07-29 15:38:15 +0000
207+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c 2010-08-20 13:27:11 +0000
208@@ -17,5 +17,5 @@
209 out_uint32x2_t = vrhadd_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
210 }
211
212-/* { dg-final { scan-assembler "vrhadd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
213+/* { dg-final { scan-assembler "vrhadd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
214 /* { dg-final { cleanup-saved-temps } } */
215
216=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c'
217--- old/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c 2010-07-29 15:38:15 +0000
218+++ new/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c 2010-08-20 13:27:11 +0000
219@@ -17,5 +17,5 @@
220 out_uint8x8_t = vrhadd_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
221 }
222
223-/* { dg-final { scan-assembler "vrhadd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
224+/* { dg-final { scan-assembler "vrhadd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
225 /* { dg-final { cleanup-saved-temps } } */
226
227=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c'
228--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c 2010-07-29 15:38:15 +0000
229+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c 2010-08-20 13:27:11 +0000
230@@ -17,5 +17,5 @@
231 out_int16x8_t = vrshlq_s16 (arg0_int16x8_t, arg1_int16x8_t);
232 }
233
234-/* { dg-final { scan-assembler "vrshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
235+/* { dg-final { scan-assembler "vrshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
236 /* { dg-final { cleanup-saved-temps } } */
237
238=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c'
239--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c 2010-07-29 15:38:15 +0000
240+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c 2010-08-20 13:27:11 +0000
241@@ -17,5 +17,5 @@
242 out_int32x4_t = vrshlq_s32 (arg0_int32x4_t, arg1_int32x4_t);
243 }
244
245-/* { dg-final { scan-assembler "vrshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
246+/* { dg-final { scan-assembler "vrshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
247 /* { dg-final { cleanup-saved-temps } } */
248
249=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c'
250--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c 2010-07-29 15:38:15 +0000
251+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c 2010-08-20 13:27:11 +0000
252@@ -17,5 +17,5 @@
253 out_int64x2_t = vrshlq_s64 (arg0_int64x2_t, arg1_int64x2_t);
254 }
255
256-/* { dg-final { scan-assembler "vrshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
257+/* { dg-final { scan-assembler "vrshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
258 /* { dg-final { cleanup-saved-temps } } */
259
260=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c'
261--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c 2010-07-29 15:38:15 +0000
262+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c 2010-08-20 13:27:11 +0000
263@@ -17,5 +17,5 @@
264 out_int8x16_t = vrshlq_s8 (arg0_int8x16_t, arg1_int8x16_t);
265 }
266
267-/* { dg-final { scan-assembler "vrshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
268+/* { dg-final { scan-assembler "vrshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
269 /* { dg-final { cleanup-saved-temps } } */
270
271=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c'
272--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c 2010-07-29 15:38:15 +0000
273+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c 2010-08-20 13:27:11 +0000
274@@ -17,5 +17,5 @@
275 out_uint16x8_t = vrshlq_u16 (arg0_uint16x8_t, arg1_int16x8_t);
276 }
277
278-/* { dg-final { scan-assembler "vrshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
279+/* { dg-final { scan-assembler "vrshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
280 /* { dg-final { cleanup-saved-temps } } */
281
282=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c'
283--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c 2010-07-29 15:38:15 +0000
284+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c 2010-08-20 13:27:11 +0000
285@@ -17,5 +17,5 @@
286 out_uint32x4_t = vrshlq_u32 (arg0_uint32x4_t, arg1_int32x4_t);
287 }
288
289-/* { dg-final { scan-assembler "vrshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
290+/* { dg-final { scan-assembler "vrshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
291 /* { dg-final { cleanup-saved-temps } } */
292
293=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c'
294--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c 2010-07-29 15:38:15 +0000
295+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c 2010-08-20 13:27:11 +0000
296@@ -17,5 +17,5 @@
297 out_uint64x2_t = vrshlq_u64 (arg0_uint64x2_t, arg1_int64x2_t);
298 }
299
300-/* { dg-final { scan-assembler "vrshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
301+/* { dg-final { scan-assembler "vrshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
302 /* { dg-final { cleanup-saved-temps } } */
303
304=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c'
305--- old/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c 2010-07-29 15:38:15 +0000
306+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c 2010-08-20 13:27:11 +0000
307@@ -17,5 +17,5 @@
308 out_uint8x16_t = vrshlq_u8 (arg0_uint8x16_t, arg1_int8x16_t);
309 }
310
311-/* { dg-final { scan-assembler "vrshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
312+/* { dg-final { scan-assembler "vrshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
313 /* { dg-final { cleanup-saved-temps } } */
314
315=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshls16.c'
316--- old/gcc/testsuite/gcc.target/arm/neon/vRshls16.c 2010-07-29 15:38:15 +0000
317+++ new/gcc/testsuite/gcc.target/arm/neon/vRshls16.c 2010-08-20 13:27:11 +0000
318@@ -17,5 +17,5 @@
319 out_int16x4_t = vrshl_s16 (arg0_int16x4_t, arg1_int16x4_t);
320 }
321
322-/* { dg-final { scan-assembler "vrshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
323+/* { dg-final { scan-assembler "vrshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
324 /* { dg-final { cleanup-saved-temps } } */
325
326=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshls32.c'
327--- old/gcc/testsuite/gcc.target/arm/neon/vRshls32.c 2010-07-29 15:38:15 +0000
328+++ new/gcc/testsuite/gcc.target/arm/neon/vRshls32.c 2010-08-20 13:27:11 +0000
329@@ -17,5 +17,5 @@
330 out_int32x2_t = vrshl_s32 (arg0_int32x2_t, arg1_int32x2_t);
331 }
332
333-/* { dg-final { scan-assembler "vrshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
334+/* { dg-final { scan-assembler "vrshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
335 /* { dg-final { cleanup-saved-temps } } */
336
337=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshls64.c'
338--- old/gcc/testsuite/gcc.target/arm/neon/vRshls64.c 2010-07-29 15:38:15 +0000
339+++ new/gcc/testsuite/gcc.target/arm/neon/vRshls64.c 2010-08-20 13:27:11 +0000
340@@ -17,5 +17,5 @@
341 out_int64x1_t = vrshl_s64 (arg0_int64x1_t, arg1_int64x1_t);
342 }
343
344-/* { dg-final { scan-assembler "vrshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
345+/* { dg-final { scan-assembler "vrshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
346 /* { dg-final { cleanup-saved-temps } } */
347
348=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshls8.c'
349--- old/gcc/testsuite/gcc.target/arm/neon/vRshls8.c 2010-07-29 15:38:15 +0000
350+++ new/gcc/testsuite/gcc.target/arm/neon/vRshls8.c 2010-08-20 13:27:11 +0000
351@@ -17,5 +17,5 @@
352 out_int8x8_t = vrshl_s8 (arg0_int8x8_t, arg1_int8x8_t);
353 }
354
355-/* { dg-final { scan-assembler "vrshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
356+/* { dg-final { scan-assembler "vrshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
357 /* { dg-final { cleanup-saved-temps } } */
358
359=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlu16.c'
360--- old/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c 2010-07-29 15:38:15 +0000
361+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c 2010-08-20 13:27:11 +0000
362@@ -17,5 +17,5 @@
363 out_uint16x4_t = vrshl_u16 (arg0_uint16x4_t, arg1_int16x4_t);
364 }
365
366-/* { dg-final { scan-assembler "vrshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
367+/* { dg-final { scan-assembler "vrshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
368 /* { dg-final { cleanup-saved-temps } } */
369
370=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlu32.c'
371--- old/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c 2010-07-29 15:38:15 +0000
372+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c 2010-08-20 13:27:11 +0000
373@@ -17,5 +17,5 @@
374 out_uint32x2_t = vrshl_u32 (arg0_uint32x2_t, arg1_int32x2_t);
375 }
376
377-/* { dg-final { scan-assembler "vrshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
378+/* { dg-final { scan-assembler "vrshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
379 /* { dg-final { cleanup-saved-temps } } */
380
381=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlu64.c'
382--- old/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c 2010-07-29 15:38:15 +0000
383+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c 2010-08-20 13:27:11 +0000
384@@ -17,5 +17,5 @@
385 out_uint64x1_t = vrshl_u64 (arg0_uint64x1_t, arg1_int64x1_t);
386 }
387
388-/* { dg-final { scan-assembler "vrshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
389+/* { dg-final { scan-assembler "vrshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
390 /* { dg-final { cleanup-saved-temps } } */
391
392=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshlu8.c'
393--- old/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c 2010-07-29 15:38:15 +0000
394+++ new/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c 2010-08-20 13:27:11 +0000
395@@ -17,5 +17,5 @@
396 out_uint8x8_t = vrshl_u8 (arg0_uint8x8_t, arg1_int8x8_t);
397 }
398
399-/* { dg-final { scan-assembler "vrshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
400+/* { dg-final { scan-assembler "vrshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
401 /* { dg-final { cleanup-saved-temps } } */
402
403=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c'
404--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c 2010-07-29 15:38:15 +0000
405+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c 2010-08-20 13:27:11 +0000
406@@ -16,5 +16,5 @@
407 out_int16x8_t = vrshrq_n_s16 (arg0_int16x8_t, 1);
408 }
409
410-/* { dg-final { scan-assembler "vrshr\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
411+/* { dg-final { scan-assembler "vrshr\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
412 /* { dg-final { cleanup-saved-temps } } */
413
414=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c'
415--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c 2010-07-29 15:38:15 +0000
416+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c 2010-08-20 13:27:11 +0000
417@@ -16,5 +16,5 @@
418 out_int32x4_t = vrshrq_n_s32 (arg0_int32x4_t, 1);
419 }
420
421-/* { dg-final { scan-assembler "vrshr\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
422+/* { dg-final { scan-assembler "vrshr\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
423 /* { dg-final { cleanup-saved-temps } } */
424
425=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c'
426--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c 2010-07-29 15:38:15 +0000
427+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c 2010-08-20 13:27:11 +0000
428@@ -16,5 +16,5 @@
429 out_int64x2_t = vrshrq_n_s64 (arg0_int64x2_t, 1);
430 }
431
432-/* { dg-final { scan-assembler "vrshr\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
433+/* { dg-final { scan-assembler "vrshr\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
434 /* { dg-final { cleanup-saved-temps } } */
435
436=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c'
437--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c 2010-07-29 15:38:15 +0000
438+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c 2010-08-20 13:27:11 +0000
439@@ -16,5 +16,5 @@
440 out_int8x16_t = vrshrq_n_s8 (arg0_int8x16_t, 1);
441 }
442
443-/* { dg-final { scan-assembler "vrshr\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
444+/* { dg-final { scan-assembler "vrshr\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
445 /* { dg-final { cleanup-saved-temps } } */
446
447=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c'
448--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c 2010-07-29 15:38:15 +0000
449+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c 2010-08-20 13:27:11 +0000
450@@ -16,5 +16,5 @@
451 out_uint16x8_t = vrshrq_n_u16 (arg0_uint16x8_t, 1);
452 }
453
454-/* { dg-final { scan-assembler "vrshr\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
455+/* { dg-final { scan-assembler "vrshr\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
456 /* { dg-final { cleanup-saved-temps } } */
457
458=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c'
459--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c 2010-07-29 15:38:15 +0000
460+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c 2010-08-20 13:27:11 +0000
461@@ -16,5 +16,5 @@
462 out_uint32x4_t = vrshrq_n_u32 (arg0_uint32x4_t, 1);
463 }
464
465-/* { dg-final { scan-assembler "vrshr\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
466+/* { dg-final { scan-assembler "vrshr\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
467 /* { dg-final { cleanup-saved-temps } } */
468
469=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c'
470--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c 2010-07-29 15:38:15 +0000
471+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c 2010-08-20 13:27:11 +0000
472@@ -16,5 +16,5 @@
473 out_uint64x2_t = vrshrq_n_u64 (arg0_uint64x2_t, 1);
474 }
475
476-/* { dg-final { scan-assembler "vrshr\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
477+/* { dg-final { scan-assembler "vrshr\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
478 /* { dg-final { cleanup-saved-temps } } */
479
480=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c'
481--- old/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c 2010-07-29 15:38:15 +0000
482+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c 2010-08-20 13:27:11 +0000
483@@ -16,5 +16,5 @@
484 out_uint8x16_t = vrshrq_n_u8 (arg0_uint8x16_t, 1);
485 }
486
487-/* { dg-final { scan-assembler "vrshr\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
488+/* { dg-final { scan-assembler "vrshr\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
489 /* { dg-final { cleanup-saved-temps } } */
490
491=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c'
492--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c 2010-07-29 15:38:15 +0000
493+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c 2010-08-20 13:27:11 +0000
494@@ -16,5 +16,5 @@
495 out_int16x4_t = vrshr_n_s16 (arg0_int16x4_t, 1);
496 }
497
498-/* { dg-final { scan-assembler "vrshr\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
499+/* { dg-final { scan-assembler "vrshr\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
500 /* { dg-final { cleanup-saved-temps } } */
501
502=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c'
503--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c 2010-07-29 15:38:15 +0000
504+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c 2010-08-20 13:27:11 +0000
505@@ -16,5 +16,5 @@
506 out_int32x2_t = vrshr_n_s32 (arg0_int32x2_t, 1);
507 }
508
509-/* { dg-final { scan-assembler "vrshr\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
510+/* { dg-final { scan-assembler "vrshr\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
511 /* { dg-final { cleanup-saved-temps } } */
512
513=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c'
514--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c 2010-07-29 15:38:15 +0000
515+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c 2010-08-20 13:27:11 +0000
516@@ -16,5 +16,5 @@
517 out_int64x1_t = vrshr_n_s64 (arg0_int64x1_t, 1);
518 }
519
520-/* { dg-final { scan-assembler "vrshr\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
521+/* { dg-final { scan-assembler "vrshr\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
522 /* { dg-final { cleanup-saved-temps } } */
523
524=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c'
525--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c 2010-07-29 15:38:15 +0000
526+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c 2010-08-20 13:27:11 +0000
527@@ -16,5 +16,5 @@
528 out_int8x8_t = vrshr_n_s8 (arg0_int8x8_t, 1);
529 }
530
531-/* { dg-final { scan-assembler "vrshr\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
532+/* { dg-final { scan-assembler "vrshr\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
533 /* { dg-final { cleanup-saved-temps } } */
534
535=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c'
536--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c 2010-07-29 15:38:15 +0000
537+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c 2010-08-20 13:27:11 +0000
538@@ -16,5 +16,5 @@
539 out_uint16x4_t = vrshr_n_u16 (arg0_uint16x4_t, 1);
540 }
541
542-/* { dg-final { scan-assembler "vrshr\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
543+/* { dg-final { scan-assembler "vrshr\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
544 /* { dg-final { cleanup-saved-temps } } */
545
546=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c'
547--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c 2010-07-29 15:38:15 +0000
548+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c 2010-08-20 13:27:11 +0000
549@@ -16,5 +16,5 @@
550 out_uint32x2_t = vrshr_n_u32 (arg0_uint32x2_t, 1);
551 }
552
553-/* { dg-final { scan-assembler "vrshr\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
554+/* { dg-final { scan-assembler "vrshr\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
555 /* { dg-final { cleanup-saved-temps } } */
556
557=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c'
558--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c 2010-07-29 15:38:15 +0000
559+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c 2010-08-20 13:27:11 +0000
560@@ -16,5 +16,5 @@
561 out_uint64x1_t = vrshr_n_u64 (arg0_uint64x1_t, 1);
562 }
563
564-/* { dg-final { scan-assembler "vrshr\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
565+/* { dg-final { scan-assembler "vrshr\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
566 /* { dg-final { cleanup-saved-temps } } */
567
568=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c'
569--- old/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c 2010-07-29 15:38:15 +0000
570+++ new/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c 2010-08-20 13:27:11 +0000
571@@ -16,5 +16,5 @@
572 out_uint8x8_t = vrshr_n_u8 (arg0_uint8x8_t, 1);
573 }
574
575-/* { dg-final { scan-assembler "vrshr\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
576+/* { dg-final { scan-assembler "vrshr\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
577 /* { dg-final { cleanup-saved-temps } } */
578
579=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c'
580--- old/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c 2010-07-29 15:38:15 +0000
581+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c 2010-08-20 13:27:11 +0000
582@@ -16,5 +16,5 @@
583 out_int8x8_t = vrshrn_n_s16 (arg0_int16x8_t, 1);
584 }
585
586-/* { dg-final { scan-assembler "vrshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
587+/* { dg-final { scan-assembler "vrshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
588 /* { dg-final { cleanup-saved-temps } } */
589
590=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c'
591--- old/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c 2010-07-29 15:38:15 +0000
592+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c 2010-08-20 13:27:11 +0000
593@@ -16,5 +16,5 @@
594 out_int16x4_t = vrshrn_n_s32 (arg0_int32x4_t, 1);
595 }
596
597-/* { dg-final { scan-assembler "vrshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
598+/* { dg-final { scan-assembler "vrshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
599 /* { dg-final { cleanup-saved-temps } } */
600
601=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c'
602--- old/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c 2010-07-29 15:38:15 +0000
603+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c 2010-08-20 13:27:11 +0000
604@@ -16,5 +16,5 @@
605 out_int32x2_t = vrshrn_n_s64 (arg0_int64x2_t, 1);
606 }
607
608-/* { dg-final { scan-assembler "vrshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
609+/* { dg-final { scan-assembler "vrshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
610 /* { dg-final { cleanup-saved-temps } } */
611
612=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c'
613--- old/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c 2010-07-29 15:38:15 +0000
614+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c 2010-08-20 13:27:11 +0000
615@@ -16,5 +16,5 @@
616 out_uint8x8_t = vrshrn_n_u16 (arg0_uint16x8_t, 1);
617 }
618
619-/* { dg-final { scan-assembler "vrshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
620+/* { dg-final { scan-assembler "vrshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
621 /* { dg-final { cleanup-saved-temps } } */
622
623=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c'
624--- old/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c 2010-07-29 15:38:15 +0000
625+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c 2010-08-20 13:27:11 +0000
626@@ -16,5 +16,5 @@
627 out_uint16x4_t = vrshrn_n_u32 (arg0_uint32x4_t, 1);
628 }
629
630-/* { dg-final { scan-assembler "vrshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
631+/* { dg-final { scan-assembler "vrshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
632 /* { dg-final { cleanup-saved-temps } } */
633
634=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c'
635--- old/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c 2010-07-29 15:38:15 +0000
636+++ new/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c 2010-08-20 13:27:11 +0000
637@@ -16,5 +16,5 @@
638 out_uint32x2_t = vrshrn_n_u64 (arg0_uint64x2_t, 1);
639 }
640
641-/* { dg-final { scan-assembler "vrshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
642+/* { dg-final { scan-assembler "vrshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
643 /* { dg-final { cleanup-saved-temps } } */
644
645=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c'
646--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c 2010-07-29 15:38:15 +0000
647+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c 2010-08-20 13:27:11 +0000
648@@ -17,5 +17,5 @@
649 out_int16x8_t = vrsraq_n_s16 (arg0_int16x8_t, arg1_int16x8_t, 1);
650 }
651
652-/* { dg-final { scan-assembler "vrsra\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
653+/* { dg-final { scan-assembler "vrsra\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
654 /* { dg-final { cleanup-saved-temps } } */
655
656=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c'
657--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c 2010-07-29 15:38:15 +0000
658+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c 2010-08-20 13:27:11 +0000
659@@ -17,5 +17,5 @@
660 out_int32x4_t = vrsraq_n_s32 (arg0_int32x4_t, arg1_int32x4_t, 1);
661 }
662
663-/* { dg-final { scan-assembler "vrsra\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
664+/* { dg-final { scan-assembler "vrsra\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
665 /* { dg-final { cleanup-saved-temps } } */
666
667=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c'
668--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c 2010-07-29 15:38:15 +0000
669+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c 2010-08-20 13:27:11 +0000
670@@ -17,5 +17,5 @@
671 out_int64x2_t = vrsraq_n_s64 (arg0_int64x2_t, arg1_int64x2_t, 1);
672 }
673
674-/* { dg-final { scan-assembler "vrsra\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
675+/* { dg-final { scan-assembler "vrsra\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
676 /* { dg-final { cleanup-saved-temps } } */
677
678=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c'
679--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c 2010-07-29 15:38:15 +0000
680+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c 2010-08-20 13:27:11 +0000
681@@ -17,5 +17,5 @@
682 out_int8x16_t = vrsraq_n_s8 (arg0_int8x16_t, arg1_int8x16_t, 1);
683 }
684
685-/* { dg-final { scan-assembler "vrsra\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
686+/* { dg-final { scan-assembler "vrsra\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
687 /* { dg-final { cleanup-saved-temps } } */
688
689=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c'
690--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c 2010-07-29 15:38:15 +0000
691+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c 2010-08-20 13:27:11 +0000
692@@ -17,5 +17,5 @@
693 out_uint16x8_t = vrsraq_n_u16 (arg0_uint16x8_t, arg1_uint16x8_t, 1);
694 }
695
696-/* { dg-final { scan-assembler "vrsra\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
697+/* { dg-final { scan-assembler "vrsra\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
698 /* { dg-final { cleanup-saved-temps } } */
699
700=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c'
701--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c 2010-07-29 15:38:15 +0000
702+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c 2010-08-20 13:27:11 +0000
703@@ -17,5 +17,5 @@
704 out_uint32x4_t = vrsraq_n_u32 (arg0_uint32x4_t, arg1_uint32x4_t, 1);
705 }
706
707-/* { dg-final { scan-assembler "vrsra\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
708+/* { dg-final { scan-assembler "vrsra\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
709 /* { dg-final { cleanup-saved-temps } } */
710
711=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c'
712--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c 2010-07-29 15:38:15 +0000
713+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c 2010-08-20 13:27:11 +0000
714@@ -17,5 +17,5 @@
715 out_uint64x2_t = vrsraq_n_u64 (arg0_uint64x2_t, arg1_uint64x2_t, 1);
716 }
717
718-/* { dg-final { scan-assembler "vrsra\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
719+/* { dg-final { scan-assembler "vrsra\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
720 /* { dg-final { cleanup-saved-temps } } */
721
722=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c'
723--- old/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c 2010-07-29 15:38:15 +0000
724+++ new/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c 2010-08-20 13:27:11 +0000
725@@ -17,5 +17,5 @@
726 out_uint8x16_t = vrsraq_n_u8 (arg0_uint8x16_t, arg1_uint8x16_t, 1);
727 }
728
729-/* { dg-final { scan-assembler "vrsra\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
730+/* { dg-final { scan-assembler "vrsra\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
731 /* { dg-final { cleanup-saved-temps } } */
732
733=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c'
734--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c 2010-07-29 15:38:15 +0000
735+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c 2010-08-20 13:27:11 +0000
736@@ -17,5 +17,5 @@
737 out_int16x4_t = vrsra_n_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
738 }
739
740-/* { dg-final { scan-assembler "vrsra\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
741+/* { dg-final { scan-assembler "vrsra\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
742 /* { dg-final { cleanup-saved-temps } } */
743
744=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c'
745--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c 2010-07-29 15:38:15 +0000
746+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c 2010-08-20 13:27:11 +0000
747@@ -17,5 +17,5 @@
748 out_int32x2_t = vrsra_n_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
749 }
750
751-/* { dg-final { scan-assembler "vrsra\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
752+/* { dg-final { scan-assembler "vrsra\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
753 /* { dg-final { cleanup-saved-temps } } */
754
755=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c'
756--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c 2010-07-29 15:38:15 +0000
757+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c 2010-08-20 13:27:11 +0000
758@@ -17,5 +17,5 @@
759 out_int64x1_t = vrsra_n_s64 (arg0_int64x1_t, arg1_int64x1_t, 1);
760 }
761
762-/* { dg-final { scan-assembler "vrsra\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
763+/* { dg-final { scan-assembler "vrsra\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
764 /* { dg-final { cleanup-saved-temps } } */
765
766=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c'
767--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c 2010-07-29 15:38:15 +0000
768+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c 2010-08-20 13:27:11 +0000
769@@ -17,5 +17,5 @@
770 out_int8x8_t = vrsra_n_s8 (arg0_int8x8_t, arg1_int8x8_t, 1);
771 }
772
773-/* { dg-final { scan-assembler "vrsra\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
774+/* { dg-final { scan-assembler "vrsra\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
775 /* { dg-final { cleanup-saved-temps } } */
776
777=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c'
778--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c 2010-07-29 15:38:15 +0000
779+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c 2010-08-20 13:27:11 +0000
780@@ -17,5 +17,5 @@
781 out_uint16x4_t = vrsra_n_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 1);
782 }
783
784-/* { dg-final { scan-assembler "vrsra\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
785+/* { dg-final { scan-assembler "vrsra\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
786 /* { dg-final { cleanup-saved-temps } } */
787
788=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c'
789--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c 2010-07-29 15:38:15 +0000
790+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c 2010-08-20 13:27:11 +0000
791@@ -17,5 +17,5 @@
792 out_uint32x2_t = vrsra_n_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 1);
793 }
794
795-/* { dg-final { scan-assembler "vrsra\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
796+/* { dg-final { scan-assembler "vrsra\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
797 /* { dg-final { cleanup-saved-temps } } */
798
799=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c'
800--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c 2010-07-29 15:38:15 +0000
801+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c 2010-08-20 13:27:11 +0000
802@@ -17,5 +17,5 @@
803 out_uint64x1_t = vrsra_n_u64 (arg0_uint64x1_t, arg1_uint64x1_t, 1);
804 }
805
806-/* { dg-final { scan-assembler "vrsra\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
807+/* { dg-final { scan-assembler "vrsra\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
808 /* { dg-final { cleanup-saved-temps } } */
809
810=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c'
811--- old/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c 2010-07-29 15:38:15 +0000
812+++ new/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c 2010-08-20 13:27:11 +0000
813@@ -17,5 +17,5 @@
814 out_uint8x8_t = vrsra_n_u8 (arg0_uint8x8_t, arg1_uint8x8_t, 1);
815 }
816
817-/* { dg-final { scan-assembler "vrsra\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
818+/* { dg-final { scan-assembler "vrsra\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
819 /* { dg-final { cleanup-saved-temps } } */
820
821=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c'
822--- old/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c 2010-07-29 15:38:15 +0000
823+++ new/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c 2010-08-20 13:27:11 +0000
824@@ -17,5 +17,5 @@
825 out_int8x8_t = vrsubhn_s16 (arg0_int16x8_t, arg1_int16x8_t);
826 }
827
828-/* { dg-final { scan-assembler "vrsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
829+/* { dg-final { scan-assembler "vrsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
830 /* { dg-final { cleanup-saved-temps } } */
831
832=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c'
833--- old/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c 2010-07-29 15:38:15 +0000
834+++ new/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c 2010-08-20 13:27:11 +0000
835@@ -17,5 +17,5 @@
836 out_int16x4_t = vrsubhn_s32 (arg0_int32x4_t, arg1_int32x4_t);
837 }
838
839-/* { dg-final { scan-assembler "vrsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
840+/* { dg-final { scan-assembler "vrsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
841 /* { dg-final { cleanup-saved-temps } } */
842
843=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c'
844--- old/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c 2010-07-29 15:38:15 +0000
845+++ new/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c 2010-08-20 13:27:11 +0000
846@@ -17,5 +17,5 @@
847 out_int32x2_t = vrsubhn_s64 (arg0_int64x2_t, arg1_int64x2_t);
848 }
849
850-/* { dg-final { scan-assembler "vrsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
851+/* { dg-final { scan-assembler "vrsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
852 /* { dg-final { cleanup-saved-temps } } */
853
854=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c'
855--- old/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c 2010-07-29 15:38:15 +0000
856+++ new/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c 2010-08-20 13:27:11 +0000
857@@ -17,5 +17,5 @@
858 out_uint8x8_t = vrsubhn_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
859 }
860
861-/* { dg-final { scan-assembler "vrsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
862+/* { dg-final { scan-assembler "vrsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
863 /* { dg-final { cleanup-saved-temps } } */
864
865=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c'
866--- old/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c 2010-07-29 15:38:15 +0000
867+++ new/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c 2010-08-20 13:27:11 +0000
868@@ -17,5 +17,5 @@
869 out_uint16x4_t = vrsubhn_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
870 }
871
872-/* { dg-final { scan-assembler "vrsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
873+/* { dg-final { scan-assembler "vrsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
874 /* { dg-final { cleanup-saved-temps } } */
875
876=== modified file 'gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c'
877--- old/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c 2010-07-29 15:38:15 +0000
878+++ new/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c 2010-08-20 13:27:11 +0000
879@@ -17,5 +17,5 @@
880 out_uint32x2_t = vrsubhn_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
881 }
882
883-/* { dg-final { scan-assembler "vrsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
884+/* { dg-final { scan-assembler "vrsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
885 /* { dg-final { cleanup-saved-temps } } */
886
887=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabaQs16.c'
888--- old/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c 2010-07-29 15:38:15 +0000
889+++ new/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c 2010-08-20 13:27:11 +0000
890@@ -18,5 +18,5 @@
891 out_int16x8_t = vabaq_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16x8_t);
892 }
893
894-/* { dg-final { scan-assembler "vaba\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
895+/* { dg-final { scan-assembler "vaba\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
896 /* { dg-final { cleanup-saved-temps } } */
897
898=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabaQs32.c'
899--- old/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c 2010-07-29 15:38:15 +0000
900+++ new/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c 2010-08-20 13:27:11 +0000
901@@ -18,5 +18,5 @@
902 out_int32x4_t = vabaq_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32x4_t);
903 }
904
905-/* { dg-final { scan-assembler "vaba\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
906+/* { dg-final { scan-assembler "vaba\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
907 /* { dg-final { cleanup-saved-temps } } */
908
909=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabaQs8.c'
910--- old/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c 2010-07-29 15:38:15 +0000
911+++ new/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c 2010-08-20 13:27:11 +0000
912@@ -18,5 +18,5 @@
913 out_int8x16_t = vabaq_s8 (arg0_int8x16_t, arg1_int8x16_t, arg2_int8x16_t);
914 }
915
916-/* { dg-final { scan-assembler "vaba\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
917+/* { dg-final { scan-assembler "vaba\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
918 /* { dg-final { cleanup-saved-temps } } */
919
920=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabaQu16.c'
921--- old/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c 2010-07-29 15:38:15 +0000
922+++ new/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c 2010-08-20 13:27:11 +0000
923@@ -18,5 +18,5 @@
924 out_uint16x8_t = vabaq_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16x8_t);
925 }
926
927-/* { dg-final { scan-assembler "vaba\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
928+/* { dg-final { scan-assembler "vaba\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
929 /* { dg-final { cleanup-saved-temps } } */
930
931=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabaQu32.c'
932--- old/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c 2010-07-29 15:38:15 +0000
933+++ new/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c 2010-08-20 13:27:11 +0000
934@@ -18,5 +18,5 @@
935 out_uint32x4_t = vabaq_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32x4_t);
936 }
937
938-/* { dg-final { scan-assembler "vaba\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
939+/* { dg-final { scan-assembler "vaba\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
940 /* { dg-final { cleanup-saved-temps } } */
941
942=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabaQu8.c'
943--- old/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c 2010-07-29 15:38:15 +0000
944+++ new/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c 2010-08-20 13:27:11 +0000
945@@ -18,5 +18,5 @@
946 out_uint8x16_t = vabaq_u8 (arg0_uint8x16_t, arg1_uint8x16_t, arg2_uint8x16_t);
947 }
948
949-/* { dg-final { scan-assembler "vaba\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
950+/* { dg-final { scan-assembler "vaba\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
951 /* { dg-final { cleanup-saved-temps } } */
952
953=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabals16.c'
954--- old/gcc/testsuite/gcc.target/arm/neon/vabals16.c 2010-07-29 15:38:15 +0000
955+++ new/gcc/testsuite/gcc.target/arm/neon/vabals16.c 2010-08-20 13:27:11 +0000
956@@ -18,5 +18,5 @@
957 out_int32x4_t = vabal_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t);
958 }
959
960-/* { dg-final { scan-assembler "vabal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
961+/* { dg-final { scan-assembler "vabal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
962 /* { dg-final { cleanup-saved-temps } } */
963
964=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabals32.c'
965--- old/gcc/testsuite/gcc.target/arm/neon/vabals32.c 2010-07-29 15:38:15 +0000
966+++ new/gcc/testsuite/gcc.target/arm/neon/vabals32.c 2010-08-20 13:27:11 +0000
967@@ -18,5 +18,5 @@
968 out_int64x2_t = vabal_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t);
969 }
970
971-/* { dg-final { scan-assembler "vabal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
972+/* { dg-final { scan-assembler "vabal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
973 /* { dg-final { cleanup-saved-temps } } */
974
975=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabals8.c'
976--- old/gcc/testsuite/gcc.target/arm/neon/vabals8.c 2010-07-29 15:38:15 +0000
977+++ new/gcc/testsuite/gcc.target/arm/neon/vabals8.c 2010-08-20 13:27:11 +0000
978@@ -18,5 +18,5 @@
979 out_int16x8_t = vabal_s8 (arg0_int16x8_t, arg1_int8x8_t, arg2_int8x8_t);
980 }
981
982-/* { dg-final { scan-assembler "vabal\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
983+/* { dg-final { scan-assembler "vabal\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
984 /* { dg-final { cleanup-saved-temps } } */
985
986=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabalu16.c'
987--- old/gcc/testsuite/gcc.target/arm/neon/vabalu16.c 2010-07-29 15:38:15 +0000
988+++ new/gcc/testsuite/gcc.target/arm/neon/vabalu16.c 2010-08-20 13:27:11 +0000
989@@ -18,5 +18,5 @@
990 out_uint32x4_t = vabal_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
991 }
992
993-/* { dg-final { scan-assembler "vabal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
994+/* { dg-final { scan-assembler "vabal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
995 /* { dg-final { cleanup-saved-temps } } */
996
997=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabalu32.c'
998--- old/gcc/testsuite/gcc.target/arm/neon/vabalu32.c 2010-07-29 15:38:15 +0000
999+++ new/gcc/testsuite/gcc.target/arm/neon/vabalu32.c 2010-08-20 13:27:11 +0000
1000@@ -18,5 +18,5 @@
1001 out_uint64x2_t = vabal_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
1002 }
1003
1004-/* { dg-final { scan-assembler "vabal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1005+/* { dg-final { scan-assembler "vabal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1006 /* { dg-final { cleanup-saved-temps } } */
1007
1008=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabalu8.c'
1009--- old/gcc/testsuite/gcc.target/arm/neon/vabalu8.c 2010-07-29 15:38:15 +0000
1010+++ new/gcc/testsuite/gcc.target/arm/neon/vabalu8.c 2010-08-20 13:27:11 +0000
1011@@ -18,5 +18,5 @@
1012 out_uint16x8_t = vabal_u8 (arg0_uint16x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
1013 }
1014
1015-/* { dg-final { scan-assembler "vabal\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1016+/* { dg-final { scan-assembler "vabal\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1017 /* { dg-final { cleanup-saved-temps } } */
1018
1019=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabas16.c'
1020--- old/gcc/testsuite/gcc.target/arm/neon/vabas16.c 2010-07-29 15:38:15 +0000
1021+++ new/gcc/testsuite/gcc.target/arm/neon/vabas16.c 2010-08-20 13:27:11 +0000
1022@@ -18,5 +18,5 @@
1023 out_int16x4_t = vaba_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16x4_t);
1024 }
1025
1026-/* { dg-final { scan-assembler "vaba\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1027+/* { dg-final { scan-assembler "vaba\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1028 /* { dg-final { cleanup-saved-temps } } */
1029
1030=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabas32.c'
1031--- old/gcc/testsuite/gcc.target/arm/neon/vabas32.c 2010-07-29 15:38:15 +0000
1032+++ new/gcc/testsuite/gcc.target/arm/neon/vabas32.c 2010-08-20 13:27:11 +0000
1033@@ -18,5 +18,5 @@
1034 out_int32x2_t = vaba_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32x2_t);
1035 }
1036
1037-/* { dg-final { scan-assembler "vaba\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1038+/* { dg-final { scan-assembler "vaba\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1039 /* { dg-final { cleanup-saved-temps } } */
1040
1041=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabas8.c'
1042--- old/gcc/testsuite/gcc.target/arm/neon/vabas8.c 2010-07-29 15:38:15 +0000
1043+++ new/gcc/testsuite/gcc.target/arm/neon/vabas8.c 2010-08-20 13:27:11 +0000
1044@@ -18,5 +18,5 @@
1045 out_int8x8_t = vaba_s8 (arg0_int8x8_t, arg1_int8x8_t, arg2_int8x8_t);
1046 }
1047
1048-/* { dg-final { scan-assembler "vaba\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1049+/* { dg-final { scan-assembler "vaba\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1050 /* { dg-final { cleanup-saved-temps } } */
1051
1052=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabau16.c'
1053--- old/gcc/testsuite/gcc.target/arm/neon/vabau16.c 2010-07-29 15:38:15 +0000
1054+++ new/gcc/testsuite/gcc.target/arm/neon/vabau16.c 2010-08-20 13:27:11 +0000
1055@@ -18,5 +18,5 @@
1056 out_uint16x4_t = vaba_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
1057 }
1058
1059-/* { dg-final { scan-assembler "vaba\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1060+/* { dg-final { scan-assembler "vaba\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1061 /* { dg-final { cleanup-saved-temps } } */
1062
1063=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabau32.c'
1064--- old/gcc/testsuite/gcc.target/arm/neon/vabau32.c 2010-07-29 15:38:15 +0000
1065+++ new/gcc/testsuite/gcc.target/arm/neon/vabau32.c 2010-08-20 13:27:11 +0000
1066@@ -18,5 +18,5 @@
1067 out_uint32x2_t = vaba_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
1068 }
1069
1070-/* { dg-final { scan-assembler "vaba\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1071+/* { dg-final { scan-assembler "vaba\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1072 /* { dg-final { cleanup-saved-temps } } */
1073
1074=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabau8.c'
1075--- old/gcc/testsuite/gcc.target/arm/neon/vabau8.c 2010-07-29 15:38:15 +0000
1076+++ new/gcc/testsuite/gcc.target/arm/neon/vabau8.c 2010-08-20 13:27:11 +0000
1077@@ -18,5 +18,5 @@
1078 out_uint8x8_t = vaba_u8 (arg0_uint8x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
1079 }
1080
1081-/* { dg-final { scan-assembler "vaba\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1082+/* { dg-final { scan-assembler "vaba\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1083 /* { dg-final { cleanup-saved-temps } } */
1084
1085=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQf32.c'
1086--- old/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c 2010-07-29 15:38:15 +0000
1087+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c 2010-08-20 13:27:11 +0000
1088@@ -17,5 +17,5 @@
1089 out_float32x4_t = vabdq_f32 (arg0_float32x4_t, arg1_float32x4_t);
1090 }
1091
1092-/* { dg-final { scan-assembler "vabd\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1093+/* { dg-final { scan-assembler "vabd\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1094 /* { dg-final { cleanup-saved-temps } } */
1095
1096=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQs16.c'
1097--- old/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c 2010-07-29 15:38:15 +0000
1098+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c 2010-08-20 13:27:11 +0000
1099@@ -17,5 +17,5 @@
1100 out_int16x8_t = vabdq_s16 (arg0_int16x8_t, arg1_int16x8_t);
1101 }
1102
1103-/* { dg-final { scan-assembler "vabd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1104+/* { dg-final { scan-assembler "vabd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1105 /* { dg-final { cleanup-saved-temps } } */
1106
1107=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQs32.c'
1108--- old/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c 2010-07-29 15:38:15 +0000
1109+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c 2010-08-20 13:27:11 +0000
1110@@ -17,5 +17,5 @@
1111 out_int32x4_t = vabdq_s32 (arg0_int32x4_t, arg1_int32x4_t);
1112 }
1113
1114-/* { dg-final { scan-assembler "vabd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1115+/* { dg-final { scan-assembler "vabd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1116 /* { dg-final { cleanup-saved-temps } } */
1117
1118=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQs8.c'
1119--- old/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c 2010-07-29 15:38:15 +0000
1120+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c 2010-08-20 13:27:11 +0000
1121@@ -17,5 +17,5 @@
1122 out_int8x16_t = vabdq_s8 (arg0_int8x16_t, arg1_int8x16_t);
1123 }
1124
1125-/* { dg-final { scan-assembler "vabd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1126+/* { dg-final { scan-assembler "vabd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1127 /* { dg-final { cleanup-saved-temps } } */
1128
1129=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQu16.c'
1130--- old/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c 2010-07-29 15:38:15 +0000
1131+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c 2010-08-20 13:27:11 +0000
1132@@ -17,5 +17,5 @@
1133 out_uint16x8_t = vabdq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
1134 }
1135
1136-/* { dg-final { scan-assembler "vabd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1137+/* { dg-final { scan-assembler "vabd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1138 /* { dg-final { cleanup-saved-temps } } */
1139
1140=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQu32.c'
1141--- old/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c 2010-07-29 15:38:15 +0000
1142+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c 2010-08-20 13:27:11 +0000
1143@@ -17,5 +17,5 @@
1144 out_uint32x4_t = vabdq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
1145 }
1146
1147-/* { dg-final { scan-assembler "vabd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1148+/* { dg-final { scan-assembler "vabd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1149 /* { dg-final { cleanup-saved-temps } } */
1150
1151=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdQu8.c'
1152--- old/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c 2010-07-29 15:38:15 +0000
1153+++ new/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c 2010-08-20 13:27:11 +0000
1154@@ -17,5 +17,5 @@
1155 out_uint8x16_t = vabdq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
1156 }
1157
1158-/* { dg-final { scan-assembler "vabd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1159+/* { dg-final { scan-assembler "vabd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1160 /* { dg-final { cleanup-saved-temps } } */
1161
1162=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdf32.c'
1163--- old/gcc/testsuite/gcc.target/arm/neon/vabdf32.c 2010-07-29 15:38:15 +0000
1164+++ new/gcc/testsuite/gcc.target/arm/neon/vabdf32.c 2010-08-20 13:27:11 +0000
1165@@ -17,5 +17,5 @@
1166 out_float32x2_t = vabd_f32 (arg0_float32x2_t, arg1_float32x2_t);
1167 }
1168
1169-/* { dg-final { scan-assembler "vabd\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1170+/* { dg-final { scan-assembler "vabd\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1171 /* { dg-final { cleanup-saved-temps } } */
1172
1173=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdls16.c'
1174--- old/gcc/testsuite/gcc.target/arm/neon/vabdls16.c 2010-07-29 15:38:15 +0000
1175+++ new/gcc/testsuite/gcc.target/arm/neon/vabdls16.c 2010-08-20 13:27:11 +0000
1176@@ -17,5 +17,5 @@
1177 out_int32x4_t = vabdl_s16 (arg0_int16x4_t, arg1_int16x4_t);
1178 }
1179
1180-/* { dg-final { scan-assembler "vabdl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1181+/* { dg-final { scan-assembler "vabdl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1182 /* { dg-final { cleanup-saved-temps } } */
1183
1184=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdls32.c'
1185--- old/gcc/testsuite/gcc.target/arm/neon/vabdls32.c 2010-07-29 15:38:15 +0000
1186+++ new/gcc/testsuite/gcc.target/arm/neon/vabdls32.c 2010-08-20 13:27:11 +0000
1187@@ -17,5 +17,5 @@
1188 out_int64x2_t = vabdl_s32 (arg0_int32x2_t, arg1_int32x2_t);
1189 }
1190
1191-/* { dg-final { scan-assembler "vabdl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1192+/* { dg-final { scan-assembler "vabdl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1193 /* { dg-final { cleanup-saved-temps } } */
1194
1195=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdls8.c'
1196--- old/gcc/testsuite/gcc.target/arm/neon/vabdls8.c 2010-07-29 15:38:15 +0000
1197+++ new/gcc/testsuite/gcc.target/arm/neon/vabdls8.c 2010-08-20 13:27:11 +0000
1198@@ -17,5 +17,5 @@
1199 out_int16x8_t = vabdl_s8 (arg0_int8x8_t, arg1_int8x8_t);
1200 }
1201
1202-/* { dg-final { scan-assembler "vabdl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1203+/* { dg-final { scan-assembler "vabdl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1204 /* { dg-final { cleanup-saved-temps } } */
1205
1206=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdlu16.c'
1207--- old/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c 2010-07-29 15:38:15 +0000
1208+++ new/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c 2010-08-20 13:27:11 +0000
1209@@ -17,5 +17,5 @@
1210 out_uint32x4_t = vabdl_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
1211 }
1212
1213-/* { dg-final { scan-assembler "vabdl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1214+/* { dg-final { scan-assembler "vabdl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1215 /* { dg-final { cleanup-saved-temps } } */
1216
1217=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdlu32.c'
1218--- old/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c 2010-07-29 15:38:15 +0000
1219+++ new/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c 2010-08-20 13:27:11 +0000
1220@@ -17,5 +17,5 @@
1221 out_uint64x2_t = vabdl_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
1222 }
1223
1224-/* { dg-final { scan-assembler "vabdl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1225+/* { dg-final { scan-assembler "vabdl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1226 /* { dg-final { cleanup-saved-temps } } */
1227
1228=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdlu8.c'
1229--- old/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c 2010-07-29 15:38:15 +0000
1230+++ new/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c 2010-08-20 13:27:11 +0000
1231@@ -17,5 +17,5 @@
1232 out_uint16x8_t = vabdl_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
1233 }
1234
1235-/* { dg-final { scan-assembler "vabdl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1236+/* { dg-final { scan-assembler "vabdl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1237 /* { dg-final { cleanup-saved-temps } } */
1238
1239=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabds16.c'
1240--- old/gcc/testsuite/gcc.target/arm/neon/vabds16.c 2010-07-29 15:38:15 +0000
1241+++ new/gcc/testsuite/gcc.target/arm/neon/vabds16.c 2010-08-20 13:27:11 +0000
1242@@ -17,5 +17,5 @@
1243 out_int16x4_t = vabd_s16 (arg0_int16x4_t, arg1_int16x4_t);
1244 }
1245
1246-/* { dg-final { scan-assembler "vabd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1247+/* { dg-final { scan-assembler "vabd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1248 /* { dg-final { cleanup-saved-temps } } */
1249
1250=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabds32.c'
1251--- old/gcc/testsuite/gcc.target/arm/neon/vabds32.c 2010-07-29 15:38:15 +0000
1252+++ new/gcc/testsuite/gcc.target/arm/neon/vabds32.c 2010-08-20 13:27:11 +0000
1253@@ -17,5 +17,5 @@
1254 out_int32x2_t = vabd_s32 (arg0_int32x2_t, arg1_int32x2_t);
1255 }
1256
1257-/* { dg-final { scan-assembler "vabd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1258+/* { dg-final { scan-assembler "vabd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1259 /* { dg-final { cleanup-saved-temps } } */
1260
1261=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabds8.c'
1262--- old/gcc/testsuite/gcc.target/arm/neon/vabds8.c 2010-07-29 15:38:15 +0000
1263+++ new/gcc/testsuite/gcc.target/arm/neon/vabds8.c 2010-08-20 13:27:11 +0000
1264@@ -17,5 +17,5 @@
1265 out_int8x8_t = vabd_s8 (arg0_int8x8_t, arg1_int8x8_t);
1266 }
1267
1268-/* { dg-final { scan-assembler "vabd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1269+/* { dg-final { scan-assembler "vabd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1270 /* { dg-final { cleanup-saved-temps } } */
1271
1272=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdu16.c'
1273--- old/gcc/testsuite/gcc.target/arm/neon/vabdu16.c 2010-07-29 15:38:15 +0000
1274+++ new/gcc/testsuite/gcc.target/arm/neon/vabdu16.c 2010-08-20 13:27:11 +0000
1275@@ -17,5 +17,5 @@
1276 out_uint16x4_t = vabd_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
1277 }
1278
1279-/* { dg-final { scan-assembler "vabd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1280+/* { dg-final { scan-assembler "vabd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1281 /* { dg-final { cleanup-saved-temps } } */
1282
1283=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdu32.c'
1284--- old/gcc/testsuite/gcc.target/arm/neon/vabdu32.c 2010-07-29 15:38:15 +0000
1285+++ new/gcc/testsuite/gcc.target/arm/neon/vabdu32.c 2010-08-20 13:27:11 +0000
1286@@ -17,5 +17,5 @@
1287 out_uint32x2_t = vabd_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
1288 }
1289
1290-/* { dg-final { scan-assembler "vabd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1291+/* { dg-final { scan-assembler "vabd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1292 /* { dg-final { cleanup-saved-temps } } */
1293
1294=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabdu8.c'
1295--- old/gcc/testsuite/gcc.target/arm/neon/vabdu8.c 2010-07-29 15:38:15 +0000
1296+++ new/gcc/testsuite/gcc.target/arm/neon/vabdu8.c 2010-08-20 13:27:11 +0000
1297@@ -17,5 +17,5 @@
1298 out_uint8x8_t = vabd_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
1299 }
1300
1301-/* { dg-final { scan-assembler "vabd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1302+/* { dg-final { scan-assembler "vabd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1303 /* { dg-final { cleanup-saved-temps } } */
1304
1305=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabsQf32.c'
1306--- old/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c 2010-07-29 15:38:15 +0000
1307+++ new/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c 2010-08-20 13:27:11 +0000
1308@@ -16,5 +16,5 @@
1309 out_float32x4_t = vabsq_f32 (arg0_float32x4_t);
1310 }
1311
1312-/* { dg-final { scan-assembler "vabs\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1313+/* { dg-final { scan-assembler "vabs\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1314 /* { dg-final { cleanup-saved-temps } } */
1315
1316=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabsQs16.c'
1317--- old/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c 2010-07-29 15:38:15 +0000
1318+++ new/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c 2010-08-20 13:27:11 +0000
1319@@ -16,5 +16,5 @@
1320 out_int16x8_t = vabsq_s16 (arg0_int16x8_t);
1321 }
1322
1323-/* { dg-final { scan-assembler "vabs\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1324+/* { dg-final { scan-assembler "vabs\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1325 /* { dg-final { cleanup-saved-temps } } */
1326
1327=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabsQs32.c'
1328--- old/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c 2010-07-29 15:38:15 +0000
1329+++ new/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c 2010-08-20 13:27:11 +0000
1330@@ -16,5 +16,5 @@
1331 out_int32x4_t = vabsq_s32 (arg0_int32x4_t);
1332 }
1333
1334-/* { dg-final { scan-assembler "vabs\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1335+/* { dg-final { scan-assembler "vabs\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1336 /* { dg-final { cleanup-saved-temps } } */
1337
1338=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabsQs8.c'
1339--- old/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c 2010-07-29 15:38:15 +0000
1340+++ new/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c 2010-08-20 13:27:11 +0000
1341@@ -16,5 +16,5 @@
1342 out_int8x16_t = vabsq_s8 (arg0_int8x16_t);
1343 }
1344
1345-/* { dg-final { scan-assembler "vabs\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1346+/* { dg-final { scan-assembler "vabs\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1347 /* { dg-final { cleanup-saved-temps } } */
1348
1349=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabsf32.c'
1350--- old/gcc/testsuite/gcc.target/arm/neon/vabsf32.c 2010-07-29 15:38:15 +0000
1351+++ new/gcc/testsuite/gcc.target/arm/neon/vabsf32.c 2010-08-20 13:27:11 +0000
1352@@ -16,5 +16,5 @@
1353 out_float32x2_t = vabs_f32 (arg0_float32x2_t);
1354 }
1355
1356-/* { dg-final { scan-assembler "vabs\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1357+/* { dg-final { scan-assembler "vabs\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1358 /* { dg-final { cleanup-saved-temps } } */
1359
1360=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabss16.c'
1361--- old/gcc/testsuite/gcc.target/arm/neon/vabss16.c 2010-07-29 15:38:15 +0000
1362+++ new/gcc/testsuite/gcc.target/arm/neon/vabss16.c 2010-08-20 13:27:11 +0000
1363@@ -16,5 +16,5 @@
1364 out_int16x4_t = vabs_s16 (arg0_int16x4_t);
1365 }
1366
1367-/* { dg-final { scan-assembler "vabs\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1368+/* { dg-final { scan-assembler "vabs\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1369 /* { dg-final { cleanup-saved-temps } } */
1370
1371=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabss32.c'
1372--- old/gcc/testsuite/gcc.target/arm/neon/vabss32.c 2010-07-29 15:38:15 +0000
1373+++ new/gcc/testsuite/gcc.target/arm/neon/vabss32.c 2010-08-20 13:27:11 +0000
1374@@ -16,5 +16,5 @@
1375 out_int32x2_t = vabs_s32 (arg0_int32x2_t);
1376 }
1377
1378-/* { dg-final { scan-assembler "vabs\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1379+/* { dg-final { scan-assembler "vabs\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1380 /* { dg-final { cleanup-saved-temps } } */
1381
1382=== modified file 'gcc/testsuite/gcc.target/arm/neon/vabss8.c'
1383--- old/gcc/testsuite/gcc.target/arm/neon/vabss8.c 2010-07-29 15:38:15 +0000
1384+++ new/gcc/testsuite/gcc.target/arm/neon/vabss8.c 2010-08-20 13:27:11 +0000
1385@@ -16,5 +16,5 @@
1386 out_int8x8_t = vabs_s8 (arg0_int8x8_t);
1387 }
1388
1389-/* { dg-final { scan-assembler "vabs\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1390+/* { dg-final { scan-assembler "vabs\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1391 /* { dg-final { cleanup-saved-temps } } */
1392
1393=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQf32.c'
1394--- old/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c 2010-07-29 15:38:15 +0000
1395+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c 2010-08-20 13:27:11 +0000
1396@@ -17,5 +17,5 @@
1397 out_float32x4_t = vaddq_f32 (arg0_float32x4_t, arg1_float32x4_t);
1398 }
1399
1400-/* { dg-final { scan-assembler "vadd\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1401+/* { dg-final { scan-assembler "vadd\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1402 /* { dg-final { cleanup-saved-temps } } */
1403
1404=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQs16.c'
1405--- old/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c 2010-07-29 15:38:15 +0000
1406+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c 2010-08-20 13:27:11 +0000
1407@@ -17,5 +17,5 @@
1408 out_int16x8_t = vaddq_s16 (arg0_int16x8_t, arg1_int16x8_t);
1409 }
1410
1411-/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1412+/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1413 /* { dg-final { cleanup-saved-temps } } */
1414
1415=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQs32.c'
1416--- old/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c 2010-07-29 15:38:15 +0000
1417+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c 2010-08-20 13:27:11 +0000
1418@@ -17,5 +17,5 @@
1419 out_int32x4_t = vaddq_s32 (arg0_int32x4_t, arg1_int32x4_t);
1420 }
1421
1422-/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1423+/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1424 /* { dg-final { cleanup-saved-temps } } */
1425
1426=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQs64.c'
1427--- old/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c 2010-07-29 15:38:15 +0000
1428+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c 2010-08-20 13:27:11 +0000
1429@@ -17,5 +17,5 @@
1430 out_int64x2_t = vaddq_s64 (arg0_int64x2_t, arg1_int64x2_t);
1431 }
1432
1433-/* { dg-final { scan-assembler "vadd\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1434+/* { dg-final { scan-assembler "vadd\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1435 /* { dg-final { cleanup-saved-temps } } */
1436
1437=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQs8.c'
1438--- old/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c 2010-07-29 15:38:15 +0000
1439+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c 2010-08-20 13:27:11 +0000
1440@@ -17,5 +17,5 @@
1441 out_int8x16_t = vaddq_s8 (arg0_int8x16_t, arg1_int8x16_t);
1442 }
1443
1444-/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1445+/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1446 /* { dg-final { cleanup-saved-temps } } */
1447
1448=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQu16.c'
1449--- old/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c 2010-07-29 15:38:15 +0000
1450+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c 2010-08-20 13:27:11 +0000
1451@@ -17,5 +17,5 @@
1452 out_uint16x8_t = vaddq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
1453 }
1454
1455-/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1456+/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1457 /* { dg-final { cleanup-saved-temps } } */
1458
1459=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQu32.c'
1460--- old/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c 2010-07-29 15:38:15 +0000
1461+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c 2010-08-20 13:27:11 +0000
1462@@ -17,5 +17,5 @@
1463 out_uint32x4_t = vaddq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
1464 }
1465
1466-/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1467+/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1468 /* { dg-final { cleanup-saved-temps } } */
1469
1470=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQu64.c'
1471--- old/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c 2010-07-29 15:38:15 +0000
1472+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c 2010-08-20 13:27:11 +0000
1473@@ -17,5 +17,5 @@
1474 out_uint64x2_t = vaddq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
1475 }
1476
1477-/* { dg-final { scan-assembler "vadd\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1478+/* { dg-final { scan-assembler "vadd\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1479 /* { dg-final { cleanup-saved-temps } } */
1480
1481=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddQu8.c'
1482--- old/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c 2010-07-29 15:38:15 +0000
1483+++ new/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c 2010-08-20 13:27:11 +0000
1484@@ -17,5 +17,5 @@
1485 out_uint8x16_t = vaddq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
1486 }
1487
1488-/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1489+/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1490 /* { dg-final { cleanup-saved-temps } } */
1491
1492=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddf32.c'
1493--- old/gcc/testsuite/gcc.target/arm/neon/vaddf32.c 2010-07-29 15:38:15 +0000
1494+++ new/gcc/testsuite/gcc.target/arm/neon/vaddf32.c 2010-08-20 13:27:11 +0000
1495@@ -17,5 +17,5 @@
1496 out_float32x2_t = vadd_f32 (arg0_float32x2_t, arg1_float32x2_t);
1497 }
1498
1499-/* { dg-final { scan-assembler "vadd\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1500+/* { dg-final { scan-assembler "vadd\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1501 /* { dg-final { cleanup-saved-temps } } */
1502
1503=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddhns16.c'
1504--- old/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c 2010-07-29 15:38:15 +0000
1505+++ new/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c 2010-08-20 13:27:11 +0000
1506@@ -17,5 +17,5 @@
1507 out_int8x8_t = vaddhn_s16 (arg0_int16x8_t, arg1_int16x8_t);
1508 }
1509
1510-/* { dg-final { scan-assembler "vaddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1511+/* { dg-final { scan-assembler "vaddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1512 /* { dg-final { cleanup-saved-temps } } */
1513
1514=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddhns32.c'
1515--- old/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c 2010-07-29 15:38:15 +0000
1516+++ new/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c 2010-08-20 13:27:11 +0000
1517@@ -17,5 +17,5 @@
1518 out_int16x4_t = vaddhn_s32 (arg0_int32x4_t, arg1_int32x4_t);
1519 }
1520
1521-/* { dg-final { scan-assembler "vaddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1522+/* { dg-final { scan-assembler "vaddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1523 /* { dg-final { cleanup-saved-temps } } */
1524
1525=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddhns64.c'
1526--- old/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c 2010-07-29 15:38:15 +0000
1527+++ new/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c 2010-08-20 13:27:11 +0000
1528@@ -17,5 +17,5 @@
1529 out_int32x2_t = vaddhn_s64 (arg0_int64x2_t, arg1_int64x2_t);
1530 }
1531
1532-/* { dg-final { scan-assembler "vaddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1533+/* { dg-final { scan-assembler "vaddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1534 /* { dg-final { cleanup-saved-temps } } */
1535
1536=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c'
1537--- old/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c 2010-07-29 15:38:15 +0000
1538+++ new/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c 2010-08-20 13:27:11 +0000
1539@@ -17,5 +17,5 @@
1540 out_uint8x8_t = vaddhn_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
1541 }
1542
1543-/* { dg-final { scan-assembler "vaddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1544+/* { dg-final { scan-assembler "vaddhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1545 /* { dg-final { cleanup-saved-temps } } */
1546
1547=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c'
1548--- old/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c 2010-07-29 15:38:15 +0000
1549+++ new/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c 2010-08-20 13:27:11 +0000
1550@@ -17,5 +17,5 @@
1551 out_uint16x4_t = vaddhn_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
1552 }
1553
1554-/* { dg-final { scan-assembler "vaddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1555+/* { dg-final { scan-assembler "vaddhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1556 /* { dg-final { cleanup-saved-temps } } */
1557
1558=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c'
1559--- old/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c 2010-07-29 15:38:15 +0000
1560+++ new/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c 2010-08-20 13:27:11 +0000
1561@@ -17,5 +17,5 @@
1562 out_uint32x2_t = vaddhn_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
1563 }
1564
1565-/* { dg-final { scan-assembler "vaddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1566+/* { dg-final { scan-assembler "vaddhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1567 /* { dg-final { cleanup-saved-temps } } */
1568
1569=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddls16.c'
1570--- old/gcc/testsuite/gcc.target/arm/neon/vaddls16.c 2010-07-29 15:38:15 +0000
1571+++ new/gcc/testsuite/gcc.target/arm/neon/vaddls16.c 2010-08-20 13:27:11 +0000
1572@@ -17,5 +17,5 @@
1573 out_int32x4_t = vaddl_s16 (arg0_int16x4_t, arg1_int16x4_t);
1574 }
1575
1576-/* { dg-final { scan-assembler "vaddl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1577+/* { dg-final { scan-assembler "vaddl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1578 /* { dg-final { cleanup-saved-temps } } */
1579
1580=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddls32.c'
1581--- old/gcc/testsuite/gcc.target/arm/neon/vaddls32.c 2010-07-29 15:38:15 +0000
1582+++ new/gcc/testsuite/gcc.target/arm/neon/vaddls32.c 2010-08-20 13:27:11 +0000
1583@@ -17,5 +17,5 @@
1584 out_int64x2_t = vaddl_s32 (arg0_int32x2_t, arg1_int32x2_t);
1585 }
1586
1587-/* { dg-final { scan-assembler "vaddl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1588+/* { dg-final { scan-assembler "vaddl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1589 /* { dg-final { cleanup-saved-temps } } */
1590
1591=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddls8.c'
1592--- old/gcc/testsuite/gcc.target/arm/neon/vaddls8.c 2010-07-29 15:38:15 +0000
1593+++ new/gcc/testsuite/gcc.target/arm/neon/vaddls8.c 2010-08-20 13:27:11 +0000
1594@@ -17,5 +17,5 @@
1595 out_int16x8_t = vaddl_s8 (arg0_int8x8_t, arg1_int8x8_t);
1596 }
1597
1598-/* { dg-final { scan-assembler "vaddl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1599+/* { dg-final { scan-assembler "vaddl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1600 /* { dg-final { cleanup-saved-temps } } */
1601
1602=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddlu16.c'
1603--- old/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c 2010-07-29 15:38:15 +0000
1604+++ new/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c 2010-08-20 13:27:11 +0000
1605@@ -17,5 +17,5 @@
1606 out_uint32x4_t = vaddl_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
1607 }
1608
1609-/* { dg-final { scan-assembler "vaddl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1610+/* { dg-final { scan-assembler "vaddl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1611 /* { dg-final { cleanup-saved-temps } } */
1612
1613=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddlu32.c'
1614--- old/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c 2010-07-29 15:38:15 +0000
1615+++ new/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c 2010-08-20 13:27:11 +0000
1616@@ -17,5 +17,5 @@
1617 out_uint64x2_t = vaddl_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
1618 }
1619
1620-/* { dg-final { scan-assembler "vaddl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1621+/* { dg-final { scan-assembler "vaddl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1622 /* { dg-final { cleanup-saved-temps } } */
1623
1624=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddlu8.c'
1625--- old/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c 2010-07-29 15:38:15 +0000
1626+++ new/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c 2010-08-20 13:27:11 +0000
1627@@ -17,5 +17,5 @@
1628 out_uint16x8_t = vaddl_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
1629 }
1630
1631-/* { dg-final { scan-assembler "vaddl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1632+/* { dg-final { scan-assembler "vaddl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1633 /* { dg-final { cleanup-saved-temps } } */
1634
1635=== modified file 'gcc/testsuite/gcc.target/arm/neon/vadds16.c'
1636--- old/gcc/testsuite/gcc.target/arm/neon/vadds16.c 2010-07-29 15:38:15 +0000
1637+++ new/gcc/testsuite/gcc.target/arm/neon/vadds16.c 2010-08-20 13:27:11 +0000
1638@@ -17,5 +17,5 @@
1639 out_int16x4_t = vadd_s16 (arg0_int16x4_t, arg1_int16x4_t);
1640 }
1641
1642-/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1643+/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1644 /* { dg-final { cleanup-saved-temps } } */
1645
1646=== modified file 'gcc/testsuite/gcc.target/arm/neon/vadds32.c'
1647--- old/gcc/testsuite/gcc.target/arm/neon/vadds32.c 2010-07-29 15:38:15 +0000
1648+++ new/gcc/testsuite/gcc.target/arm/neon/vadds32.c 2010-08-20 13:27:11 +0000
1649@@ -17,5 +17,5 @@
1650 out_int32x2_t = vadd_s32 (arg0_int32x2_t, arg1_int32x2_t);
1651 }
1652
1653-/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1654+/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1655 /* { dg-final { cleanup-saved-temps } } */
1656
1657=== modified file 'gcc/testsuite/gcc.target/arm/neon/vadds8.c'
1658--- old/gcc/testsuite/gcc.target/arm/neon/vadds8.c 2010-07-29 15:38:15 +0000
1659+++ new/gcc/testsuite/gcc.target/arm/neon/vadds8.c 2010-08-20 13:27:11 +0000
1660@@ -17,5 +17,5 @@
1661 out_int8x8_t = vadd_s8 (arg0_int8x8_t, arg1_int8x8_t);
1662 }
1663
1664-/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1665+/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1666 /* { dg-final { cleanup-saved-temps } } */
1667
1668=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddu16.c'
1669--- old/gcc/testsuite/gcc.target/arm/neon/vaddu16.c 2010-07-29 15:38:15 +0000
1670+++ new/gcc/testsuite/gcc.target/arm/neon/vaddu16.c 2010-08-20 13:27:11 +0000
1671@@ -17,5 +17,5 @@
1672 out_uint16x4_t = vadd_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
1673 }
1674
1675-/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1676+/* { dg-final { scan-assembler "vadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1677 /* { dg-final { cleanup-saved-temps } } */
1678
1679=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddu32.c'
1680--- old/gcc/testsuite/gcc.target/arm/neon/vaddu32.c 2010-07-29 15:38:15 +0000
1681+++ new/gcc/testsuite/gcc.target/arm/neon/vaddu32.c 2010-08-20 13:27:11 +0000
1682@@ -17,5 +17,5 @@
1683 out_uint32x2_t = vadd_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
1684 }
1685
1686-/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1687+/* { dg-final { scan-assembler "vadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1688 /* { dg-final { cleanup-saved-temps } } */
1689
1690=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddu8.c'
1691--- old/gcc/testsuite/gcc.target/arm/neon/vaddu8.c 2010-07-29 15:38:15 +0000
1692+++ new/gcc/testsuite/gcc.target/arm/neon/vaddu8.c 2010-08-20 13:27:11 +0000
1693@@ -17,5 +17,5 @@
1694 out_uint8x8_t = vadd_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
1695 }
1696
1697-/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1698+/* { dg-final { scan-assembler "vadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1699 /* { dg-final { cleanup-saved-temps } } */
1700
1701=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddws16.c'
1702--- old/gcc/testsuite/gcc.target/arm/neon/vaddws16.c 2010-07-29 15:38:15 +0000
1703+++ new/gcc/testsuite/gcc.target/arm/neon/vaddws16.c 2010-08-20 13:27:11 +0000
1704@@ -17,5 +17,5 @@
1705 out_int32x4_t = vaddw_s16 (arg0_int32x4_t, arg1_int16x4_t);
1706 }
1707
1708-/* { dg-final { scan-assembler "vaddw\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1709+/* { dg-final { scan-assembler "vaddw\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1710 /* { dg-final { cleanup-saved-temps } } */
1711
1712=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddws32.c'
1713--- old/gcc/testsuite/gcc.target/arm/neon/vaddws32.c 2010-07-29 15:38:15 +0000
1714+++ new/gcc/testsuite/gcc.target/arm/neon/vaddws32.c 2010-08-20 13:27:11 +0000
1715@@ -17,5 +17,5 @@
1716 out_int64x2_t = vaddw_s32 (arg0_int64x2_t, arg1_int32x2_t);
1717 }
1718
1719-/* { dg-final { scan-assembler "vaddw\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1720+/* { dg-final { scan-assembler "vaddw\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1721 /* { dg-final { cleanup-saved-temps } } */
1722
1723=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddws8.c'
1724--- old/gcc/testsuite/gcc.target/arm/neon/vaddws8.c 2010-07-29 15:38:15 +0000
1725+++ new/gcc/testsuite/gcc.target/arm/neon/vaddws8.c 2010-08-20 13:27:11 +0000
1726@@ -17,5 +17,5 @@
1727 out_int16x8_t = vaddw_s8 (arg0_int16x8_t, arg1_int8x8_t);
1728 }
1729
1730-/* { dg-final { scan-assembler "vaddw\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1731+/* { dg-final { scan-assembler "vaddw\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1732 /* { dg-final { cleanup-saved-temps } } */
1733
1734=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddwu16.c'
1735--- old/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c 2010-07-29 15:38:15 +0000
1736+++ new/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c 2010-08-20 13:27:11 +0000
1737@@ -17,5 +17,5 @@
1738 out_uint32x4_t = vaddw_u16 (arg0_uint32x4_t, arg1_uint16x4_t);
1739 }
1740
1741-/* { dg-final { scan-assembler "vaddw\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1742+/* { dg-final { scan-assembler "vaddw\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1743 /* { dg-final { cleanup-saved-temps } } */
1744
1745=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddwu32.c'
1746--- old/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c 2010-07-29 15:38:15 +0000
1747+++ new/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c 2010-08-20 13:27:11 +0000
1748@@ -17,5 +17,5 @@
1749 out_uint64x2_t = vaddw_u32 (arg0_uint64x2_t, arg1_uint32x2_t);
1750 }
1751
1752-/* { dg-final { scan-assembler "vaddw\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1753+/* { dg-final { scan-assembler "vaddw\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1754 /* { dg-final { cleanup-saved-temps } } */
1755
1756=== modified file 'gcc/testsuite/gcc.target/arm/neon/vaddwu8.c'
1757--- old/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c 2010-07-29 15:38:15 +0000
1758+++ new/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c 2010-08-20 13:27:11 +0000
1759@@ -17,5 +17,5 @@
1760 out_uint16x8_t = vaddw_u8 (arg0_uint16x8_t, arg1_uint8x8_t);
1761 }
1762
1763-/* { dg-final { scan-assembler "vaddw\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1764+/* { dg-final { scan-assembler "vaddw\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1765 /* { dg-final { cleanup-saved-temps } } */
1766
1767=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQs16.c'
1768--- old/gcc/testsuite/gcc.target/arm/neon/vandQs16.c 2010-07-29 15:38:15 +0000
1769+++ new/gcc/testsuite/gcc.target/arm/neon/vandQs16.c 2010-08-20 13:27:11 +0000
1770@@ -17,5 +17,5 @@
1771 out_int16x8_t = vandq_s16 (arg0_int16x8_t, arg1_int16x8_t);
1772 }
1773
1774-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1775+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1776 /* { dg-final { cleanup-saved-temps } } */
1777
1778=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQs32.c'
1779--- old/gcc/testsuite/gcc.target/arm/neon/vandQs32.c 2010-07-29 15:38:15 +0000
1780+++ new/gcc/testsuite/gcc.target/arm/neon/vandQs32.c 2010-08-20 13:27:11 +0000
1781@@ -17,5 +17,5 @@
1782 out_int32x4_t = vandq_s32 (arg0_int32x4_t, arg1_int32x4_t);
1783 }
1784
1785-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1786+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1787 /* { dg-final { cleanup-saved-temps } } */
1788
1789=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQs64.c'
1790--- old/gcc/testsuite/gcc.target/arm/neon/vandQs64.c 2010-07-29 15:38:15 +0000
1791+++ new/gcc/testsuite/gcc.target/arm/neon/vandQs64.c 2010-08-20 13:27:11 +0000
1792@@ -17,5 +17,5 @@
1793 out_int64x2_t = vandq_s64 (arg0_int64x2_t, arg1_int64x2_t);
1794 }
1795
1796-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1797+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1798 /* { dg-final { cleanup-saved-temps } } */
1799
1800=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQs8.c'
1801--- old/gcc/testsuite/gcc.target/arm/neon/vandQs8.c 2010-07-29 15:38:15 +0000
1802+++ new/gcc/testsuite/gcc.target/arm/neon/vandQs8.c 2010-08-20 13:27:11 +0000
1803@@ -17,5 +17,5 @@
1804 out_int8x16_t = vandq_s8 (arg0_int8x16_t, arg1_int8x16_t);
1805 }
1806
1807-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1808+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1809 /* { dg-final { cleanup-saved-temps } } */
1810
1811=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQu16.c'
1812--- old/gcc/testsuite/gcc.target/arm/neon/vandQu16.c 2010-07-29 15:38:15 +0000
1813+++ new/gcc/testsuite/gcc.target/arm/neon/vandQu16.c 2010-08-20 13:27:11 +0000
1814@@ -17,5 +17,5 @@
1815 out_uint16x8_t = vandq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
1816 }
1817
1818-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1819+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1820 /* { dg-final { cleanup-saved-temps } } */
1821
1822=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQu32.c'
1823--- old/gcc/testsuite/gcc.target/arm/neon/vandQu32.c 2010-07-29 15:38:15 +0000
1824+++ new/gcc/testsuite/gcc.target/arm/neon/vandQu32.c 2010-08-20 13:27:11 +0000
1825@@ -17,5 +17,5 @@
1826 out_uint32x4_t = vandq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
1827 }
1828
1829-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1830+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1831 /* { dg-final { cleanup-saved-temps } } */
1832
1833=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQu64.c'
1834--- old/gcc/testsuite/gcc.target/arm/neon/vandQu64.c 2010-07-29 15:38:15 +0000
1835+++ new/gcc/testsuite/gcc.target/arm/neon/vandQu64.c 2010-08-20 13:27:11 +0000
1836@@ -17,5 +17,5 @@
1837 out_uint64x2_t = vandq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
1838 }
1839
1840-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1841+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1842 /* { dg-final { cleanup-saved-temps } } */
1843
1844=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandQu8.c'
1845--- old/gcc/testsuite/gcc.target/arm/neon/vandQu8.c 2010-07-29 15:38:15 +0000
1846+++ new/gcc/testsuite/gcc.target/arm/neon/vandQu8.c 2010-08-20 13:27:11 +0000
1847@@ -17,5 +17,5 @@
1848 out_uint8x16_t = vandq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
1849 }
1850
1851-/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1852+/* { dg-final { scan-assembler "vand\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1853 /* { dg-final { cleanup-saved-temps } } */
1854
1855=== modified file 'gcc/testsuite/gcc.target/arm/neon/vands16.c'
1856--- old/gcc/testsuite/gcc.target/arm/neon/vands16.c 2010-07-29 15:38:15 +0000
1857+++ new/gcc/testsuite/gcc.target/arm/neon/vands16.c 2010-08-20 13:27:11 +0000
1858@@ -17,5 +17,5 @@
1859 out_int16x4_t = vand_s16 (arg0_int16x4_t, arg1_int16x4_t);
1860 }
1861
1862-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1863+/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1864 /* { dg-final { cleanup-saved-temps } } */
1865
1866=== modified file 'gcc/testsuite/gcc.target/arm/neon/vands32.c'
1867--- old/gcc/testsuite/gcc.target/arm/neon/vands32.c 2010-07-29 15:38:15 +0000
1868+++ new/gcc/testsuite/gcc.target/arm/neon/vands32.c 2010-08-20 13:27:11 +0000
1869@@ -17,5 +17,5 @@
1870 out_int32x2_t = vand_s32 (arg0_int32x2_t, arg1_int32x2_t);
1871 }
1872
1873-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1874+/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1875 /* { dg-final { cleanup-saved-temps } } */
1876
1877=== modified file 'gcc/testsuite/gcc.target/arm/neon/vands8.c'
1878--- old/gcc/testsuite/gcc.target/arm/neon/vands8.c 2010-07-29 15:38:15 +0000
1879+++ new/gcc/testsuite/gcc.target/arm/neon/vands8.c 2010-08-20 13:27:11 +0000
1880@@ -17,5 +17,5 @@
1881 out_int8x8_t = vand_s8 (arg0_int8x8_t, arg1_int8x8_t);
1882 }
1883
1884-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1885+/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1886 /* { dg-final { cleanup-saved-temps } } */
1887
1888=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandu16.c'
1889--- old/gcc/testsuite/gcc.target/arm/neon/vandu16.c 2010-07-29 15:38:15 +0000
1890+++ new/gcc/testsuite/gcc.target/arm/neon/vandu16.c 2010-08-20 13:27:11 +0000
1891@@ -17,5 +17,5 @@
1892 out_uint16x4_t = vand_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
1893 }
1894
1895-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1896+/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1897 /* { dg-final { cleanup-saved-temps } } */
1898
1899=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandu32.c'
1900--- old/gcc/testsuite/gcc.target/arm/neon/vandu32.c 2010-07-29 15:38:15 +0000
1901+++ new/gcc/testsuite/gcc.target/arm/neon/vandu32.c 2010-08-20 13:27:11 +0000
1902@@ -17,5 +17,5 @@
1903 out_uint32x2_t = vand_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
1904 }
1905
1906-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1907+/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1908 /* { dg-final { cleanup-saved-temps } } */
1909
1910=== modified file 'gcc/testsuite/gcc.target/arm/neon/vandu8.c'
1911--- old/gcc/testsuite/gcc.target/arm/neon/vandu8.c 2010-07-29 15:38:15 +0000
1912+++ new/gcc/testsuite/gcc.target/arm/neon/vandu8.c 2010-08-20 13:27:11 +0000
1913@@ -17,5 +17,5 @@
1914 out_uint8x8_t = vand_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
1915 }
1916
1917-/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1918+/* { dg-final { scan-assembler "vand\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1919 /* { dg-final { cleanup-saved-temps } } */
1920
1921=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQs16.c'
1922--- old/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c 2010-07-29 15:38:15 +0000
1923+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c 2010-08-20 13:27:11 +0000
1924@@ -17,5 +17,5 @@
1925 out_int16x8_t = vbicq_s16 (arg0_int16x8_t, arg1_int16x8_t);
1926 }
1927
1928-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1929+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1930 /* { dg-final { cleanup-saved-temps } } */
1931
1932=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQs32.c'
1933--- old/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c 2010-07-29 15:38:15 +0000
1934+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c 2010-08-20 13:27:11 +0000
1935@@ -17,5 +17,5 @@
1936 out_int32x4_t = vbicq_s32 (arg0_int32x4_t, arg1_int32x4_t);
1937 }
1938
1939-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1940+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1941 /* { dg-final { cleanup-saved-temps } } */
1942
1943=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQs64.c'
1944--- old/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c 2010-07-29 15:38:15 +0000
1945+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c 2010-08-20 13:27:11 +0000
1946@@ -17,5 +17,5 @@
1947 out_int64x2_t = vbicq_s64 (arg0_int64x2_t, arg1_int64x2_t);
1948 }
1949
1950-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1951+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1952 /* { dg-final { cleanup-saved-temps } } */
1953
1954=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQs8.c'
1955--- old/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c 2010-07-29 15:38:15 +0000
1956+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c 2010-08-20 13:27:11 +0000
1957@@ -17,5 +17,5 @@
1958 out_int8x16_t = vbicq_s8 (arg0_int8x16_t, arg1_int8x16_t);
1959 }
1960
1961-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1962+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1963 /* { dg-final { cleanup-saved-temps } } */
1964
1965=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQu16.c'
1966--- old/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c 2010-07-29 15:38:15 +0000
1967+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c 2010-08-20 13:27:11 +0000
1968@@ -17,5 +17,5 @@
1969 out_uint16x8_t = vbicq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
1970 }
1971
1972-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1973+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1974 /* { dg-final { cleanup-saved-temps } } */
1975
1976=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQu32.c'
1977--- old/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c 2010-07-29 15:38:15 +0000
1978+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c 2010-08-20 13:27:11 +0000
1979@@ -17,5 +17,5 @@
1980 out_uint32x4_t = vbicq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
1981 }
1982
1983-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1984+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1985 /* { dg-final { cleanup-saved-temps } } */
1986
1987=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQu64.c'
1988--- old/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c 2010-07-29 15:38:15 +0000
1989+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c 2010-08-20 13:27:11 +0000
1990@@ -17,5 +17,5 @@
1991 out_uint64x2_t = vbicq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
1992 }
1993
1994-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
1995+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
1996 /* { dg-final { cleanup-saved-temps } } */
1997
1998=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicQu8.c'
1999--- old/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c 2010-07-29 15:38:15 +0000
2000+++ new/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c 2010-08-20 13:27:11 +0000
2001@@ -17,5 +17,5 @@
2002 out_uint8x16_t = vbicq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
2003 }
2004
2005-/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2006+/* { dg-final { scan-assembler "vbic\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2007 /* { dg-final { cleanup-saved-temps } } */
2008
2009=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbics16.c'
2010--- old/gcc/testsuite/gcc.target/arm/neon/vbics16.c 2010-07-29 15:38:15 +0000
2011+++ new/gcc/testsuite/gcc.target/arm/neon/vbics16.c 2010-08-20 13:27:11 +0000
2012@@ -17,5 +17,5 @@
2013 out_int16x4_t = vbic_s16 (arg0_int16x4_t, arg1_int16x4_t);
2014 }
2015
2016-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2017+/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2018 /* { dg-final { cleanup-saved-temps } } */
2019
2020=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbics32.c'
2021--- old/gcc/testsuite/gcc.target/arm/neon/vbics32.c 2010-07-29 15:38:15 +0000
2022+++ new/gcc/testsuite/gcc.target/arm/neon/vbics32.c 2010-08-20 13:27:11 +0000
2023@@ -17,5 +17,5 @@
2024 out_int32x2_t = vbic_s32 (arg0_int32x2_t, arg1_int32x2_t);
2025 }
2026
2027-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2028+/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2029 /* { dg-final { cleanup-saved-temps } } */
2030
2031=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbics8.c'
2032--- old/gcc/testsuite/gcc.target/arm/neon/vbics8.c 2010-07-29 15:38:15 +0000
2033+++ new/gcc/testsuite/gcc.target/arm/neon/vbics8.c 2010-08-20 13:27:11 +0000
2034@@ -17,5 +17,5 @@
2035 out_int8x8_t = vbic_s8 (arg0_int8x8_t, arg1_int8x8_t);
2036 }
2037
2038-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2039+/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2040 /* { dg-final { cleanup-saved-temps } } */
2041
2042=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicu16.c'
2043--- old/gcc/testsuite/gcc.target/arm/neon/vbicu16.c 2010-07-29 15:38:15 +0000
2044+++ new/gcc/testsuite/gcc.target/arm/neon/vbicu16.c 2010-08-20 13:27:11 +0000
2045@@ -17,5 +17,5 @@
2046 out_uint16x4_t = vbic_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
2047 }
2048
2049-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2050+/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2051 /* { dg-final { cleanup-saved-temps } } */
2052
2053=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicu32.c'
2054--- old/gcc/testsuite/gcc.target/arm/neon/vbicu32.c 2010-07-29 15:38:15 +0000
2055+++ new/gcc/testsuite/gcc.target/arm/neon/vbicu32.c 2010-08-20 13:27:11 +0000
2056@@ -17,5 +17,5 @@
2057 out_uint32x2_t = vbic_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
2058 }
2059
2060-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2061+/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2062 /* { dg-final { cleanup-saved-temps } } */
2063
2064=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbicu8.c'
2065--- old/gcc/testsuite/gcc.target/arm/neon/vbicu8.c 2010-07-29 15:38:15 +0000
2066+++ new/gcc/testsuite/gcc.target/arm/neon/vbicu8.c 2010-08-20 13:27:11 +0000
2067@@ -17,5 +17,5 @@
2068 out_uint8x8_t = vbic_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
2069 }
2070
2071-/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2072+/* { dg-final { scan-assembler "vbic\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2073 /* { dg-final { cleanup-saved-temps } } */
2074
2075=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQf32.c'
2076--- old/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c 2010-07-29 15:38:15 +0000
2077+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c 2010-08-20 13:27:11 +0000
2078@@ -18,5 +18,5 @@
2079 out_float32x4_t = vbslq_f32 (arg0_uint32x4_t, arg1_float32x4_t, arg2_float32x4_t);
2080 }
2081
2082-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2083+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2084 /* { dg-final { cleanup-saved-temps } } */
2085
2086=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQp16.c'
2087--- old/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c 2010-07-29 15:38:15 +0000
2088+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c 2010-08-20 13:27:11 +0000
2089@@ -18,5 +18,5 @@
2090 out_poly16x8_t = vbslq_p16 (arg0_uint16x8_t, arg1_poly16x8_t, arg2_poly16x8_t);
2091 }
2092
2093-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2094+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2095 /* { dg-final { cleanup-saved-temps } } */
2096
2097=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQp8.c'
2098--- old/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c 2010-07-29 15:38:15 +0000
2099+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c 2010-08-20 13:27:11 +0000
2100@@ -18,5 +18,5 @@
2101 out_poly8x16_t = vbslq_p8 (arg0_uint8x16_t, arg1_poly8x16_t, arg2_poly8x16_t);
2102 }
2103
2104-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2105+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2106 /* { dg-final { cleanup-saved-temps } } */
2107
2108=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQs16.c'
2109--- old/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c 2010-07-29 15:38:15 +0000
2110+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c 2010-08-20 13:27:11 +0000
2111@@ -18,5 +18,5 @@
2112 out_int16x8_t = vbslq_s16 (arg0_uint16x8_t, arg1_int16x8_t, arg2_int16x8_t);
2113 }
2114
2115-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2116+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2117 /* { dg-final { cleanup-saved-temps } } */
2118
2119=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQs32.c'
2120--- old/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c 2010-07-29 15:38:15 +0000
2121+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c 2010-08-20 13:27:11 +0000
2122@@ -18,5 +18,5 @@
2123 out_int32x4_t = vbslq_s32 (arg0_uint32x4_t, arg1_int32x4_t, arg2_int32x4_t);
2124 }
2125
2126-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2127+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2128 /* { dg-final { cleanup-saved-temps } } */
2129
2130=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQs64.c'
2131--- old/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c 2010-07-29 15:38:15 +0000
2132+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c 2010-08-20 13:27:11 +0000
2133@@ -18,5 +18,5 @@
2134 out_int64x2_t = vbslq_s64 (arg0_uint64x2_t, arg1_int64x2_t, arg2_int64x2_t);
2135 }
2136
2137-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2138+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2139 /* { dg-final { cleanup-saved-temps } } */
2140
2141=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQs8.c'
2142--- old/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c 2010-07-29 15:38:15 +0000
2143+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c 2010-08-20 13:27:11 +0000
2144@@ -18,5 +18,5 @@
2145 out_int8x16_t = vbslq_s8 (arg0_uint8x16_t, arg1_int8x16_t, arg2_int8x16_t);
2146 }
2147
2148-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2149+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2150 /* { dg-final { cleanup-saved-temps } } */
2151
2152=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQu16.c'
2153--- old/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c 2010-07-29 15:38:15 +0000
2154+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c 2010-08-20 13:27:11 +0000
2155@@ -18,5 +18,5 @@
2156 out_uint16x8_t = vbslq_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16x8_t);
2157 }
2158
2159-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2160+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2161 /* { dg-final { cleanup-saved-temps } } */
2162
2163=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQu32.c'
2164--- old/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c 2010-07-29 15:38:15 +0000
2165+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c 2010-08-20 13:27:11 +0000
2166@@ -18,5 +18,5 @@
2167 out_uint32x4_t = vbslq_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32x4_t);
2168 }
2169
2170-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2171+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2172 /* { dg-final { cleanup-saved-temps } } */
2173
2174=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQu64.c'
2175--- old/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c 2010-07-29 15:38:15 +0000
2176+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c 2010-08-20 13:27:11 +0000
2177@@ -18,5 +18,5 @@
2178 out_uint64x2_t = vbslq_u64 (arg0_uint64x2_t, arg1_uint64x2_t, arg2_uint64x2_t);
2179 }
2180
2181-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2182+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2183 /* { dg-final { cleanup-saved-temps } } */
2184
2185=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslQu8.c'
2186--- old/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c 2010-07-29 15:38:15 +0000
2187+++ new/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c 2010-08-20 13:27:11 +0000
2188@@ -18,5 +18,5 @@
2189 out_uint8x16_t = vbslq_u8 (arg0_uint8x16_t, arg1_uint8x16_t, arg2_uint8x16_t);
2190 }
2191
2192-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2193+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2194 /* { dg-final { cleanup-saved-temps } } */
2195
2196=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslf32.c'
2197--- old/gcc/testsuite/gcc.target/arm/neon/vbslf32.c 2010-07-29 15:38:15 +0000
2198+++ new/gcc/testsuite/gcc.target/arm/neon/vbslf32.c 2010-08-20 13:27:11 +0000
2199@@ -18,5 +18,5 @@
2200 out_float32x2_t = vbsl_f32 (arg0_uint32x2_t, arg1_float32x2_t, arg2_float32x2_t);
2201 }
2202
2203-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2204+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2205 /* { dg-final { cleanup-saved-temps } } */
2206
2207=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslp16.c'
2208--- old/gcc/testsuite/gcc.target/arm/neon/vbslp16.c 2010-07-29 15:38:15 +0000
2209+++ new/gcc/testsuite/gcc.target/arm/neon/vbslp16.c 2010-08-20 13:27:11 +0000
2210@@ -18,5 +18,5 @@
2211 out_poly16x4_t = vbsl_p16 (arg0_uint16x4_t, arg1_poly16x4_t, arg2_poly16x4_t);
2212 }
2213
2214-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2215+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2216 /* { dg-final { cleanup-saved-temps } } */
2217
2218=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslp8.c'
2219--- old/gcc/testsuite/gcc.target/arm/neon/vbslp8.c 2010-07-29 15:38:15 +0000
2220+++ new/gcc/testsuite/gcc.target/arm/neon/vbslp8.c 2010-08-20 13:27:11 +0000
2221@@ -18,5 +18,5 @@
2222 out_poly8x8_t = vbsl_p8 (arg0_uint8x8_t, arg1_poly8x8_t, arg2_poly8x8_t);
2223 }
2224
2225-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2226+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2227 /* { dg-final { cleanup-saved-temps } } */
2228
2229=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbsls16.c'
2230--- old/gcc/testsuite/gcc.target/arm/neon/vbsls16.c 2010-07-29 15:38:15 +0000
2231+++ new/gcc/testsuite/gcc.target/arm/neon/vbsls16.c 2010-08-20 13:27:11 +0000
2232@@ -18,5 +18,5 @@
2233 out_int16x4_t = vbsl_s16 (arg0_uint16x4_t, arg1_int16x4_t, arg2_int16x4_t);
2234 }
2235
2236-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2237+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2238 /* { dg-final { cleanup-saved-temps } } */
2239
2240=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbsls32.c'
2241--- old/gcc/testsuite/gcc.target/arm/neon/vbsls32.c 2010-07-29 15:38:15 +0000
2242+++ new/gcc/testsuite/gcc.target/arm/neon/vbsls32.c 2010-08-20 13:27:11 +0000
2243@@ -18,5 +18,5 @@
2244 out_int32x2_t = vbsl_s32 (arg0_uint32x2_t, arg1_int32x2_t, arg2_int32x2_t);
2245 }
2246
2247-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2248+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2249 /* { dg-final { cleanup-saved-temps } } */
2250
2251=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbsls64.c'
2252--- old/gcc/testsuite/gcc.target/arm/neon/vbsls64.c 2010-07-29 15:38:15 +0000
2253+++ new/gcc/testsuite/gcc.target/arm/neon/vbsls64.c 2010-08-20 13:27:11 +0000
2254@@ -18,5 +18,5 @@
2255 out_int64x1_t = vbsl_s64 (arg0_uint64x1_t, arg1_int64x1_t, arg2_int64x1_t);
2256 }
2257
2258-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2259+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2260 /* { dg-final { cleanup-saved-temps } } */
2261
2262=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbsls8.c'
2263--- old/gcc/testsuite/gcc.target/arm/neon/vbsls8.c 2010-07-29 15:38:15 +0000
2264+++ new/gcc/testsuite/gcc.target/arm/neon/vbsls8.c 2010-08-20 13:27:11 +0000
2265@@ -18,5 +18,5 @@
2266 out_int8x8_t = vbsl_s8 (arg0_uint8x8_t, arg1_int8x8_t, arg2_int8x8_t);
2267 }
2268
2269-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2270+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2271 /* { dg-final { cleanup-saved-temps } } */
2272
2273=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslu16.c'
2274--- old/gcc/testsuite/gcc.target/arm/neon/vbslu16.c 2010-07-29 15:38:15 +0000
2275+++ new/gcc/testsuite/gcc.target/arm/neon/vbslu16.c 2010-08-20 13:27:11 +0000
2276@@ -18,5 +18,5 @@
2277 out_uint16x4_t = vbsl_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
2278 }
2279
2280-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2281+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2282 /* { dg-final { cleanup-saved-temps } } */
2283
2284=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslu32.c'
2285--- old/gcc/testsuite/gcc.target/arm/neon/vbslu32.c 2010-07-29 15:38:15 +0000
2286+++ new/gcc/testsuite/gcc.target/arm/neon/vbslu32.c 2010-08-20 13:27:11 +0000
2287@@ -18,5 +18,5 @@
2288 out_uint32x2_t = vbsl_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
2289 }
2290
2291-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2292+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2293 /* { dg-final { cleanup-saved-temps } } */
2294
2295=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslu64.c'
2296--- old/gcc/testsuite/gcc.target/arm/neon/vbslu64.c 2010-07-29 15:38:15 +0000
2297+++ new/gcc/testsuite/gcc.target/arm/neon/vbslu64.c 2010-08-20 13:27:11 +0000
2298@@ -18,5 +18,5 @@
2299 out_uint64x1_t = vbsl_u64 (arg0_uint64x1_t, arg1_uint64x1_t, arg2_uint64x1_t);
2300 }
2301
2302-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2303+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2304 /* { dg-final { cleanup-saved-temps } } */
2305
2306=== modified file 'gcc/testsuite/gcc.target/arm/neon/vbslu8.c'
2307--- old/gcc/testsuite/gcc.target/arm/neon/vbslu8.c 2010-07-29 15:38:15 +0000
2308+++ new/gcc/testsuite/gcc.target/arm/neon/vbslu8.c 2010-08-20 13:27:11 +0000
2309@@ -18,5 +18,5 @@
2310 out_uint8x8_t = vbsl_u8 (arg0_uint8x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
2311 }
2312
2313-/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2314+/* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2315 /* { dg-final { cleanup-saved-temps } } */
2316
2317=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcageQf32.c'
2318--- old/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c 2010-07-29 15:38:15 +0000
2319+++ new/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c 2010-08-20 13:27:11 +0000
2320@@ -17,5 +17,5 @@
2321 out_uint32x4_t = vcageq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2322 }
2323
2324-/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2325+/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2326 /* { dg-final { cleanup-saved-temps } } */
2327
2328=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcagef32.c'
2329--- old/gcc/testsuite/gcc.target/arm/neon/vcagef32.c 2010-07-29 15:38:15 +0000
2330+++ new/gcc/testsuite/gcc.target/arm/neon/vcagef32.c 2010-08-20 13:27:11 +0000
2331@@ -17,5 +17,5 @@
2332 out_uint32x2_t = vcage_f32 (arg0_float32x2_t, arg1_float32x2_t);
2333 }
2334
2335-/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2336+/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2337 /* { dg-final { cleanup-saved-temps } } */
2338
2339=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c'
2340--- old/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c 2010-07-29 15:38:15 +0000
2341+++ new/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c 2010-08-20 13:27:11 +0000
2342@@ -17,5 +17,5 @@
2343 out_uint32x4_t = vcagtq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2344 }
2345
2346-/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2347+/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2348 /* { dg-final { cleanup-saved-temps } } */
2349
2350=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcagtf32.c'
2351--- old/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c 2010-07-29 15:38:15 +0000
2352+++ new/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c 2010-08-20 13:27:11 +0000
2353@@ -17,5 +17,5 @@
2354 out_uint32x2_t = vcagt_f32 (arg0_float32x2_t, arg1_float32x2_t);
2355 }
2356
2357-/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2358+/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2359 /* { dg-final { cleanup-saved-temps } } */
2360
2361=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c'
2362--- old/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c 2010-07-29 15:38:15 +0000
2363+++ new/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c 2010-08-20 13:27:11 +0000
2364@@ -17,5 +17,5 @@
2365 out_uint32x4_t = vcaleq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2366 }
2367
2368-/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2369+/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2370 /* { dg-final { cleanup-saved-temps } } */
2371
2372=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcalef32.c'
2373--- old/gcc/testsuite/gcc.target/arm/neon/vcalef32.c 2010-07-29 15:38:15 +0000
2374+++ new/gcc/testsuite/gcc.target/arm/neon/vcalef32.c 2010-08-20 13:27:11 +0000
2375@@ -17,5 +17,5 @@
2376 out_uint32x2_t = vcale_f32 (arg0_float32x2_t, arg1_float32x2_t);
2377 }
2378
2379-/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2380+/* { dg-final { scan-assembler "vacge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2381 /* { dg-final { cleanup-saved-temps } } */
2382
2383=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c'
2384--- old/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c 2010-07-29 15:38:15 +0000
2385+++ new/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c 2010-08-20 13:27:11 +0000
2386@@ -17,5 +17,5 @@
2387 out_uint32x4_t = vcaltq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2388 }
2389
2390-/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2391+/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2392 /* { dg-final { cleanup-saved-temps } } */
2393
2394=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcaltf32.c'
2395--- old/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c 2010-07-29 15:38:15 +0000
2396+++ new/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c 2010-08-20 13:27:11 +0000
2397@@ -17,5 +17,5 @@
2398 out_uint32x2_t = vcalt_f32 (arg0_float32x2_t, arg1_float32x2_t);
2399 }
2400
2401-/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2402+/* { dg-final { scan-assembler "vacgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2403 /* { dg-final { cleanup-saved-temps } } */
2404
2405=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQf32.c'
2406--- old/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c 2010-07-29 15:38:15 +0000
2407+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c 2010-08-20 13:27:11 +0000
2408@@ -17,5 +17,5 @@
2409 out_uint32x4_t = vceqq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2410 }
2411
2412-/* { dg-final { scan-assembler "vceq\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2413+/* { dg-final { scan-assembler "vceq\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2414 /* { dg-final { cleanup-saved-temps } } */
2415
2416=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQp8.c'
2417--- old/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c 2010-07-29 15:38:15 +0000
2418+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c 2010-08-20 13:27:11 +0000
2419@@ -17,5 +17,5 @@
2420 out_uint8x16_t = vceqq_p8 (arg0_poly8x16_t, arg1_poly8x16_t);
2421 }
2422
2423-/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2424+/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2425 /* { dg-final { cleanup-saved-temps } } */
2426
2427=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQs16.c'
2428--- old/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c 2010-07-29 15:38:15 +0000
2429+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c 2010-08-20 13:27:11 +0000
2430@@ -17,5 +17,5 @@
2431 out_uint16x8_t = vceqq_s16 (arg0_int16x8_t, arg1_int16x8_t);
2432 }
2433
2434-/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2435+/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2436 /* { dg-final { cleanup-saved-temps } } */
2437
2438=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQs32.c'
2439--- old/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c 2010-07-29 15:38:15 +0000
2440+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c 2010-08-20 13:27:11 +0000
2441@@ -17,5 +17,5 @@
2442 out_uint32x4_t = vceqq_s32 (arg0_int32x4_t, arg1_int32x4_t);
2443 }
2444
2445-/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2446+/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2447 /* { dg-final { cleanup-saved-temps } } */
2448
2449=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQs8.c'
2450--- old/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c 2010-07-29 15:38:15 +0000
2451+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c 2010-08-20 13:27:11 +0000
2452@@ -17,5 +17,5 @@
2453 out_uint8x16_t = vceqq_s8 (arg0_int8x16_t, arg1_int8x16_t);
2454 }
2455
2456-/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2457+/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2458 /* { dg-final { cleanup-saved-temps } } */
2459
2460=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQu16.c'
2461--- old/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c 2010-07-29 15:38:15 +0000
2462+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c 2010-08-20 13:27:11 +0000
2463@@ -17,5 +17,5 @@
2464 out_uint16x8_t = vceqq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
2465 }
2466
2467-/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2468+/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2469 /* { dg-final { cleanup-saved-temps } } */
2470
2471=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQu32.c'
2472--- old/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c 2010-07-29 15:38:15 +0000
2473+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c 2010-08-20 13:27:11 +0000
2474@@ -17,5 +17,5 @@
2475 out_uint32x4_t = vceqq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
2476 }
2477
2478-/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2479+/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2480 /* { dg-final { cleanup-saved-temps } } */
2481
2482=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqQu8.c'
2483--- old/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c 2010-07-29 15:38:15 +0000
2484+++ new/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c 2010-08-20 13:27:11 +0000
2485@@ -17,5 +17,5 @@
2486 out_uint8x16_t = vceqq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
2487 }
2488
2489-/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2490+/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2491 /* { dg-final { cleanup-saved-temps } } */
2492
2493=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqf32.c'
2494--- old/gcc/testsuite/gcc.target/arm/neon/vceqf32.c 2010-07-29 15:38:15 +0000
2495+++ new/gcc/testsuite/gcc.target/arm/neon/vceqf32.c 2010-08-20 13:27:11 +0000
2496@@ -17,5 +17,5 @@
2497 out_uint32x2_t = vceq_f32 (arg0_float32x2_t, arg1_float32x2_t);
2498 }
2499
2500-/* { dg-final { scan-assembler "vceq\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2501+/* { dg-final { scan-assembler "vceq\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2502 /* { dg-final { cleanup-saved-temps } } */
2503
2504=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqp8.c'
2505--- old/gcc/testsuite/gcc.target/arm/neon/vceqp8.c 2010-07-29 15:38:15 +0000
2506+++ new/gcc/testsuite/gcc.target/arm/neon/vceqp8.c 2010-08-20 13:27:11 +0000
2507@@ -17,5 +17,5 @@
2508 out_uint8x8_t = vceq_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
2509 }
2510
2511-/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2512+/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2513 /* { dg-final { cleanup-saved-temps } } */
2514
2515=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqs16.c'
2516--- old/gcc/testsuite/gcc.target/arm/neon/vceqs16.c 2010-07-29 15:38:15 +0000
2517+++ new/gcc/testsuite/gcc.target/arm/neon/vceqs16.c 2010-08-20 13:27:11 +0000
2518@@ -17,5 +17,5 @@
2519 out_uint16x4_t = vceq_s16 (arg0_int16x4_t, arg1_int16x4_t);
2520 }
2521
2522-/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2523+/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2524 /* { dg-final { cleanup-saved-temps } } */
2525
2526=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqs32.c'
2527--- old/gcc/testsuite/gcc.target/arm/neon/vceqs32.c 2010-07-29 15:38:15 +0000
2528+++ new/gcc/testsuite/gcc.target/arm/neon/vceqs32.c 2010-08-20 13:27:11 +0000
2529@@ -17,5 +17,5 @@
2530 out_uint32x2_t = vceq_s32 (arg0_int32x2_t, arg1_int32x2_t);
2531 }
2532
2533-/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2534+/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2535 /* { dg-final { cleanup-saved-temps } } */
2536
2537=== modified file 'gcc/testsuite/gcc.target/arm/neon/vceqs8.c'
2538--- old/gcc/testsuite/gcc.target/arm/neon/vceqs8.c 2010-07-29 15:38:15 +0000
2539+++ new/gcc/testsuite/gcc.target/arm/neon/vceqs8.c 2010-08-20 13:27:11 +0000
2540@@ -17,5 +17,5 @@
2541 out_uint8x8_t = vceq_s8 (arg0_int8x8_t, arg1_int8x8_t);
2542 }
2543
2544-/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2545+/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2546 /* { dg-final { cleanup-saved-temps } } */
2547
2548=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcequ16.c'
2549--- old/gcc/testsuite/gcc.target/arm/neon/vcequ16.c 2010-07-29 15:38:15 +0000
2550+++ new/gcc/testsuite/gcc.target/arm/neon/vcequ16.c 2010-08-20 13:27:11 +0000
2551@@ -17,5 +17,5 @@
2552 out_uint16x4_t = vceq_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
2553 }
2554
2555-/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2556+/* { dg-final { scan-assembler "vceq\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2557 /* { dg-final { cleanup-saved-temps } } */
2558
2559=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcequ32.c'
2560--- old/gcc/testsuite/gcc.target/arm/neon/vcequ32.c 2010-07-29 15:38:15 +0000
2561+++ new/gcc/testsuite/gcc.target/arm/neon/vcequ32.c 2010-08-20 13:27:11 +0000
2562@@ -17,5 +17,5 @@
2563 out_uint32x2_t = vceq_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
2564 }
2565
2566-/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2567+/* { dg-final { scan-assembler "vceq\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2568 /* { dg-final { cleanup-saved-temps } } */
2569
2570=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcequ8.c'
2571--- old/gcc/testsuite/gcc.target/arm/neon/vcequ8.c 2010-07-29 15:38:15 +0000
2572+++ new/gcc/testsuite/gcc.target/arm/neon/vcequ8.c 2010-08-20 13:27:11 +0000
2573@@ -17,5 +17,5 @@
2574 out_uint8x8_t = vceq_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
2575 }
2576
2577-/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2578+/* { dg-final { scan-assembler "vceq\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2579 /* { dg-final { cleanup-saved-temps } } */
2580
2581=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c'
2582--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c 2010-07-29 15:38:15 +0000
2583+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c 2010-08-20 13:27:11 +0000
2584@@ -17,5 +17,5 @@
2585 out_uint32x4_t = vcgeq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2586 }
2587
2588-/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2589+/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2590 /* { dg-final { cleanup-saved-temps } } */
2591
2592=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c'
2593--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c 2010-07-29 15:38:15 +0000
2594+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c 2010-08-20 13:27:11 +0000
2595@@ -17,5 +17,5 @@
2596 out_uint16x8_t = vcgeq_s16 (arg0_int16x8_t, arg1_int16x8_t);
2597 }
2598
2599-/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2600+/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2601 /* { dg-final { cleanup-saved-temps } } */
2602
2603=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c'
2604--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c 2010-07-29 15:38:15 +0000
2605+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c 2010-08-20 13:27:11 +0000
2606@@ -17,5 +17,5 @@
2607 out_uint32x4_t = vcgeq_s32 (arg0_int32x4_t, arg1_int32x4_t);
2608 }
2609
2610-/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2611+/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2612 /* { dg-final { cleanup-saved-temps } } */
2613
2614=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c'
2615--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c 2010-07-29 15:38:15 +0000
2616+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c 2010-08-20 13:27:11 +0000
2617@@ -17,5 +17,5 @@
2618 out_uint8x16_t = vcgeq_s8 (arg0_int8x16_t, arg1_int8x16_t);
2619 }
2620
2621-/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2622+/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2623 /* { dg-final { cleanup-saved-temps } } */
2624
2625=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c'
2626--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c 2010-07-29 15:38:15 +0000
2627+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c 2010-08-20 13:27:11 +0000
2628@@ -17,5 +17,5 @@
2629 out_uint16x8_t = vcgeq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
2630 }
2631
2632-/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2633+/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2634 /* { dg-final { cleanup-saved-temps } } */
2635
2636=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c'
2637--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c 2010-07-29 15:38:15 +0000
2638+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c 2010-08-20 13:27:11 +0000
2639@@ -17,5 +17,5 @@
2640 out_uint32x4_t = vcgeq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
2641 }
2642
2643-/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2644+/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2645 /* { dg-final { cleanup-saved-temps } } */
2646
2647=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c'
2648--- old/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c 2010-07-29 15:38:15 +0000
2649+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c 2010-08-20 13:27:11 +0000
2650@@ -17,5 +17,5 @@
2651 out_uint8x16_t = vcgeq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
2652 }
2653
2654-/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2655+/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2656 /* { dg-final { cleanup-saved-temps } } */
2657
2658=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgef32.c'
2659--- old/gcc/testsuite/gcc.target/arm/neon/vcgef32.c 2010-07-29 15:38:15 +0000
2660+++ new/gcc/testsuite/gcc.target/arm/neon/vcgef32.c 2010-08-20 13:27:11 +0000
2661@@ -17,5 +17,5 @@
2662 out_uint32x2_t = vcge_f32 (arg0_float32x2_t, arg1_float32x2_t);
2663 }
2664
2665-/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2666+/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2667 /* { dg-final { cleanup-saved-temps } } */
2668
2669=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcges16.c'
2670--- old/gcc/testsuite/gcc.target/arm/neon/vcges16.c 2010-07-29 15:38:15 +0000
2671+++ new/gcc/testsuite/gcc.target/arm/neon/vcges16.c 2010-08-20 13:27:11 +0000
2672@@ -17,5 +17,5 @@
2673 out_uint16x4_t = vcge_s16 (arg0_int16x4_t, arg1_int16x4_t);
2674 }
2675
2676-/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2677+/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2678 /* { dg-final { cleanup-saved-temps } } */
2679
2680=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcges32.c'
2681--- old/gcc/testsuite/gcc.target/arm/neon/vcges32.c 2010-07-29 15:38:15 +0000
2682+++ new/gcc/testsuite/gcc.target/arm/neon/vcges32.c 2010-08-20 13:27:11 +0000
2683@@ -17,5 +17,5 @@
2684 out_uint32x2_t = vcge_s32 (arg0_int32x2_t, arg1_int32x2_t);
2685 }
2686
2687-/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2688+/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2689 /* { dg-final { cleanup-saved-temps } } */
2690
2691=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcges8.c'
2692--- old/gcc/testsuite/gcc.target/arm/neon/vcges8.c 2010-07-29 15:38:15 +0000
2693+++ new/gcc/testsuite/gcc.target/arm/neon/vcges8.c 2010-08-20 13:27:11 +0000
2694@@ -17,5 +17,5 @@
2695 out_uint8x8_t = vcge_s8 (arg0_int8x8_t, arg1_int8x8_t);
2696 }
2697
2698-/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2699+/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2700 /* { dg-final { cleanup-saved-temps } } */
2701
2702=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeu16.c'
2703--- old/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c 2010-07-29 15:38:15 +0000
2704+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c 2010-08-20 13:27:11 +0000
2705@@ -17,5 +17,5 @@
2706 out_uint16x4_t = vcge_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
2707 }
2708
2709-/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2710+/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2711 /* { dg-final { cleanup-saved-temps } } */
2712
2713=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeu32.c'
2714--- old/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c 2010-07-29 15:38:15 +0000
2715+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c 2010-08-20 13:27:11 +0000
2716@@ -17,5 +17,5 @@
2717 out_uint32x2_t = vcge_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
2718 }
2719
2720-/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2721+/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2722 /* { dg-final { cleanup-saved-temps } } */
2723
2724=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgeu8.c'
2725--- old/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c 2010-07-29 15:38:15 +0000
2726+++ new/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c 2010-08-20 13:27:11 +0000
2727@@ -17,5 +17,5 @@
2728 out_uint8x8_t = vcge_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
2729 }
2730
2731-/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2732+/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2733 /* { dg-final { cleanup-saved-temps } } */
2734
2735=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c'
2736--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c 2010-07-29 15:38:15 +0000
2737+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c 2010-08-20 13:27:11 +0000
2738@@ -17,5 +17,5 @@
2739 out_uint32x4_t = vcgtq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2740 }
2741
2742-/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2743+/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2744 /* { dg-final { cleanup-saved-temps } } */
2745
2746=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c'
2747--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c 2010-07-29 15:38:15 +0000
2748+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c 2010-08-20 13:27:11 +0000
2749@@ -17,5 +17,5 @@
2750 out_uint16x8_t = vcgtq_s16 (arg0_int16x8_t, arg1_int16x8_t);
2751 }
2752
2753-/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2754+/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2755 /* { dg-final { cleanup-saved-temps } } */
2756
2757=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c'
2758--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c 2010-07-29 15:38:15 +0000
2759+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c 2010-08-20 13:27:11 +0000
2760@@ -17,5 +17,5 @@
2761 out_uint32x4_t = vcgtq_s32 (arg0_int32x4_t, arg1_int32x4_t);
2762 }
2763
2764-/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2765+/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2766 /* { dg-final { cleanup-saved-temps } } */
2767
2768=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c'
2769--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c 2010-07-29 15:38:15 +0000
2770+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c 2010-08-20 13:27:11 +0000
2771@@ -17,5 +17,5 @@
2772 out_uint8x16_t = vcgtq_s8 (arg0_int8x16_t, arg1_int8x16_t);
2773 }
2774
2775-/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2776+/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2777 /* { dg-final { cleanup-saved-temps } } */
2778
2779=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c'
2780--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c 2010-07-29 15:38:15 +0000
2781+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c 2010-08-20 13:27:11 +0000
2782@@ -17,5 +17,5 @@
2783 out_uint16x8_t = vcgtq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
2784 }
2785
2786-/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2787+/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2788 /* { dg-final { cleanup-saved-temps } } */
2789
2790=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c'
2791--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c 2010-07-29 15:38:15 +0000
2792+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c 2010-08-20 13:27:11 +0000
2793@@ -17,5 +17,5 @@
2794 out_uint32x4_t = vcgtq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
2795 }
2796
2797-/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2798+/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2799 /* { dg-final { cleanup-saved-temps } } */
2800
2801=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c'
2802--- old/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c 2010-07-29 15:38:15 +0000
2803+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c 2010-08-20 13:27:11 +0000
2804@@ -17,5 +17,5 @@
2805 out_uint8x16_t = vcgtq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
2806 }
2807
2808-/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2809+/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2810 /* { dg-final { cleanup-saved-temps } } */
2811
2812=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtf32.c'
2813--- old/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c 2010-07-29 15:38:15 +0000
2814+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c 2010-08-20 13:27:11 +0000
2815@@ -17,5 +17,5 @@
2816 out_uint32x2_t = vcgt_f32 (arg0_float32x2_t, arg1_float32x2_t);
2817 }
2818
2819-/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2820+/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2821 /* { dg-final { cleanup-saved-temps } } */
2822
2823=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgts16.c'
2824--- old/gcc/testsuite/gcc.target/arm/neon/vcgts16.c 2010-07-29 15:38:15 +0000
2825+++ new/gcc/testsuite/gcc.target/arm/neon/vcgts16.c 2010-08-20 13:27:11 +0000
2826@@ -17,5 +17,5 @@
2827 out_uint16x4_t = vcgt_s16 (arg0_int16x4_t, arg1_int16x4_t);
2828 }
2829
2830-/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2831+/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2832 /* { dg-final { cleanup-saved-temps } } */
2833
2834=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgts32.c'
2835--- old/gcc/testsuite/gcc.target/arm/neon/vcgts32.c 2010-07-29 15:38:15 +0000
2836+++ new/gcc/testsuite/gcc.target/arm/neon/vcgts32.c 2010-08-20 13:27:11 +0000
2837@@ -17,5 +17,5 @@
2838 out_uint32x2_t = vcgt_s32 (arg0_int32x2_t, arg1_int32x2_t);
2839 }
2840
2841-/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2842+/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2843 /* { dg-final { cleanup-saved-temps } } */
2844
2845=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgts8.c'
2846--- old/gcc/testsuite/gcc.target/arm/neon/vcgts8.c 2010-07-29 15:38:15 +0000
2847+++ new/gcc/testsuite/gcc.target/arm/neon/vcgts8.c 2010-08-20 13:27:11 +0000
2848@@ -17,5 +17,5 @@
2849 out_uint8x8_t = vcgt_s8 (arg0_int8x8_t, arg1_int8x8_t);
2850 }
2851
2852-/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2853+/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2854 /* { dg-final { cleanup-saved-temps } } */
2855
2856=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtu16.c'
2857--- old/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c 2010-07-29 15:38:15 +0000
2858+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c 2010-08-20 13:27:11 +0000
2859@@ -17,5 +17,5 @@
2860 out_uint16x4_t = vcgt_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
2861 }
2862
2863-/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2864+/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2865 /* { dg-final { cleanup-saved-temps } } */
2866
2867=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtu32.c'
2868--- old/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c 2010-07-29 15:38:15 +0000
2869+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c 2010-08-20 13:27:11 +0000
2870@@ -17,5 +17,5 @@
2871 out_uint32x2_t = vcgt_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
2872 }
2873
2874-/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2875+/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2876 /* { dg-final { cleanup-saved-temps } } */
2877
2878=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcgtu8.c'
2879--- old/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c 2010-07-29 15:38:15 +0000
2880+++ new/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c 2010-08-20 13:27:11 +0000
2881@@ -17,5 +17,5 @@
2882 out_uint8x8_t = vcgt_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
2883 }
2884
2885-/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2886+/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2887 /* { dg-final { cleanup-saved-temps } } */
2888
2889=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQf32.c'
2890--- old/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c 2010-07-29 15:38:15 +0000
2891+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c 2010-08-20 13:27:11 +0000
2892@@ -17,5 +17,5 @@
2893 out_uint32x4_t = vcleq_f32 (arg0_float32x4_t, arg1_float32x4_t);
2894 }
2895
2896-/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2897+/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2898 /* { dg-final { cleanup-saved-temps } } */
2899
2900=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQs16.c'
2901--- old/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c 2010-07-29 15:38:15 +0000
2902+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c 2010-08-20 13:27:11 +0000
2903@@ -17,5 +17,5 @@
2904 out_uint16x8_t = vcleq_s16 (arg0_int16x8_t, arg1_int16x8_t);
2905 }
2906
2907-/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2908+/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2909 /* { dg-final { cleanup-saved-temps } } */
2910
2911=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQs32.c'
2912--- old/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c 2010-07-29 15:38:15 +0000
2913+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c 2010-08-20 13:27:11 +0000
2914@@ -17,5 +17,5 @@
2915 out_uint32x4_t = vcleq_s32 (arg0_int32x4_t, arg1_int32x4_t);
2916 }
2917
2918-/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2919+/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2920 /* { dg-final { cleanup-saved-temps } } */
2921
2922=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQs8.c'
2923--- old/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c 2010-07-29 15:38:15 +0000
2924+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c 2010-08-20 13:27:11 +0000
2925@@ -17,5 +17,5 @@
2926 out_uint8x16_t = vcleq_s8 (arg0_int8x16_t, arg1_int8x16_t);
2927 }
2928
2929-/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2930+/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2931 /* { dg-final { cleanup-saved-temps } } */
2932
2933=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQu16.c'
2934--- old/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c 2010-07-29 15:38:15 +0000
2935+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c 2010-08-20 13:27:11 +0000
2936@@ -17,5 +17,5 @@
2937 out_uint16x8_t = vcleq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
2938 }
2939
2940-/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2941+/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2942 /* { dg-final { cleanup-saved-temps } } */
2943
2944=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQu32.c'
2945--- old/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c 2010-07-29 15:38:15 +0000
2946+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c 2010-08-20 13:27:11 +0000
2947@@ -17,5 +17,5 @@
2948 out_uint32x4_t = vcleq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
2949 }
2950
2951-/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2952+/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2953 /* { dg-final { cleanup-saved-temps } } */
2954
2955=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleQu8.c'
2956--- old/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c 2010-07-29 15:38:15 +0000
2957+++ new/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c 2010-08-20 13:27:11 +0000
2958@@ -17,5 +17,5 @@
2959 out_uint8x16_t = vcleq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
2960 }
2961
2962-/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2963+/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2964 /* { dg-final { cleanup-saved-temps } } */
2965
2966=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclef32.c'
2967--- old/gcc/testsuite/gcc.target/arm/neon/vclef32.c 2010-07-29 15:38:15 +0000
2968+++ new/gcc/testsuite/gcc.target/arm/neon/vclef32.c 2010-08-20 13:27:11 +0000
2969@@ -17,5 +17,5 @@
2970 out_uint32x2_t = vcle_f32 (arg0_float32x2_t, arg1_float32x2_t);
2971 }
2972
2973-/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2974+/* { dg-final { scan-assembler "vcge\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2975 /* { dg-final { cleanup-saved-temps } } */
2976
2977=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcles16.c'
2978--- old/gcc/testsuite/gcc.target/arm/neon/vcles16.c 2010-07-29 15:38:15 +0000
2979+++ new/gcc/testsuite/gcc.target/arm/neon/vcles16.c 2010-08-20 13:27:11 +0000
2980@@ -17,5 +17,5 @@
2981 out_uint16x4_t = vcle_s16 (arg0_int16x4_t, arg1_int16x4_t);
2982 }
2983
2984-/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2985+/* { dg-final { scan-assembler "vcge\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2986 /* { dg-final { cleanup-saved-temps } } */
2987
2988=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcles32.c'
2989--- old/gcc/testsuite/gcc.target/arm/neon/vcles32.c 2010-07-29 15:38:15 +0000
2990+++ new/gcc/testsuite/gcc.target/arm/neon/vcles32.c 2010-08-20 13:27:11 +0000
2991@@ -17,5 +17,5 @@
2992 out_uint32x2_t = vcle_s32 (arg0_int32x2_t, arg1_int32x2_t);
2993 }
2994
2995-/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
2996+/* { dg-final { scan-assembler "vcge\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
2997 /* { dg-final { cleanup-saved-temps } } */
2998
2999=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcles8.c'
3000--- old/gcc/testsuite/gcc.target/arm/neon/vcles8.c 2010-07-29 15:38:15 +0000
3001+++ new/gcc/testsuite/gcc.target/arm/neon/vcles8.c 2010-08-20 13:27:11 +0000
3002@@ -17,5 +17,5 @@
3003 out_uint8x8_t = vcle_s8 (arg0_int8x8_t, arg1_int8x8_t);
3004 }
3005
3006-/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3007+/* { dg-final { scan-assembler "vcge\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3008 /* { dg-final { cleanup-saved-temps } } */
3009
3010=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleu16.c'
3011--- old/gcc/testsuite/gcc.target/arm/neon/vcleu16.c 2010-07-29 15:38:15 +0000
3012+++ new/gcc/testsuite/gcc.target/arm/neon/vcleu16.c 2010-08-20 13:27:11 +0000
3013@@ -17,5 +17,5 @@
3014 out_uint16x4_t = vcle_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
3015 }
3016
3017-/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3018+/* { dg-final { scan-assembler "vcge\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3019 /* { dg-final { cleanup-saved-temps } } */
3020
3021=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleu32.c'
3022--- old/gcc/testsuite/gcc.target/arm/neon/vcleu32.c 2010-07-29 15:38:15 +0000
3023+++ new/gcc/testsuite/gcc.target/arm/neon/vcleu32.c 2010-08-20 13:27:11 +0000
3024@@ -17,5 +17,5 @@
3025 out_uint32x2_t = vcle_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
3026 }
3027
3028-/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3029+/* { dg-final { scan-assembler "vcge\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3030 /* { dg-final { cleanup-saved-temps } } */
3031
3032=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcleu8.c'
3033--- old/gcc/testsuite/gcc.target/arm/neon/vcleu8.c 2010-07-29 15:38:15 +0000
3034+++ new/gcc/testsuite/gcc.target/arm/neon/vcleu8.c 2010-08-20 13:27:11 +0000
3035@@ -17,5 +17,5 @@
3036 out_uint8x8_t = vcle_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
3037 }
3038
3039-/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3040+/* { dg-final { scan-assembler "vcge\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3041 /* { dg-final { cleanup-saved-temps } } */
3042
3043=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclsQs16.c'
3044--- old/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c 2010-07-29 15:38:15 +0000
3045+++ new/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c 2010-08-20 13:27:11 +0000
3046@@ -16,5 +16,5 @@
3047 out_int16x8_t = vclsq_s16 (arg0_int16x8_t);
3048 }
3049
3050-/* { dg-final { scan-assembler "vcls\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3051+/* { dg-final { scan-assembler "vcls\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3052 /* { dg-final { cleanup-saved-temps } } */
3053
3054=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclsQs32.c'
3055--- old/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c 2010-07-29 15:38:15 +0000
3056+++ new/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c 2010-08-20 13:27:11 +0000
3057@@ -16,5 +16,5 @@
3058 out_int32x4_t = vclsq_s32 (arg0_int32x4_t);
3059 }
3060
3061-/* { dg-final { scan-assembler "vcls\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3062+/* { dg-final { scan-assembler "vcls\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3063 /* { dg-final { cleanup-saved-temps } } */
3064
3065=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclsQs8.c'
3066--- old/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c 2010-07-29 15:38:15 +0000
3067+++ new/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c 2010-08-20 13:27:11 +0000
3068@@ -16,5 +16,5 @@
3069 out_int8x16_t = vclsq_s8 (arg0_int8x16_t);
3070 }
3071
3072-/* { dg-final { scan-assembler "vcls\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3073+/* { dg-final { scan-assembler "vcls\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3074 /* { dg-final { cleanup-saved-temps } } */
3075
3076=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclss16.c'
3077--- old/gcc/testsuite/gcc.target/arm/neon/vclss16.c 2010-07-29 15:38:15 +0000
3078+++ new/gcc/testsuite/gcc.target/arm/neon/vclss16.c 2010-08-20 13:27:11 +0000
3079@@ -16,5 +16,5 @@
3080 out_int16x4_t = vcls_s16 (arg0_int16x4_t);
3081 }
3082
3083-/* { dg-final { scan-assembler "vcls\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3084+/* { dg-final { scan-assembler "vcls\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3085 /* { dg-final { cleanup-saved-temps } } */
3086
3087=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclss32.c'
3088--- old/gcc/testsuite/gcc.target/arm/neon/vclss32.c 2010-07-29 15:38:15 +0000
3089+++ new/gcc/testsuite/gcc.target/arm/neon/vclss32.c 2010-08-20 13:27:11 +0000
3090@@ -16,5 +16,5 @@
3091 out_int32x2_t = vcls_s32 (arg0_int32x2_t);
3092 }
3093
3094-/* { dg-final { scan-assembler "vcls\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3095+/* { dg-final { scan-assembler "vcls\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3096 /* { dg-final { cleanup-saved-temps } } */
3097
3098=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclss8.c'
3099--- old/gcc/testsuite/gcc.target/arm/neon/vclss8.c 2010-07-29 15:38:15 +0000
3100+++ new/gcc/testsuite/gcc.target/arm/neon/vclss8.c 2010-08-20 13:27:11 +0000
3101@@ -16,5 +16,5 @@
3102 out_int8x8_t = vcls_s8 (arg0_int8x8_t);
3103 }
3104
3105-/* { dg-final { scan-assembler "vcls\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3106+/* { dg-final { scan-assembler "vcls\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3107 /* { dg-final { cleanup-saved-temps } } */
3108
3109=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQf32.c'
3110--- old/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c 2010-07-29 15:38:15 +0000
3111+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c 2010-08-20 13:27:11 +0000
3112@@ -17,5 +17,5 @@
3113 out_uint32x4_t = vcltq_f32 (arg0_float32x4_t, arg1_float32x4_t);
3114 }
3115
3116-/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3117+/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3118 /* { dg-final { cleanup-saved-temps } } */
3119
3120=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQs16.c'
3121--- old/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c 2010-07-29 15:38:15 +0000
3122+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c 2010-08-20 13:27:11 +0000
3123@@ -17,5 +17,5 @@
3124 out_uint16x8_t = vcltq_s16 (arg0_int16x8_t, arg1_int16x8_t);
3125 }
3126
3127-/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3128+/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3129 /* { dg-final { cleanup-saved-temps } } */
3130
3131=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQs32.c'
3132--- old/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c 2010-07-29 15:38:15 +0000
3133+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c 2010-08-20 13:27:11 +0000
3134@@ -17,5 +17,5 @@
3135 out_uint32x4_t = vcltq_s32 (arg0_int32x4_t, arg1_int32x4_t);
3136 }
3137
3138-/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3139+/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3140 /* { dg-final { cleanup-saved-temps } } */
3141
3142=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQs8.c'
3143--- old/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c 2010-07-29 15:38:15 +0000
3144+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c 2010-08-20 13:27:11 +0000
3145@@ -17,5 +17,5 @@
3146 out_uint8x16_t = vcltq_s8 (arg0_int8x16_t, arg1_int8x16_t);
3147 }
3148
3149-/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3150+/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3151 /* { dg-final { cleanup-saved-temps } } */
3152
3153=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQu16.c'
3154--- old/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c 2010-07-29 15:38:15 +0000
3155+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c 2010-08-20 13:27:11 +0000
3156@@ -17,5 +17,5 @@
3157 out_uint16x8_t = vcltq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
3158 }
3159
3160-/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3161+/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3162 /* { dg-final { cleanup-saved-temps } } */
3163
3164=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQu32.c'
3165--- old/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c 2010-07-29 15:38:15 +0000
3166+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c 2010-08-20 13:27:11 +0000
3167@@ -17,5 +17,5 @@
3168 out_uint32x4_t = vcltq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
3169 }
3170
3171-/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3172+/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3173 /* { dg-final { cleanup-saved-temps } } */
3174
3175=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltQu8.c'
3176--- old/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c 2010-07-29 15:38:15 +0000
3177+++ new/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c 2010-08-20 13:27:11 +0000
3178@@ -17,5 +17,5 @@
3179 out_uint8x16_t = vcltq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
3180 }
3181
3182-/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3183+/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3184 /* { dg-final { cleanup-saved-temps } } */
3185
3186=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltf32.c'
3187--- old/gcc/testsuite/gcc.target/arm/neon/vcltf32.c 2010-07-29 15:38:15 +0000
3188+++ new/gcc/testsuite/gcc.target/arm/neon/vcltf32.c 2010-08-20 13:27:11 +0000
3189@@ -17,5 +17,5 @@
3190 out_uint32x2_t = vclt_f32 (arg0_float32x2_t, arg1_float32x2_t);
3191 }
3192
3193-/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3194+/* { dg-final { scan-assembler "vcgt\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3195 /* { dg-final { cleanup-saved-temps } } */
3196
3197=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclts16.c'
3198--- old/gcc/testsuite/gcc.target/arm/neon/vclts16.c 2010-07-29 15:38:15 +0000
3199+++ new/gcc/testsuite/gcc.target/arm/neon/vclts16.c 2010-08-20 13:27:11 +0000
3200@@ -17,5 +17,5 @@
3201 out_uint16x4_t = vclt_s16 (arg0_int16x4_t, arg1_int16x4_t);
3202 }
3203
3204-/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3205+/* { dg-final { scan-assembler "vcgt\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3206 /* { dg-final { cleanup-saved-temps } } */
3207
3208=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclts32.c'
3209--- old/gcc/testsuite/gcc.target/arm/neon/vclts32.c 2010-07-29 15:38:15 +0000
3210+++ new/gcc/testsuite/gcc.target/arm/neon/vclts32.c 2010-08-20 13:27:11 +0000
3211@@ -17,5 +17,5 @@
3212 out_uint32x2_t = vclt_s32 (arg0_int32x2_t, arg1_int32x2_t);
3213 }
3214
3215-/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3216+/* { dg-final { scan-assembler "vcgt\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3217 /* { dg-final { cleanup-saved-temps } } */
3218
3219=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclts8.c'
3220--- old/gcc/testsuite/gcc.target/arm/neon/vclts8.c 2010-07-29 15:38:15 +0000
3221+++ new/gcc/testsuite/gcc.target/arm/neon/vclts8.c 2010-08-20 13:27:11 +0000
3222@@ -17,5 +17,5 @@
3223 out_uint8x8_t = vclt_s8 (arg0_int8x8_t, arg1_int8x8_t);
3224 }
3225
3226-/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3227+/* { dg-final { scan-assembler "vcgt\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3228 /* { dg-final { cleanup-saved-temps } } */
3229
3230=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltu16.c'
3231--- old/gcc/testsuite/gcc.target/arm/neon/vcltu16.c 2010-07-29 15:38:15 +0000
3232+++ new/gcc/testsuite/gcc.target/arm/neon/vcltu16.c 2010-08-20 13:27:11 +0000
3233@@ -17,5 +17,5 @@
3234 out_uint16x4_t = vclt_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
3235 }
3236
3237-/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3238+/* { dg-final { scan-assembler "vcgt\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3239 /* { dg-final { cleanup-saved-temps } } */
3240
3241=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltu32.c'
3242--- old/gcc/testsuite/gcc.target/arm/neon/vcltu32.c 2010-07-29 15:38:15 +0000
3243+++ new/gcc/testsuite/gcc.target/arm/neon/vcltu32.c 2010-08-20 13:27:11 +0000
3244@@ -17,5 +17,5 @@
3245 out_uint32x2_t = vclt_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
3246 }
3247
3248-/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3249+/* { dg-final { scan-assembler "vcgt\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3250 /* { dg-final { cleanup-saved-temps } } */
3251
3252=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcltu8.c'
3253--- old/gcc/testsuite/gcc.target/arm/neon/vcltu8.c 2010-07-29 15:38:15 +0000
3254+++ new/gcc/testsuite/gcc.target/arm/neon/vcltu8.c 2010-08-20 13:27:11 +0000
3255@@ -17,5 +17,5 @@
3256 out_uint8x8_t = vclt_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
3257 }
3258
3259-/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3260+/* { dg-final { scan-assembler "vcgt\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3261 /* { dg-final { cleanup-saved-temps } } */
3262
3263=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzQs16.c'
3264--- old/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c 2010-07-29 15:38:15 +0000
3265+++ new/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c 2010-08-20 13:27:11 +0000
3266@@ -16,5 +16,5 @@
3267 out_int16x8_t = vclzq_s16 (arg0_int16x8_t);
3268 }
3269
3270-/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3271+/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3272 /* { dg-final { cleanup-saved-temps } } */
3273
3274=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzQs32.c'
3275--- old/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c 2010-07-29 15:38:15 +0000
3276+++ new/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c 2010-08-20 13:27:11 +0000
3277@@ -16,5 +16,5 @@
3278 out_int32x4_t = vclzq_s32 (arg0_int32x4_t);
3279 }
3280
3281-/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3282+/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3283 /* { dg-final { cleanup-saved-temps } } */
3284
3285=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzQs8.c'
3286--- old/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c 2010-07-29 15:38:15 +0000
3287+++ new/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c 2010-08-20 13:27:11 +0000
3288@@ -16,5 +16,5 @@
3289 out_int8x16_t = vclzq_s8 (arg0_int8x16_t);
3290 }
3291
3292-/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3293+/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3294 /* { dg-final { cleanup-saved-temps } } */
3295
3296=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzQu16.c'
3297--- old/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c 2010-07-29 15:38:15 +0000
3298+++ new/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c 2010-08-20 13:27:11 +0000
3299@@ -16,5 +16,5 @@
3300 out_uint16x8_t = vclzq_u16 (arg0_uint16x8_t);
3301 }
3302
3303-/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3304+/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3305 /* { dg-final { cleanup-saved-temps } } */
3306
3307=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzQu32.c'
3308--- old/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c 2010-07-29 15:38:15 +0000
3309+++ new/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c 2010-08-20 13:27:11 +0000
3310@@ -16,5 +16,5 @@
3311 out_uint32x4_t = vclzq_u32 (arg0_uint32x4_t);
3312 }
3313
3314-/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3315+/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3316 /* { dg-final { cleanup-saved-temps } } */
3317
3318=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzQu8.c'
3319--- old/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c 2010-07-29 15:38:15 +0000
3320+++ new/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c 2010-08-20 13:27:11 +0000
3321@@ -16,5 +16,5 @@
3322 out_uint8x16_t = vclzq_u8 (arg0_uint8x16_t);
3323 }
3324
3325-/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3326+/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3327 /* { dg-final { cleanup-saved-temps } } */
3328
3329=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzs16.c'
3330--- old/gcc/testsuite/gcc.target/arm/neon/vclzs16.c 2010-07-29 15:38:15 +0000
3331+++ new/gcc/testsuite/gcc.target/arm/neon/vclzs16.c 2010-08-20 13:27:11 +0000
3332@@ -16,5 +16,5 @@
3333 out_int16x4_t = vclz_s16 (arg0_int16x4_t);
3334 }
3335
3336-/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3337+/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3338 /* { dg-final { cleanup-saved-temps } } */
3339
3340=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzs32.c'
3341--- old/gcc/testsuite/gcc.target/arm/neon/vclzs32.c 2010-07-29 15:38:15 +0000
3342+++ new/gcc/testsuite/gcc.target/arm/neon/vclzs32.c 2010-08-20 13:27:11 +0000
3343@@ -16,5 +16,5 @@
3344 out_int32x2_t = vclz_s32 (arg0_int32x2_t);
3345 }
3346
3347-/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3348+/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3349 /* { dg-final { cleanup-saved-temps } } */
3350
3351=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzs8.c'
3352--- old/gcc/testsuite/gcc.target/arm/neon/vclzs8.c 2010-07-29 15:38:15 +0000
3353+++ new/gcc/testsuite/gcc.target/arm/neon/vclzs8.c 2010-08-20 13:27:11 +0000
3354@@ -16,5 +16,5 @@
3355 out_int8x8_t = vclz_s8 (arg0_int8x8_t);
3356 }
3357
3358-/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3359+/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3360 /* { dg-final { cleanup-saved-temps } } */
3361
3362=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzu16.c'
3363--- old/gcc/testsuite/gcc.target/arm/neon/vclzu16.c 2010-07-29 15:38:15 +0000
3364+++ new/gcc/testsuite/gcc.target/arm/neon/vclzu16.c 2010-08-20 13:27:11 +0000
3365@@ -16,5 +16,5 @@
3366 out_uint16x4_t = vclz_u16 (arg0_uint16x4_t);
3367 }
3368
3369-/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3370+/* { dg-final { scan-assembler "vclz\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3371 /* { dg-final { cleanup-saved-temps } } */
3372
3373=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzu32.c'
3374--- old/gcc/testsuite/gcc.target/arm/neon/vclzu32.c 2010-07-29 15:38:15 +0000
3375+++ new/gcc/testsuite/gcc.target/arm/neon/vclzu32.c 2010-08-20 13:27:11 +0000
3376@@ -16,5 +16,5 @@
3377 out_uint32x2_t = vclz_u32 (arg0_uint32x2_t);
3378 }
3379
3380-/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3381+/* { dg-final { scan-assembler "vclz\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3382 /* { dg-final { cleanup-saved-temps } } */
3383
3384=== modified file 'gcc/testsuite/gcc.target/arm/neon/vclzu8.c'
3385--- old/gcc/testsuite/gcc.target/arm/neon/vclzu8.c 2010-07-29 15:38:15 +0000
3386+++ new/gcc/testsuite/gcc.target/arm/neon/vclzu8.c 2010-08-20 13:27:11 +0000
3387@@ -16,5 +16,5 @@
3388 out_uint8x8_t = vclz_u8 (arg0_uint8x8_t);
3389 }
3390
3391-/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3392+/* { dg-final { scan-assembler "vclz\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3393 /* { dg-final { cleanup-saved-temps } } */
3394
3395=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcntQp8.c'
3396--- old/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c 2010-07-29 15:38:15 +0000
3397+++ new/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c 2010-08-20 13:27:11 +0000
3398@@ -16,5 +16,5 @@
3399 out_poly8x16_t = vcntq_p8 (arg0_poly8x16_t);
3400 }
3401
3402-/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3403+/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3404 /* { dg-final { cleanup-saved-temps } } */
3405
3406=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcntQs8.c'
3407--- old/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c 2010-07-29 15:38:15 +0000
3408+++ new/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c 2010-08-20 13:27:11 +0000
3409@@ -16,5 +16,5 @@
3410 out_int8x16_t = vcntq_s8 (arg0_int8x16_t);
3411 }
3412
3413-/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3414+/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3415 /* { dg-final { cleanup-saved-temps } } */
3416
3417=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcntQu8.c'
3418--- old/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c 2010-07-29 15:38:15 +0000
3419+++ new/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c 2010-08-20 13:27:11 +0000
3420@@ -16,5 +16,5 @@
3421 out_uint8x16_t = vcntq_u8 (arg0_uint8x16_t);
3422 }
3423
3424-/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3425+/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3426 /* { dg-final { cleanup-saved-temps } } */
3427
3428=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcntp8.c'
3429--- old/gcc/testsuite/gcc.target/arm/neon/vcntp8.c 2010-07-29 15:38:15 +0000
3430+++ new/gcc/testsuite/gcc.target/arm/neon/vcntp8.c 2010-08-20 13:27:11 +0000
3431@@ -16,5 +16,5 @@
3432 out_poly8x8_t = vcnt_p8 (arg0_poly8x8_t);
3433 }
3434
3435-/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3436+/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3437 /* { dg-final { cleanup-saved-temps } } */
3438
3439=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcnts8.c'
3440--- old/gcc/testsuite/gcc.target/arm/neon/vcnts8.c 2010-07-29 15:38:15 +0000
3441+++ new/gcc/testsuite/gcc.target/arm/neon/vcnts8.c 2010-08-20 13:27:11 +0000
3442@@ -16,5 +16,5 @@
3443 out_int8x8_t = vcnt_s8 (arg0_int8x8_t);
3444 }
3445
3446-/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3447+/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3448 /* { dg-final { cleanup-saved-temps } } */
3449
3450=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcntu8.c'
3451--- old/gcc/testsuite/gcc.target/arm/neon/vcntu8.c 2010-07-29 15:38:15 +0000
3452+++ new/gcc/testsuite/gcc.target/arm/neon/vcntu8.c 2010-08-20 13:27:11 +0000
3453@@ -16,5 +16,5 @@
3454 out_uint8x8_t = vcnt_u8 (arg0_uint8x8_t);
3455 }
3456
3457-/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3458+/* { dg-final { scan-assembler "vcnt\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3459 /* { dg-final { cleanup-saved-temps } } */
3460
3461=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c'
3462--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c 2010-07-29 15:38:15 +0000
3463+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c 2010-08-20 13:27:11 +0000
3464@@ -16,5 +16,5 @@
3465 out_float32x4_t = vcvtq_n_f32_s32 (arg0_int32x4_t, 1);
3466 }
3467
3468-/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3469+/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3470 /* { dg-final { cleanup-saved-temps } } */
3471
3472=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c'
3473--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c 2010-07-29 15:38:15 +0000
3474+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c 2010-08-20 13:27:11 +0000
3475@@ -16,5 +16,5 @@
3476 out_float32x4_t = vcvtq_n_f32_u32 (arg0_uint32x4_t, 1);
3477 }
3478
3479-/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3480+/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3481 /* { dg-final { cleanup-saved-temps } } */
3482
3483=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c'
3484--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c 2010-07-29 15:38:15 +0000
3485+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c 2010-08-20 13:27:11 +0000
3486@@ -16,5 +16,5 @@
3487 out_int32x4_t = vcvtq_n_s32_f32 (arg0_float32x4_t, 1);
3488 }
3489
3490-/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3491+/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3492 /* { dg-final { cleanup-saved-temps } } */
3493
3494=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c'
3495--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c 2010-07-29 15:38:15 +0000
3496+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c 2010-08-20 13:27:11 +0000
3497@@ -16,5 +16,5 @@
3498 out_uint32x4_t = vcvtq_n_u32_f32 (arg0_float32x4_t, 1);
3499 }
3500
3501-/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3502+/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3503 /* { dg-final { cleanup-saved-temps } } */
3504
3505=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c'
3506--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c 2010-07-29 15:38:15 +0000
3507+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c 2010-08-20 13:27:11 +0000
3508@@ -16,5 +16,5 @@
3509 out_float32x4_t = vcvtq_f32_s32 (arg0_int32x4_t);
3510 }
3511
3512-/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3513+/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3514 /* { dg-final { cleanup-saved-temps } } */
3515
3516=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c'
3517--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c 2010-07-29 15:38:15 +0000
3518+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c 2010-08-20 13:27:11 +0000
3519@@ -16,5 +16,5 @@
3520 out_float32x4_t = vcvtq_f32_u32 (arg0_uint32x4_t);
3521 }
3522
3523-/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3524+/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3525 /* { dg-final { cleanup-saved-temps } } */
3526
3527=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c'
3528--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c 2010-07-29 15:38:15 +0000
3529+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c 2010-08-20 13:27:11 +0000
3530@@ -16,5 +16,5 @@
3531 out_int32x4_t = vcvtq_s32_f32 (arg0_float32x4_t);
3532 }
3533
3534-/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3535+/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3536 /* { dg-final { cleanup-saved-temps } } */
3537
3538=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c'
3539--- old/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c 2010-07-29 15:38:15 +0000
3540+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c 2010-08-20 13:27:11 +0000
3541@@ -16,5 +16,5 @@
3542 out_uint32x4_t = vcvtq_u32_f32 (arg0_float32x4_t);
3543 }
3544
3545-/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3546+/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3547 /* { dg-final { cleanup-saved-temps } } */
3548
3549=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c'
3550--- old/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c 2010-07-29 15:38:15 +0000
3551+++ new/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c 2010-08-20 13:27:11 +0000
3552@@ -16,5 +16,5 @@
3553 out_float32x2_t = vcvt_n_f32_s32 (arg0_int32x2_t, 1);
3554 }
3555
3556-/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3557+/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3558 /* { dg-final { cleanup-saved-temps } } */
3559
3560=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c'
3561--- old/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c 2010-07-29 15:38:15 +0000
3562+++ new/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c 2010-08-20 13:27:11 +0000
3563@@ -16,5 +16,5 @@
3564 out_float32x2_t = vcvt_n_f32_u32 (arg0_uint32x2_t, 1);
3565 }
3566
3567-/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3568+/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3569 /* { dg-final { cleanup-saved-temps } } */
3570
3571=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c'
3572--- old/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c 2010-07-29 15:38:15 +0000
3573+++ new/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c 2010-08-20 13:27:11 +0000
3574@@ -16,5 +16,5 @@
3575 out_int32x2_t = vcvt_n_s32_f32 (arg0_float32x2_t, 1);
3576 }
3577
3578-/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3579+/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3580 /* { dg-final { cleanup-saved-temps } } */
3581
3582=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c'
3583--- old/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c 2010-07-29 15:38:15 +0000
3584+++ new/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c 2010-08-20 13:27:11 +0000
3585@@ -16,5 +16,5 @@
3586 out_uint32x2_t = vcvt_n_u32_f32 (arg0_float32x2_t, 1);
3587 }
3588
3589-/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3590+/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3591 /* { dg-final { cleanup-saved-temps } } */
3592
3593=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c'
3594--- old/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c 2010-07-29 15:38:15 +0000
3595+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c 2010-08-20 13:27:11 +0000
3596@@ -16,5 +16,5 @@
3597 out_float32x2_t = vcvt_f32_s32 (arg0_int32x2_t);
3598 }
3599
3600-/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3601+/* { dg-final { scan-assembler "vcvt\.f32.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3602 /* { dg-final { cleanup-saved-temps } } */
3603
3604=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c'
3605--- old/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c 2010-07-29 15:38:15 +0000
3606+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c 2010-08-20 13:27:11 +0000
3607@@ -16,5 +16,5 @@
3608 out_float32x2_t = vcvt_f32_u32 (arg0_uint32x2_t);
3609 }
3610
3611-/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3612+/* { dg-final { scan-assembler "vcvt\.f32.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3613 /* { dg-final { cleanup-saved-temps } } */
3614
3615=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c'
3616--- old/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c 2010-07-29 15:38:15 +0000
3617+++ new/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c 2010-08-20 13:27:11 +0000
3618@@ -16,5 +16,5 @@
3619 out_int32x2_t = vcvt_s32_f32 (arg0_float32x2_t);
3620 }
3621
3622-/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3623+/* { dg-final { scan-assembler "vcvt\.s32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3624 /* { dg-final { cleanup-saved-temps } } */
3625
3626=== modified file 'gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c'
3627--- old/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c 2010-07-29 15:38:15 +0000
3628+++ new/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c 2010-08-20 13:27:11 +0000
3629@@ -16,5 +16,5 @@
3630 out_uint32x2_t = vcvt_u32_f32 (arg0_float32x2_t);
3631 }
3632
3633-/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3634+/* { dg-final { scan-assembler "vcvt\.u32.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
3635 /* { dg-final { cleanup-saved-temps } } */
3636
3637=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c'
3638--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c 2010-07-29 15:38:15 +0000
3639+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c 2010-08-20 13:27:11 +0000
3640@@ -16,5 +16,5 @@
3641 out_float32x4_t = vdupq_lane_f32 (arg0_float32x2_t, 1);
3642 }
3643
3644-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3645+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3646 /* { dg-final { cleanup-saved-temps } } */
3647
3648=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c'
3649--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c 2010-07-29 15:38:15 +0000
3650+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c 2010-08-20 13:27:11 +0000
3651@@ -16,5 +16,5 @@
3652 out_poly16x8_t = vdupq_lane_p16 (arg0_poly16x4_t, 1);
3653 }
3654
3655-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3656+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3657 /* { dg-final { cleanup-saved-temps } } */
3658
3659=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c'
3660--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c 2010-07-29 15:38:15 +0000
3661+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c 2010-08-20 13:27:11 +0000
3662@@ -16,5 +16,5 @@
3663 out_poly8x16_t = vdupq_lane_p8 (arg0_poly8x8_t, 1);
3664 }
3665
3666-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3667+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3668 /* { dg-final { cleanup-saved-temps } } */
3669
3670=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c'
3671--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c 2010-07-29 15:38:15 +0000
3672+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c 2010-08-20 13:27:11 +0000
3673@@ -16,5 +16,5 @@
3674 out_int16x8_t = vdupq_lane_s16 (arg0_int16x4_t, 1);
3675 }
3676
3677-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3678+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3679 /* { dg-final { cleanup-saved-temps } } */
3680
3681=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c'
3682--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c 2010-07-29 15:38:15 +0000
3683+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c 2010-08-20 13:27:11 +0000
3684@@ -16,5 +16,5 @@
3685 out_int32x4_t = vdupq_lane_s32 (arg0_int32x2_t, 1);
3686 }
3687
3688-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3689+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3690 /* { dg-final { cleanup-saved-temps } } */
3691
3692=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c'
3693--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c 2010-07-29 15:38:15 +0000
3694+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c 2010-08-20 13:27:11 +0000
3695@@ -16,5 +16,5 @@
3696 out_int8x16_t = vdupq_lane_s8 (arg0_int8x8_t, 1);
3697 }
3698
3699-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3700+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3701 /* { dg-final { cleanup-saved-temps } } */
3702
3703=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c'
3704--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c 2010-07-29 15:38:15 +0000
3705+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c 2010-08-20 13:27:11 +0000
3706@@ -16,5 +16,5 @@
3707 out_uint16x8_t = vdupq_lane_u16 (arg0_uint16x4_t, 1);
3708 }
3709
3710-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3711+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3712 /* { dg-final { cleanup-saved-temps } } */
3713
3714=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c'
3715--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c 2010-07-29 15:38:15 +0000
3716+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c 2010-08-20 13:27:11 +0000
3717@@ -16,5 +16,5 @@
3718 out_uint32x4_t = vdupq_lane_u32 (arg0_uint32x2_t, 1);
3719 }
3720
3721-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3722+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3723 /* { dg-final { cleanup-saved-temps } } */
3724
3725=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c'
3726--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c 2010-07-29 15:38:15 +0000
3727+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c 2010-08-20 13:27:11 +0000
3728@@ -16,5 +16,5 @@
3729 out_uint8x16_t = vdupq_lane_u8 (arg0_uint8x8_t, 1);
3730 }
3731
3732-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3733+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3734 /* { dg-final { cleanup-saved-temps } } */
3735
3736=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c'
3737--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c 2010-07-29 15:38:15 +0000
3738+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c 2010-08-20 13:27:11 +0000
3739@@ -16,5 +16,5 @@
3740 out_float32x4_t = vdupq_n_f32 (arg0_float32_t);
3741 }
3742
3743-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3744+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3745 /* { dg-final { cleanup-saved-temps } } */
3746
3747=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c'
3748--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c 2010-07-29 15:38:15 +0000
3749+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c 2010-08-20 13:27:11 +0000
3750@@ -16,5 +16,5 @@
3751 out_poly16x8_t = vdupq_n_p16 (arg0_poly16_t);
3752 }
3753
3754-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3755+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3756 /* { dg-final { cleanup-saved-temps } } */
3757
3758=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c'
3759--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c 2010-07-29 15:38:15 +0000
3760+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c 2010-08-20 13:27:11 +0000
3761@@ -16,5 +16,5 @@
3762 out_poly8x16_t = vdupq_n_p8 (arg0_poly8_t);
3763 }
3764
3765-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3766+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3767 /* { dg-final { cleanup-saved-temps } } */
3768
3769=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c'
3770--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c 2010-07-29 15:38:15 +0000
3771+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c 2010-08-20 13:27:11 +0000
3772@@ -16,5 +16,5 @@
3773 out_int16x8_t = vdupq_n_s16 (arg0_int16_t);
3774 }
3775
3776-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3777+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3778 /* { dg-final { cleanup-saved-temps } } */
3779
3780=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c'
3781--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c 2010-07-29 15:38:15 +0000
3782+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c 2010-08-20 13:27:11 +0000
3783@@ -16,5 +16,5 @@
3784 out_int32x4_t = vdupq_n_s32 (arg0_int32_t);
3785 }
3786
3787-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3788+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3789 /* { dg-final { cleanup-saved-temps } } */
3790
3791=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c'
3792--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c 2010-07-29 15:38:15 +0000
3793+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c 2010-08-20 13:27:11 +0000
3794@@ -16,5 +16,5 @@
3795 out_int8x16_t = vdupq_n_s8 (arg0_int8_t);
3796 }
3797
3798-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3799+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3800 /* { dg-final { cleanup-saved-temps } } */
3801
3802=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c'
3803--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c 2010-07-29 15:38:15 +0000
3804+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c 2010-08-20 13:27:11 +0000
3805@@ -16,5 +16,5 @@
3806 out_uint16x8_t = vdupq_n_u16 (arg0_uint16_t);
3807 }
3808
3809-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3810+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3811 /* { dg-final { cleanup-saved-temps } } */
3812
3813=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c'
3814--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c 2010-07-29 15:38:15 +0000
3815+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c 2010-08-20 13:27:11 +0000
3816@@ -16,5 +16,5 @@
3817 out_uint32x4_t = vdupq_n_u32 (arg0_uint32_t);
3818 }
3819
3820-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3821+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3822 /* { dg-final { cleanup-saved-temps } } */
3823
3824=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c'
3825--- old/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c 2010-07-29 15:38:15 +0000
3826+++ new/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c 2010-08-20 13:27:11 +0000
3827@@ -16,5 +16,5 @@
3828 out_uint8x16_t = vdupq_n_u8 (arg0_uint8_t);
3829 }
3830
3831-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3832+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3833 /* { dg-final { cleanup-saved-temps } } */
3834
3835=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c'
3836--- old/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c 2010-07-29 15:38:15 +0000
3837+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c 2010-08-20 13:27:11 +0000
3838@@ -16,5 +16,5 @@
3839 out_float32x2_t = vdup_lane_f32 (arg0_float32x2_t, 1);
3840 }
3841
3842-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3843+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3844 /* { dg-final { cleanup-saved-temps } } */
3845
3846=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c'
3847--- old/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c 2010-07-29 15:38:15 +0000
3848+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c 2010-08-20 13:27:11 +0000
3849@@ -16,5 +16,5 @@
3850 out_poly16x4_t = vdup_lane_p16 (arg0_poly16x4_t, 1);
3851 }
3852
3853-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3854+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3855 /* { dg-final { cleanup-saved-temps } } */
3856
3857=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c'
3858--- old/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c 2010-07-29 15:38:15 +0000
3859+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c 2010-08-20 13:27:11 +0000
3860@@ -16,5 +16,5 @@
3861 out_poly8x8_t = vdup_lane_p8 (arg0_poly8x8_t, 1);
3862 }
3863
3864-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3865+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3866 /* { dg-final { cleanup-saved-temps } } */
3867
3868=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c'
3869--- old/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c 2010-07-29 15:38:15 +0000
3870+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c 2010-08-20 13:27:11 +0000
3871@@ -16,5 +16,5 @@
3872 out_int16x4_t = vdup_lane_s16 (arg0_int16x4_t, 1);
3873 }
3874
3875-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3876+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3877 /* { dg-final { cleanup-saved-temps } } */
3878
3879=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c'
3880--- old/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c 2010-07-29 15:38:15 +0000
3881+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c 2010-08-20 13:27:11 +0000
3882@@ -16,5 +16,5 @@
3883 out_int32x2_t = vdup_lane_s32 (arg0_int32x2_t, 1);
3884 }
3885
3886-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3887+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3888 /* { dg-final { cleanup-saved-temps } } */
3889
3890=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c'
3891--- old/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c 2010-07-29 15:38:15 +0000
3892+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c 2010-08-20 13:27:11 +0000
3893@@ -16,5 +16,5 @@
3894 out_int8x8_t = vdup_lane_s8 (arg0_int8x8_t, 1);
3895 }
3896
3897-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3898+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3899 /* { dg-final { cleanup-saved-temps } } */
3900
3901=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c'
3902--- old/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c 2010-07-29 15:38:15 +0000
3903+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c 2010-08-20 13:27:11 +0000
3904@@ -16,5 +16,5 @@
3905 out_uint16x4_t = vdup_lane_u16 (arg0_uint16x4_t, 1);
3906 }
3907
3908-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3909+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3910 /* { dg-final { cleanup-saved-temps } } */
3911
3912=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c'
3913--- old/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c 2010-07-29 15:38:15 +0000
3914+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c 2010-08-20 13:27:11 +0000
3915@@ -16,5 +16,5 @@
3916 out_uint32x2_t = vdup_lane_u32 (arg0_uint32x2_t, 1);
3917 }
3918
3919-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3920+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3921 /* { dg-final { cleanup-saved-temps } } */
3922
3923=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c'
3924--- old/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c 2010-07-29 15:38:15 +0000
3925+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c 2010-08-20 13:27:11 +0000
3926@@ -16,5 +16,5 @@
3927 out_uint8x8_t = vdup_lane_u8 (arg0_uint8x8_t, 1);
3928 }
3929
3930-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3931+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
3932 /* { dg-final { cleanup-saved-temps } } */
3933
3934=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c'
3935--- old/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c 2010-07-29 15:38:15 +0000
3936+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c 2010-08-20 13:27:11 +0000
3937@@ -16,5 +16,5 @@
3938 out_float32x2_t = vdup_n_f32 (arg0_float32_t);
3939 }
3940
3941-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3942+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3943 /* { dg-final { cleanup-saved-temps } } */
3944
3945=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_np16.c'
3946--- old/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c 2010-07-29 15:38:15 +0000
3947+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c 2010-08-20 13:27:11 +0000
3948@@ -16,5 +16,5 @@
3949 out_poly16x4_t = vdup_n_p16 (arg0_poly16_t);
3950 }
3951
3952-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3953+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3954 /* { dg-final { cleanup-saved-temps } } */
3955
3956=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_np8.c'
3957--- old/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c 2010-07-29 15:38:15 +0000
3958+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c 2010-08-20 13:27:11 +0000
3959@@ -16,5 +16,5 @@
3960 out_poly8x8_t = vdup_n_p8 (arg0_poly8_t);
3961 }
3962
3963-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3964+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3965 /* { dg-final { cleanup-saved-temps } } */
3966
3967=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c'
3968--- old/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c 2010-07-29 15:38:15 +0000
3969+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c 2010-08-20 13:27:11 +0000
3970@@ -16,5 +16,5 @@
3971 out_int16x4_t = vdup_n_s16 (arg0_int16_t);
3972 }
3973
3974-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3975+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3976 /* { dg-final { cleanup-saved-temps } } */
3977
3978=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c'
3979--- old/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c 2010-07-29 15:38:15 +0000
3980+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c 2010-08-20 13:27:11 +0000
3981@@ -16,5 +16,5 @@
3982 out_int32x2_t = vdup_n_s32 (arg0_int32_t);
3983 }
3984
3985-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3986+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3987 /* { dg-final { cleanup-saved-temps } } */
3988
3989=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c'
3990--- old/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c 2010-07-29 15:38:15 +0000
3991+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c 2010-08-20 13:27:11 +0000
3992@@ -16,5 +16,5 @@
3993 out_int8x8_t = vdup_n_s8 (arg0_int8_t);
3994 }
3995
3996-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
3997+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
3998 /* { dg-final { cleanup-saved-temps } } */
3999
4000=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c'
4001--- old/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c 2010-07-29 15:38:15 +0000
4002+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c 2010-08-20 13:27:11 +0000
4003@@ -16,5 +16,5 @@
4004 out_uint16x4_t = vdup_n_u16 (arg0_uint16_t);
4005 }
4006
4007-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4008+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
4009 /* { dg-final { cleanup-saved-temps } } */
4010
4011=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c'
4012--- old/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c 2010-07-29 15:38:15 +0000
4013+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c 2010-08-20 13:27:11 +0000
4014@@ -16,5 +16,5 @@
4015 out_uint32x2_t = vdup_n_u32 (arg0_uint32_t);
4016 }
4017
4018-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4019+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
4020 /* { dg-final { cleanup-saved-temps } } */
4021
4022=== modified file 'gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c'
4023--- old/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c 2010-07-29 15:38:15 +0000
4024+++ new/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c 2010-08-20 13:27:11 +0000
4025@@ -16,5 +16,5 @@
4026 out_uint8x8_t = vdup_n_u8 (arg0_uint8_t);
4027 }
4028
4029-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4030+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
4031 /* { dg-final { cleanup-saved-temps } } */
4032
4033=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQs16.c'
4034--- old/gcc/testsuite/gcc.target/arm/neon/veorQs16.c 2010-07-29 15:38:15 +0000
4035+++ new/gcc/testsuite/gcc.target/arm/neon/veorQs16.c 2010-08-20 13:27:11 +0000
4036@@ -17,5 +17,5 @@
4037 out_int16x8_t = veorq_s16 (arg0_int16x8_t, arg1_int16x8_t);
4038 }
4039
4040-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4041+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4042 /* { dg-final { cleanup-saved-temps } } */
4043
4044=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQs32.c'
4045--- old/gcc/testsuite/gcc.target/arm/neon/veorQs32.c 2010-07-29 15:38:15 +0000
4046+++ new/gcc/testsuite/gcc.target/arm/neon/veorQs32.c 2010-08-20 13:27:11 +0000
4047@@ -17,5 +17,5 @@
4048 out_int32x4_t = veorq_s32 (arg0_int32x4_t, arg1_int32x4_t);
4049 }
4050
4051-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4052+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4053 /* { dg-final { cleanup-saved-temps } } */
4054
4055=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQs64.c'
4056--- old/gcc/testsuite/gcc.target/arm/neon/veorQs64.c 2010-07-29 15:38:15 +0000
4057+++ new/gcc/testsuite/gcc.target/arm/neon/veorQs64.c 2010-08-20 13:27:11 +0000
4058@@ -17,5 +17,5 @@
4059 out_int64x2_t = veorq_s64 (arg0_int64x2_t, arg1_int64x2_t);
4060 }
4061
4062-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4063+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4064 /* { dg-final { cleanup-saved-temps } } */
4065
4066=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQs8.c'
4067--- old/gcc/testsuite/gcc.target/arm/neon/veorQs8.c 2010-07-29 15:38:15 +0000
4068+++ new/gcc/testsuite/gcc.target/arm/neon/veorQs8.c 2010-08-20 13:27:11 +0000
4069@@ -17,5 +17,5 @@
4070 out_int8x16_t = veorq_s8 (arg0_int8x16_t, arg1_int8x16_t);
4071 }
4072
4073-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4074+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4075 /* { dg-final { cleanup-saved-temps } } */
4076
4077=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQu16.c'
4078--- old/gcc/testsuite/gcc.target/arm/neon/veorQu16.c 2010-07-29 15:38:15 +0000
4079+++ new/gcc/testsuite/gcc.target/arm/neon/veorQu16.c 2010-08-20 13:27:11 +0000
4080@@ -17,5 +17,5 @@
4081 out_uint16x8_t = veorq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
4082 }
4083
4084-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4085+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4086 /* { dg-final { cleanup-saved-temps } } */
4087
4088=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQu32.c'
4089--- old/gcc/testsuite/gcc.target/arm/neon/veorQu32.c 2010-07-29 15:38:15 +0000
4090+++ new/gcc/testsuite/gcc.target/arm/neon/veorQu32.c 2010-08-20 13:27:11 +0000
4091@@ -17,5 +17,5 @@
4092 out_uint32x4_t = veorq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
4093 }
4094
4095-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4096+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4097 /* { dg-final { cleanup-saved-temps } } */
4098
4099=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQu64.c'
4100--- old/gcc/testsuite/gcc.target/arm/neon/veorQu64.c 2010-07-29 15:38:15 +0000
4101+++ new/gcc/testsuite/gcc.target/arm/neon/veorQu64.c 2010-08-20 13:27:11 +0000
4102@@ -17,5 +17,5 @@
4103 out_uint64x2_t = veorq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
4104 }
4105
4106-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4107+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4108 /* { dg-final { cleanup-saved-temps } } */
4109
4110=== modified file 'gcc/testsuite/gcc.target/arm/neon/veorQu8.c'
4111--- old/gcc/testsuite/gcc.target/arm/neon/veorQu8.c 2010-07-29 15:38:15 +0000
4112+++ new/gcc/testsuite/gcc.target/arm/neon/veorQu8.c 2010-08-20 13:27:11 +0000
4113@@ -17,5 +17,5 @@
4114 out_uint8x16_t = veorq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
4115 }
4116
4117-/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4118+/* { dg-final { scan-assembler "veor\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4119 /* { dg-final { cleanup-saved-temps } } */
4120
4121=== modified file 'gcc/testsuite/gcc.target/arm/neon/veors16.c'
4122--- old/gcc/testsuite/gcc.target/arm/neon/veors16.c 2010-07-29 15:38:15 +0000
4123+++ new/gcc/testsuite/gcc.target/arm/neon/veors16.c 2010-08-20 13:27:11 +0000
4124@@ -17,5 +17,5 @@
4125 out_int16x4_t = veor_s16 (arg0_int16x4_t, arg1_int16x4_t);
4126 }
4127
4128-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4129+/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4130 /* { dg-final { cleanup-saved-temps } } */
4131
4132=== modified file 'gcc/testsuite/gcc.target/arm/neon/veors32.c'
4133--- old/gcc/testsuite/gcc.target/arm/neon/veors32.c 2010-07-29 15:38:15 +0000
4134+++ new/gcc/testsuite/gcc.target/arm/neon/veors32.c 2010-08-20 13:27:11 +0000
4135@@ -17,5 +17,5 @@
4136 out_int32x2_t = veor_s32 (arg0_int32x2_t, arg1_int32x2_t);
4137 }
4138
4139-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4140+/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4141 /* { dg-final { cleanup-saved-temps } } */
4142
4143=== modified file 'gcc/testsuite/gcc.target/arm/neon/veors8.c'
4144--- old/gcc/testsuite/gcc.target/arm/neon/veors8.c 2010-07-29 15:38:15 +0000
4145+++ new/gcc/testsuite/gcc.target/arm/neon/veors8.c 2010-08-20 13:27:11 +0000
4146@@ -17,5 +17,5 @@
4147 out_int8x8_t = veor_s8 (arg0_int8x8_t, arg1_int8x8_t);
4148 }
4149
4150-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4151+/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4152 /* { dg-final { cleanup-saved-temps } } */
4153
4154=== modified file 'gcc/testsuite/gcc.target/arm/neon/veoru16.c'
4155--- old/gcc/testsuite/gcc.target/arm/neon/veoru16.c 2010-07-29 15:38:15 +0000
4156+++ new/gcc/testsuite/gcc.target/arm/neon/veoru16.c 2010-08-20 13:27:11 +0000
4157@@ -17,5 +17,5 @@
4158 out_uint16x4_t = veor_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
4159 }
4160
4161-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4162+/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4163 /* { dg-final { cleanup-saved-temps } } */
4164
4165=== modified file 'gcc/testsuite/gcc.target/arm/neon/veoru32.c'
4166--- old/gcc/testsuite/gcc.target/arm/neon/veoru32.c 2010-07-29 15:38:15 +0000
4167+++ new/gcc/testsuite/gcc.target/arm/neon/veoru32.c 2010-08-20 13:27:11 +0000
4168@@ -17,5 +17,5 @@
4169 out_uint32x2_t = veor_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
4170 }
4171
4172-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4173+/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4174 /* { dg-final { cleanup-saved-temps } } */
4175
4176=== modified file 'gcc/testsuite/gcc.target/arm/neon/veoru8.c'
4177--- old/gcc/testsuite/gcc.target/arm/neon/veoru8.c 2010-07-29 15:38:15 +0000
4178+++ new/gcc/testsuite/gcc.target/arm/neon/veoru8.c 2010-08-20 13:27:11 +0000
4179@@ -17,5 +17,5 @@
4180 out_uint8x8_t = veor_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
4181 }
4182
4183-/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4184+/* { dg-final { scan-assembler "veor\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4185 /* { dg-final { cleanup-saved-temps } } */
4186
4187=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQf32.c'
4188--- old/gcc/testsuite/gcc.target/arm/neon/vextQf32.c 2010-07-29 15:38:15 +0000
4189+++ new/gcc/testsuite/gcc.target/arm/neon/vextQf32.c 2010-08-20 13:27:11 +0000
4190@@ -17,5 +17,5 @@
4191 out_float32x4_t = vextq_f32 (arg0_float32x4_t, arg1_float32x4_t, 0);
4192 }
4193
4194-/* { dg-final { scan-assembler "vext\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4195+/* { dg-final { scan-assembler "vext\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4196 /* { dg-final { cleanup-saved-temps } } */
4197
4198=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQp16.c'
4199--- old/gcc/testsuite/gcc.target/arm/neon/vextQp16.c 2010-07-29 15:38:15 +0000
4200+++ new/gcc/testsuite/gcc.target/arm/neon/vextQp16.c 2010-08-20 13:27:11 +0000
4201@@ -17,5 +17,5 @@
4202 out_poly16x8_t = vextq_p16 (arg0_poly16x8_t, arg1_poly16x8_t, 0);
4203 }
4204
4205-/* { dg-final { scan-assembler "vext\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4206+/* { dg-final { scan-assembler "vext\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4207 /* { dg-final { cleanup-saved-temps } } */
4208
4209=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQp8.c'
4210--- old/gcc/testsuite/gcc.target/arm/neon/vextQp8.c 2010-07-29 15:38:15 +0000
4211+++ new/gcc/testsuite/gcc.target/arm/neon/vextQp8.c 2010-08-20 13:27:11 +0000
4212@@ -17,5 +17,5 @@
4213 out_poly8x16_t = vextq_p8 (arg0_poly8x16_t, arg1_poly8x16_t, 0);
4214 }
4215
4216-/* { dg-final { scan-assembler "vext\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4217+/* { dg-final { scan-assembler "vext\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4218 /* { dg-final { cleanup-saved-temps } } */
4219
4220=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQs16.c'
4221--- old/gcc/testsuite/gcc.target/arm/neon/vextQs16.c 2010-07-29 15:38:15 +0000
4222+++ new/gcc/testsuite/gcc.target/arm/neon/vextQs16.c 2010-08-20 13:27:11 +0000
4223@@ -17,5 +17,5 @@
4224 out_int16x8_t = vextq_s16 (arg0_int16x8_t, arg1_int16x8_t, 0);
4225 }
4226
4227-/* { dg-final { scan-assembler "vext\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4228+/* { dg-final { scan-assembler "vext\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4229 /* { dg-final { cleanup-saved-temps } } */
4230
4231=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQs32.c'
4232--- old/gcc/testsuite/gcc.target/arm/neon/vextQs32.c 2010-07-29 15:38:15 +0000
4233+++ new/gcc/testsuite/gcc.target/arm/neon/vextQs32.c 2010-08-20 13:27:11 +0000
4234@@ -17,5 +17,5 @@
4235 out_int32x4_t = vextq_s32 (arg0_int32x4_t, arg1_int32x4_t, 0);
4236 }
4237
4238-/* { dg-final { scan-assembler "vext\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4239+/* { dg-final { scan-assembler "vext\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4240 /* { dg-final { cleanup-saved-temps } } */
4241
4242=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQs64.c'
4243--- old/gcc/testsuite/gcc.target/arm/neon/vextQs64.c 2010-07-29 15:38:15 +0000
4244+++ new/gcc/testsuite/gcc.target/arm/neon/vextQs64.c 2010-08-20 13:27:11 +0000
4245@@ -17,5 +17,5 @@
4246 out_int64x2_t = vextq_s64 (arg0_int64x2_t, arg1_int64x2_t, 0);
4247 }
4248
4249-/* { dg-final { scan-assembler "vext\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4250+/* { dg-final { scan-assembler "vext\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4251 /* { dg-final { cleanup-saved-temps } } */
4252
4253=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQs8.c'
4254--- old/gcc/testsuite/gcc.target/arm/neon/vextQs8.c 2010-07-29 15:38:15 +0000
4255+++ new/gcc/testsuite/gcc.target/arm/neon/vextQs8.c 2010-08-20 13:27:11 +0000
4256@@ -17,5 +17,5 @@
4257 out_int8x16_t = vextq_s8 (arg0_int8x16_t, arg1_int8x16_t, 0);
4258 }
4259
4260-/* { dg-final { scan-assembler "vext\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4261+/* { dg-final { scan-assembler "vext\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4262 /* { dg-final { cleanup-saved-temps } } */
4263
4264=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQu16.c'
4265--- old/gcc/testsuite/gcc.target/arm/neon/vextQu16.c 2010-07-29 15:38:15 +0000
4266+++ new/gcc/testsuite/gcc.target/arm/neon/vextQu16.c 2010-08-20 13:27:11 +0000
4267@@ -17,5 +17,5 @@
4268 out_uint16x8_t = vextq_u16 (arg0_uint16x8_t, arg1_uint16x8_t, 0);
4269 }
4270
4271-/* { dg-final { scan-assembler "vext\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4272+/* { dg-final { scan-assembler "vext\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4273 /* { dg-final { cleanup-saved-temps } } */
4274
4275=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQu32.c'
4276--- old/gcc/testsuite/gcc.target/arm/neon/vextQu32.c 2010-07-29 15:38:15 +0000
4277+++ new/gcc/testsuite/gcc.target/arm/neon/vextQu32.c 2010-08-20 13:27:11 +0000
4278@@ -17,5 +17,5 @@
4279 out_uint32x4_t = vextq_u32 (arg0_uint32x4_t, arg1_uint32x4_t, 0);
4280 }
4281
4282-/* { dg-final { scan-assembler "vext\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4283+/* { dg-final { scan-assembler "vext\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4284 /* { dg-final { cleanup-saved-temps } } */
4285
4286=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQu64.c'
4287--- old/gcc/testsuite/gcc.target/arm/neon/vextQu64.c 2010-07-29 15:38:15 +0000
4288+++ new/gcc/testsuite/gcc.target/arm/neon/vextQu64.c 2010-08-20 13:27:11 +0000
4289@@ -17,5 +17,5 @@
4290 out_uint64x2_t = vextq_u64 (arg0_uint64x2_t, arg1_uint64x2_t, 0);
4291 }
4292
4293-/* { dg-final { scan-assembler "vext\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4294+/* { dg-final { scan-assembler "vext\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4295 /* { dg-final { cleanup-saved-temps } } */
4296
4297=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextQu8.c'
4298--- old/gcc/testsuite/gcc.target/arm/neon/vextQu8.c 2010-07-29 15:38:15 +0000
4299+++ new/gcc/testsuite/gcc.target/arm/neon/vextQu8.c 2010-08-20 13:27:11 +0000
4300@@ -17,5 +17,5 @@
4301 out_uint8x16_t = vextq_u8 (arg0_uint8x16_t, arg1_uint8x16_t, 0);
4302 }
4303
4304-/* { dg-final { scan-assembler "vext\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4305+/* { dg-final { scan-assembler "vext\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4306 /* { dg-final { cleanup-saved-temps } } */
4307
4308=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextf32.c'
4309--- old/gcc/testsuite/gcc.target/arm/neon/vextf32.c 2010-07-29 15:38:15 +0000
4310+++ new/gcc/testsuite/gcc.target/arm/neon/vextf32.c 2010-08-20 13:27:11 +0000
4311@@ -17,5 +17,5 @@
4312 out_float32x2_t = vext_f32 (arg0_float32x2_t, arg1_float32x2_t, 0);
4313 }
4314
4315-/* { dg-final { scan-assembler "vext\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4316+/* { dg-final { scan-assembler "vext\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4317 /* { dg-final { cleanup-saved-temps } } */
4318
4319=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextp16.c'
4320--- old/gcc/testsuite/gcc.target/arm/neon/vextp16.c 2010-07-29 15:38:15 +0000
4321+++ new/gcc/testsuite/gcc.target/arm/neon/vextp16.c 2010-08-20 13:27:11 +0000
4322@@ -17,5 +17,5 @@
4323 out_poly16x4_t = vext_p16 (arg0_poly16x4_t, arg1_poly16x4_t, 0);
4324 }
4325
4326-/* { dg-final { scan-assembler "vext\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4327+/* { dg-final { scan-assembler "vext\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4328 /* { dg-final { cleanup-saved-temps } } */
4329
4330=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextp8.c'
4331--- old/gcc/testsuite/gcc.target/arm/neon/vextp8.c 2010-07-29 15:38:15 +0000
4332+++ new/gcc/testsuite/gcc.target/arm/neon/vextp8.c 2010-08-20 13:27:11 +0000
4333@@ -17,5 +17,5 @@
4334 out_poly8x8_t = vext_p8 (arg0_poly8x8_t, arg1_poly8x8_t, 0);
4335 }
4336
4337-/* { dg-final { scan-assembler "vext\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4338+/* { dg-final { scan-assembler "vext\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4339 /* { dg-final { cleanup-saved-temps } } */
4340
4341=== modified file 'gcc/testsuite/gcc.target/arm/neon/vexts16.c'
4342--- old/gcc/testsuite/gcc.target/arm/neon/vexts16.c 2010-07-29 15:38:15 +0000
4343+++ new/gcc/testsuite/gcc.target/arm/neon/vexts16.c 2010-08-20 13:27:11 +0000
4344@@ -17,5 +17,5 @@
4345 out_int16x4_t = vext_s16 (arg0_int16x4_t, arg1_int16x4_t, 0);
4346 }
4347
4348-/* { dg-final { scan-assembler "vext\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4349+/* { dg-final { scan-assembler "vext\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4350 /* { dg-final { cleanup-saved-temps } } */
4351
4352=== modified file 'gcc/testsuite/gcc.target/arm/neon/vexts32.c'
4353--- old/gcc/testsuite/gcc.target/arm/neon/vexts32.c 2010-07-29 15:38:15 +0000
4354+++ new/gcc/testsuite/gcc.target/arm/neon/vexts32.c 2010-08-20 13:27:11 +0000
4355@@ -17,5 +17,5 @@
4356 out_int32x2_t = vext_s32 (arg0_int32x2_t, arg1_int32x2_t, 0);
4357 }
4358
4359-/* { dg-final { scan-assembler "vext\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4360+/* { dg-final { scan-assembler "vext\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4361 /* { dg-final { cleanup-saved-temps } } */
4362
4363=== modified file 'gcc/testsuite/gcc.target/arm/neon/vexts64.c'
4364--- old/gcc/testsuite/gcc.target/arm/neon/vexts64.c 2010-07-29 15:38:15 +0000
4365+++ new/gcc/testsuite/gcc.target/arm/neon/vexts64.c 2010-08-20 13:27:11 +0000
4366@@ -17,5 +17,5 @@
4367 out_int64x1_t = vext_s64 (arg0_int64x1_t, arg1_int64x1_t, 0);
4368 }
4369
4370-/* { dg-final { scan-assembler "vext\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4371+/* { dg-final { scan-assembler "vext\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4372 /* { dg-final { cleanup-saved-temps } } */
4373
4374=== modified file 'gcc/testsuite/gcc.target/arm/neon/vexts8.c'
4375--- old/gcc/testsuite/gcc.target/arm/neon/vexts8.c 2010-07-29 15:38:15 +0000
4376+++ new/gcc/testsuite/gcc.target/arm/neon/vexts8.c 2010-08-20 13:27:11 +0000
4377@@ -17,5 +17,5 @@
4378 out_int8x8_t = vext_s8 (arg0_int8x8_t, arg1_int8x8_t, 0);
4379 }
4380
4381-/* { dg-final { scan-assembler "vext\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4382+/* { dg-final { scan-assembler "vext\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4383 /* { dg-final { cleanup-saved-temps } } */
4384
4385=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextu16.c'
4386--- old/gcc/testsuite/gcc.target/arm/neon/vextu16.c 2010-07-29 15:38:15 +0000
4387+++ new/gcc/testsuite/gcc.target/arm/neon/vextu16.c 2010-08-20 13:27:11 +0000
4388@@ -17,5 +17,5 @@
4389 out_uint16x4_t = vext_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 0);
4390 }
4391
4392-/* { dg-final { scan-assembler "vext\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4393+/* { dg-final { scan-assembler "vext\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4394 /* { dg-final { cleanup-saved-temps } } */
4395
4396=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextu32.c'
4397--- old/gcc/testsuite/gcc.target/arm/neon/vextu32.c 2010-07-29 15:38:15 +0000
4398+++ new/gcc/testsuite/gcc.target/arm/neon/vextu32.c 2010-08-20 13:27:11 +0000
4399@@ -17,5 +17,5 @@
4400 out_uint32x2_t = vext_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 0);
4401 }
4402
4403-/* { dg-final { scan-assembler "vext\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4404+/* { dg-final { scan-assembler "vext\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4405 /* { dg-final { cleanup-saved-temps } } */
4406
4407=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextu64.c'
4408--- old/gcc/testsuite/gcc.target/arm/neon/vextu64.c 2010-07-29 15:38:15 +0000
4409+++ new/gcc/testsuite/gcc.target/arm/neon/vextu64.c 2010-08-20 13:27:11 +0000
4410@@ -17,5 +17,5 @@
4411 out_uint64x1_t = vext_u64 (arg0_uint64x1_t, arg1_uint64x1_t, 0);
4412 }
4413
4414-/* { dg-final { scan-assembler "vext\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4415+/* { dg-final { scan-assembler "vext\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4416 /* { dg-final { cleanup-saved-temps } } */
4417
4418=== modified file 'gcc/testsuite/gcc.target/arm/neon/vextu8.c'
4419--- old/gcc/testsuite/gcc.target/arm/neon/vextu8.c 2010-07-29 15:38:15 +0000
4420+++ new/gcc/testsuite/gcc.target/arm/neon/vextu8.c 2010-08-20 13:27:11 +0000
4421@@ -17,5 +17,5 @@
4422 out_uint8x8_t = vext_u8 (arg0_uint8x8_t, arg1_uint8x8_t, 0);
4423 }
4424
4425-/* { dg-final { scan-assembler "vext\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4426+/* { dg-final { scan-assembler "vext\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4427 /* { dg-final { cleanup-saved-temps } } */
4428
4429=== modified file 'gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c'
4430--- old/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c 2010-07-29 15:38:15 +0000
4431+++ new/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c 2010-08-20 13:27:11 +0000
4432@@ -22,7 +22,7 @@
4433 return vshll_n_u32(a, 32);
4434 }
4435
4436-/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4437-/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4438-/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4439+/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4440+/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4441+/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4442 /* { dg-final { cleanup-saved-temps } } */
4443
4444=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c'
4445--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c 2010-07-29 15:38:15 +0000
4446+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c 2010-08-20 13:27:11 +0000
4447@@ -16,5 +16,5 @@
4448 out_float32_t = vgetq_lane_f32 (arg0_float32x4_t, 1);
4449 }
4450
4451-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4452+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4453 /* { dg-final { cleanup-saved-temps } } */
4454
4455=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c'
4456--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c 2010-07-29 15:38:15 +0000
4457+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c 2010-08-20 13:27:11 +0000
4458@@ -16,5 +16,5 @@
4459 out_poly16_t = vgetq_lane_p16 (arg0_poly16x8_t, 1);
4460 }
4461
4462-/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4463+/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4464 /* { dg-final { cleanup-saved-temps } } */
4465
4466=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c'
4467--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c 2010-07-29 15:38:15 +0000
4468+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c 2010-08-20 13:27:11 +0000
4469@@ -16,5 +16,5 @@
4470 out_poly8_t = vgetq_lane_p8 (arg0_poly8x16_t, 1);
4471 }
4472
4473-/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4474+/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4475 /* { dg-final { cleanup-saved-temps } } */
4476
4477=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c'
4478--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c 2010-07-29 15:38:15 +0000
4479+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c 2010-08-20 13:27:11 +0000
4480@@ -16,5 +16,5 @@
4481 out_int16_t = vgetq_lane_s16 (arg0_int16x8_t, 1);
4482 }
4483
4484-/* { dg-final { scan-assembler "vmov\.s16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4485+/* { dg-final { scan-assembler "vmov\.s16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4486 /* { dg-final { cleanup-saved-temps } } */
4487
4488=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c'
4489--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c 2010-07-29 15:38:15 +0000
4490+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c 2010-08-20 13:27:11 +0000
4491@@ -16,5 +16,5 @@
4492 out_int32_t = vgetq_lane_s32 (arg0_int32x4_t, 1);
4493 }
4494
4495-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4496+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4497 /* { dg-final { cleanup-saved-temps } } */
4498
4499=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c'
4500--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c 2010-07-29 15:38:15 +0000
4501+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c 2010-08-20 13:27:11 +0000
4502@@ -16,5 +16,5 @@
4503 out_int64_t = vgetq_lane_s64 (arg0_int64x2_t, 0);
4504 }
4505
4506-/* { dg-final { scan-assembler "vmov\[ \]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4507+/* { dg-final { scan-assembler "vmov\[ \]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4508 /* { dg-final { cleanup-saved-temps } } */
4509
4510=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c'
4511--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c 2010-07-29 15:38:15 +0000
4512+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c 2010-08-20 13:27:11 +0000
4513@@ -16,5 +16,5 @@
4514 out_int8_t = vgetq_lane_s8 (arg0_int8x16_t, 1);
4515 }
4516
4517-/* { dg-final { scan-assembler "vmov\.s8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4518+/* { dg-final { scan-assembler "vmov\.s8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4519 /* { dg-final { cleanup-saved-temps } } */
4520
4521=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c'
4522--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c 2010-07-29 15:38:15 +0000
4523+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c 2010-08-20 13:27:11 +0000
4524@@ -16,5 +16,5 @@
4525 out_uint16_t = vgetq_lane_u16 (arg0_uint16x8_t, 1);
4526 }
4527
4528-/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4529+/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4530 /* { dg-final { cleanup-saved-temps } } */
4531
4532=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c'
4533--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c 2010-07-29 15:38:15 +0000
4534+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c 2010-08-20 13:27:11 +0000
4535@@ -16,5 +16,5 @@
4536 out_uint32_t = vgetq_lane_u32 (arg0_uint32x4_t, 1);
4537 }
4538
4539-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4540+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4541 /* { dg-final { cleanup-saved-temps } } */
4542
4543=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c'
4544--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c 2010-07-29 15:38:15 +0000
4545+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c 2010-08-20 13:27:11 +0000
4546@@ -16,5 +16,5 @@
4547 out_uint64_t = vgetq_lane_u64 (arg0_uint64x2_t, 0);
4548 }
4549
4550-/* { dg-final { scan-assembler "vmov\[ \]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4551+/* { dg-final { scan-assembler "vmov\[ \]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4552 /* { dg-final { cleanup-saved-temps } } */
4553
4554=== modified file 'gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c'
4555--- old/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c 2010-07-29 15:38:15 +0000
4556+++ new/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c 2010-08-20 13:27:11 +0000
4557@@ -16,5 +16,5 @@
4558 out_uint8_t = vgetq_lane_u8 (arg0_uint8x16_t, 1);
4559 }
4560
4561-/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4562+/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4563 /* { dg-final { cleanup-saved-temps } } */
4564
4565=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c'
4566--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c 2010-07-29 15:38:15 +0000
4567+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c 2010-08-20 13:27:11 +0000
4568@@ -16,5 +16,5 @@
4569 out_float32_t = vget_lane_f32 (arg0_float32x2_t, 1);
4570 }
4571
4572-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4573+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4574 /* { dg-final { cleanup-saved-temps } } */
4575
4576=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c'
4577--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c 2010-07-29 15:38:15 +0000
4578+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c 2010-08-20 13:27:11 +0000
4579@@ -16,5 +16,5 @@
4580 out_poly16_t = vget_lane_p16 (arg0_poly16x4_t, 1);
4581 }
4582
4583-/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4584+/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4585 /* { dg-final { cleanup-saved-temps } } */
4586
4587=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c'
4588--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c 2010-07-29 15:38:15 +0000
4589+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c 2010-08-20 13:27:11 +0000
4590@@ -16,5 +16,5 @@
4591 out_poly8_t = vget_lane_p8 (arg0_poly8x8_t, 1);
4592 }
4593
4594-/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4595+/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4596 /* { dg-final { cleanup-saved-temps } } */
4597
4598=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c'
4599--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c 2010-07-29 15:38:15 +0000
4600+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c 2010-08-20 13:27:11 +0000
4601@@ -16,5 +16,5 @@
4602 out_int16_t = vget_lane_s16 (arg0_int16x4_t, 1);
4603 }
4604
4605-/* { dg-final { scan-assembler "vmov\.s16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4606+/* { dg-final { scan-assembler "vmov\.s16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4607 /* { dg-final { cleanup-saved-temps } } */
4608
4609=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c'
4610--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c 2010-07-29 15:38:15 +0000
4611+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c 2010-08-20 13:27:11 +0000
4612@@ -16,5 +16,5 @@
4613 out_int32_t = vget_lane_s32 (arg0_int32x2_t, 1);
4614 }
4615
4616-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4617+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4618 /* { dg-final { cleanup-saved-temps } } */
4619
4620=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c'
4621--- old/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c 2010-07-29 15:38:15 +0000
4622+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c 2010-08-20 13:27:11 +0000
4623@@ -16,5 +16,5 @@
4624 out_int8_t = vget_lane_s8 (arg0_int8x8_t, 1);
4625 }
4626
4627-/* { dg-final { scan-assembler "vmov\.s8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4628+/* { dg-final { scan-assembler "vmov\.s8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4629 /* { dg-final { cleanup-saved-temps } } */
4630
4631=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c'
4632--- old/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c 2010-07-29 15:38:15 +0000
4633+++ new/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c 2010-08-20 13:27:11 +0000
4634@@ -16,5 +16,5 @@
4635 out_uint16_t = vget_lane_u16 (arg0_uint16x4_t, 1);
4636 }
4637
4638-/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4639+/* { dg-final { scan-assembler "vmov\.u16\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4640 /* { dg-final { cleanup-saved-temps } } */
4641
4642=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c'
4643--- old/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c 2010-07-29 15:38:15 +0000
4644+++ new/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c 2010-08-20 13:27:11 +0000
4645@@ -16,5 +16,5 @@
4646 out_uint32_t = vget_lane_u32 (arg0_uint32x2_t, 1);
4647 }
4648
4649-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4650+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4651 /* { dg-final { cleanup-saved-temps } } */
4652
4653=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c'
4654--- old/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c 2010-07-29 15:38:15 +0000
4655+++ new/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c 2010-08-20 13:27:11 +0000
4656@@ -16,5 +16,5 @@
4657 out_uint8_t = vget_lane_u8 (arg0_uint8x8_t, 1);
4658 }
4659
4660-/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4661+/* { dg-final { scan-assembler "vmov\.u8\[ \]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
4662 /* { dg-final { cleanup-saved-temps } } */
4663
4664=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c'
4665--- old/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c 2010-07-29 15:38:15 +0000
4666+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c 2010-08-20 13:27:11 +0000
4667@@ -16,5 +16,5 @@
4668 out_float32x2_t = vget_low_f32 (arg0_float32x4_t);
4669 }
4670
4671-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4672+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4673 /* { dg-final { cleanup-saved-temps } } */
4674
4675=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c'
4676--- old/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c 2010-07-29 15:38:15 +0000
4677+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c 2010-08-20 13:27:11 +0000
4678@@ -16,5 +16,5 @@
4679 out_poly16x4_t = vget_low_p16 (arg0_poly16x8_t);
4680 }
4681
4682-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4683+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4684 /* { dg-final { cleanup-saved-temps } } */
4685
4686=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c'
4687--- old/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c 2010-07-29 15:38:15 +0000
4688+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c 2010-08-20 13:27:11 +0000
4689@@ -16,5 +16,5 @@
4690 out_poly8x8_t = vget_low_p8 (arg0_poly8x16_t);
4691 }
4692
4693-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4694+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4695 /* { dg-final { cleanup-saved-temps } } */
4696
4697=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lows16.c'
4698--- old/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c 2010-07-29 15:38:15 +0000
4699+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c 2010-08-20 13:27:11 +0000
4700@@ -16,5 +16,5 @@
4701 out_int16x4_t = vget_low_s16 (arg0_int16x8_t);
4702 }
4703
4704-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4705+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4706 /* { dg-final { cleanup-saved-temps } } */
4707
4708=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lows32.c'
4709--- old/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c 2010-07-29 15:38:15 +0000
4710+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c 2010-08-20 13:27:11 +0000
4711@@ -16,5 +16,5 @@
4712 out_int32x2_t = vget_low_s32 (arg0_int32x4_t);
4713 }
4714
4715-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4716+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4717 /* { dg-final { cleanup-saved-temps } } */
4718
4719=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lows8.c'
4720--- old/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c 2010-07-29 15:38:15 +0000
4721+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c 2010-08-20 13:27:11 +0000
4722@@ -16,5 +16,5 @@
4723 out_int8x8_t = vget_low_s8 (arg0_int8x16_t);
4724 }
4725
4726-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4727+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4728 /* { dg-final { cleanup-saved-temps } } */
4729
4730=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c'
4731--- old/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c 2010-07-29 15:38:15 +0000
4732+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c 2010-08-20 13:27:11 +0000
4733@@ -16,5 +16,5 @@
4734 out_uint16x4_t = vget_low_u16 (arg0_uint16x8_t);
4735 }
4736
4737-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4738+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4739 /* { dg-final { cleanup-saved-temps } } */
4740
4741=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c'
4742--- old/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c 2010-07-29 15:38:15 +0000
4743+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c 2010-08-20 13:27:11 +0000
4744@@ -16,5 +16,5 @@
4745 out_uint32x2_t = vget_low_u32 (arg0_uint32x4_t);
4746 }
4747
4748-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4749+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4750 /* { dg-final { cleanup-saved-temps } } */
4751
4752=== modified file 'gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c'
4753--- old/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c 2010-07-29 15:38:15 +0000
4754+++ new/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c 2010-08-20 13:27:11 +0000
4755@@ -16,5 +16,5 @@
4756 out_uint8x8_t = vget_low_u8 (arg0_uint8x16_t);
4757 }
4758
4759-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4760+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4761 /* { dg-final { cleanup-saved-temps } } */
4762
4763=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c'
4764--- old/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c 2010-07-29 15:38:15 +0000
4765+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c 2010-08-20 13:27:11 +0000
4766@@ -17,5 +17,5 @@
4767 out_int16x8_t = vhaddq_s16 (arg0_int16x8_t, arg1_int16x8_t);
4768 }
4769
4770-/* { dg-final { scan-assembler "vhadd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4771+/* { dg-final { scan-assembler "vhadd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4772 /* { dg-final { cleanup-saved-temps } } */
4773
4774=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c'
4775--- old/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c 2010-07-29 15:38:15 +0000
4776+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c 2010-08-20 13:27:11 +0000
4777@@ -17,5 +17,5 @@
4778 out_int32x4_t = vhaddq_s32 (arg0_int32x4_t, arg1_int32x4_t);
4779 }
4780
4781-/* { dg-final { scan-assembler "vhadd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4782+/* { dg-final { scan-assembler "vhadd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4783 /* { dg-final { cleanup-saved-temps } } */
4784
4785=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c'
4786--- old/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c 2010-07-29 15:38:15 +0000
4787+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c 2010-08-20 13:27:11 +0000
4788@@ -17,5 +17,5 @@
4789 out_int8x16_t = vhaddq_s8 (arg0_int8x16_t, arg1_int8x16_t);
4790 }
4791
4792-/* { dg-final { scan-assembler "vhadd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4793+/* { dg-final { scan-assembler "vhadd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4794 /* { dg-final { cleanup-saved-temps } } */
4795
4796=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c'
4797--- old/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c 2010-07-29 15:38:15 +0000
4798+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c 2010-08-20 13:27:11 +0000
4799@@ -17,5 +17,5 @@
4800 out_uint16x8_t = vhaddq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
4801 }
4802
4803-/* { dg-final { scan-assembler "vhadd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4804+/* { dg-final { scan-assembler "vhadd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4805 /* { dg-final { cleanup-saved-temps } } */
4806
4807=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c'
4808--- old/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c 2010-07-29 15:38:15 +0000
4809+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c 2010-08-20 13:27:11 +0000
4810@@ -17,5 +17,5 @@
4811 out_uint32x4_t = vhaddq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
4812 }
4813
4814-/* { dg-final { scan-assembler "vhadd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4815+/* { dg-final { scan-assembler "vhadd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4816 /* { dg-final { cleanup-saved-temps } } */
4817
4818=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c'
4819--- old/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c 2010-07-29 15:38:15 +0000
4820+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c 2010-08-20 13:27:11 +0000
4821@@ -17,5 +17,5 @@
4822 out_uint8x16_t = vhaddq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
4823 }
4824
4825-/* { dg-final { scan-assembler "vhadd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4826+/* { dg-final { scan-assembler "vhadd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4827 /* { dg-final { cleanup-saved-temps } } */
4828
4829=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhadds16.c'
4830--- old/gcc/testsuite/gcc.target/arm/neon/vhadds16.c 2010-07-29 15:38:15 +0000
4831+++ new/gcc/testsuite/gcc.target/arm/neon/vhadds16.c 2010-08-20 13:27:11 +0000
4832@@ -17,5 +17,5 @@
4833 out_int16x4_t = vhadd_s16 (arg0_int16x4_t, arg1_int16x4_t);
4834 }
4835
4836-/* { dg-final { scan-assembler "vhadd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4837+/* { dg-final { scan-assembler "vhadd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4838 /* { dg-final { cleanup-saved-temps } } */
4839
4840=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhadds32.c'
4841--- old/gcc/testsuite/gcc.target/arm/neon/vhadds32.c 2010-07-29 15:38:15 +0000
4842+++ new/gcc/testsuite/gcc.target/arm/neon/vhadds32.c 2010-08-20 13:27:11 +0000
4843@@ -17,5 +17,5 @@
4844 out_int32x2_t = vhadd_s32 (arg0_int32x2_t, arg1_int32x2_t);
4845 }
4846
4847-/* { dg-final { scan-assembler "vhadd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4848+/* { dg-final { scan-assembler "vhadd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4849 /* { dg-final { cleanup-saved-temps } } */
4850
4851=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhadds8.c'
4852--- old/gcc/testsuite/gcc.target/arm/neon/vhadds8.c 2010-07-29 15:38:15 +0000
4853+++ new/gcc/testsuite/gcc.target/arm/neon/vhadds8.c 2010-08-20 13:27:11 +0000
4854@@ -17,5 +17,5 @@
4855 out_int8x8_t = vhadd_s8 (arg0_int8x8_t, arg1_int8x8_t);
4856 }
4857
4858-/* { dg-final { scan-assembler "vhadd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4859+/* { dg-final { scan-assembler "vhadd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4860 /* { dg-final { cleanup-saved-temps } } */
4861
4862=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddu16.c'
4863--- old/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c 2010-07-29 15:38:15 +0000
4864+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c 2010-08-20 13:27:11 +0000
4865@@ -17,5 +17,5 @@
4866 out_uint16x4_t = vhadd_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
4867 }
4868
4869-/* { dg-final { scan-assembler "vhadd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4870+/* { dg-final { scan-assembler "vhadd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4871 /* { dg-final { cleanup-saved-temps } } */
4872
4873=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddu32.c'
4874--- old/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c 2010-07-29 15:38:15 +0000
4875+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c 2010-08-20 13:27:11 +0000
4876@@ -17,5 +17,5 @@
4877 out_uint32x2_t = vhadd_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
4878 }
4879
4880-/* { dg-final { scan-assembler "vhadd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4881+/* { dg-final { scan-assembler "vhadd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4882 /* { dg-final { cleanup-saved-temps } } */
4883
4884=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhaddu8.c'
4885--- old/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c 2010-07-29 15:38:15 +0000
4886+++ new/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c 2010-08-20 13:27:11 +0000
4887@@ -17,5 +17,5 @@
4888 out_uint8x8_t = vhadd_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
4889 }
4890
4891-/* { dg-final { scan-assembler "vhadd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4892+/* { dg-final { scan-assembler "vhadd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4893 /* { dg-final { cleanup-saved-temps } } */
4894
4895=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c'
4896--- old/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c 2010-07-29 15:38:15 +0000
4897+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c 2010-08-20 13:27:11 +0000
4898@@ -17,5 +17,5 @@
4899 out_int16x8_t = vhsubq_s16 (arg0_int16x8_t, arg1_int16x8_t);
4900 }
4901
4902-/* { dg-final { scan-assembler "vhsub\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4903+/* { dg-final { scan-assembler "vhsub\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4904 /* { dg-final { cleanup-saved-temps } } */
4905
4906=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c'
4907--- old/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c 2010-07-29 15:38:15 +0000
4908+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c 2010-08-20 13:27:11 +0000
4909@@ -17,5 +17,5 @@
4910 out_int32x4_t = vhsubq_s32 (arg0_int32x4_t, arg1_int32x4_t);
4911 }
4912
4913-/* { dg-final { scan-assembler "vhsub\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4914+/* { dg-final { scan-assembler "vhsub\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4915 /* { dg-final { cleanup-saved-temps } } */
4916
4917=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c'
4918--- old/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c 2010-07-29 15:38:15 +0000
4919+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c 2010-08-20 13:27:11 +0000
4920@@ -17,5 +17,5 @@
4921 out_int8x16_t = vhsubq_s8 (arg0_int8x16_t, arg1_int8x16_t);
4922 }
4923
4924-/* { dg-final { scan-assembler "vhsub\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4925+/* { dg-final { scan-assembler "vhsub\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4926 /* { dg-final { cleanup-saved-temps } } */
4927
4928=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c'
4929--- old/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c 2010-07-29 15:38:15 +0000
4930+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c 2010-08-20 13:27:11 +0000
4931@@ -17,5 +17,5 @@
4932 out_uint16x8_t = vhsubq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
4933 }
4934
4935-/* { dg-final { scan-assembler "vhsub\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4936+/* { dg-final { scan-assembler "vhsub\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4937 /* { dg-final { cleanup-saved-temps } } */
4938
4939=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c'
4940--- old/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c 2010-07-29 15:38:15 +0000
4941+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c 2010-08-20 13:27:11 +0000
4942@@ -17,5 +17,5 @@
4943 out_uint32x4_t = vhsubq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
4944 }
4945
4946-/* { dg-final { scan-assembler "vhsub\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4947+/* { dg-final { scan-assembler "vhsub\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4948 /* { dg-final { cleanup-saved-temps } } */
4949
4950=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c'
4951--- old/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c 2010-07-29 15:38:15 +0000
4952+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c 2010-08-20 13:27:11 +0000
4953@@ -17,5 +17,5 @@
4954 out_uint8x16_t = vhsubq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
4955 }
4956
4957-/* { dg-final { scan-assembler "vhsub\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4958+/* { dg-final { scan-assembler "vhsub\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4959 /* { dg-final { cleanup-saved-temps } } */
4960
4961=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubs16.c'
4962--- old/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c 2010-07-29 15:38:15 +0000
4963+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c 2010-08-20 13:27:11 +0000
4964@@ -17,5 +17,5 @@
4965 out_int16x4_t = vhsub_s16 (arg0_int16x4_t, arg1_int16x4_t);
4966 }
4967
4968-/* { dg-final { scan-assembler "vhsub\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4969+/* { dg-final { scan-assembler "vhsub\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4970 /* { dg-final { cleanup-saved-temps } } */
4971
4972=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubs32.c'
4973--- old/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c 2010-07-29 15:38:15 +0000
4974+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c 2010-08-20 13:27:11 +0000
4975@@ -17,5 +17,5 @@
4976 out_int32x2_t = vhsub_s32 (arg0_int32x2_t, arg1_int32x2_t);
4977 }
4978
4979-/* { dg-final { scan-assembler "vhsub\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4980+/* { dg-final { scan-assembler "vhsub\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4981 /* { dg-final { cleanup-saved-temps } } */
4982
4983=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubs8.c'
4984--- old/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c 2010-07-29 15:38:15 +0000
4985+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c 2010-08-20 13:27:11 +0000
4986@@ -17,5 +17,5 @@
4987 out_int8x8_t = vhsub_s8 (arg0_int8x8_t, arg1_int8x8_t);
4988 }
4989
4990-/* { dg-final { scan-assembler "vhsub\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
4991+/* { dg-final { scan-assembler "vhsub\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
4992 /* { dg-final { cleanup-saved-temps } } */
4993
4994=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubu16.c'
4995--- old/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c 2010-07-29 15:38:15 +0000
4996+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c 2010-08-20 13:27:11 +0000
4997@@ -17,5 +17,5 @@
4998 out_uint16x4_t = vhsub_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
4999 }
5000
5001-/* { dg-final { scan-assembler "vhsub\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5002+/* { dg-final { scan-assembler "vhsub\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
5003 /* { dg-final { cleanup-saved-temps } } */
5004
5005=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubu32.c'
5006--- old/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c 2010-07-29 15:38:15 +0000
5007+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c 2010-08-20 13:27:11 +0000
5008@@ -17,5 +17,5 @@
5009 out_uint32x2_t = vhsub_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
5010 }
5011
5012-/* { dg-final { scan-assembler "vhsub\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5013+/* { dg-final { scan-assembler "vhsub\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
5014 /* { dg-final { cleanup-saved-temps } } */
5015
5016=== modified file 'gcc/testsuite/gcc.target/arm/neon/vhsubu8.c'
5017--- old/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c 2010-07-29 15:38:15 +0000
5018+++ new/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c 2010-08-20 13:27:11 +0000
5019@@ -17,5 +17,5 @@
5020 out_uint8x8_t = vhsub_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
5021 }
5022
5023-/* { dg-final { scan-assembler "vhsub\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5024+/* { dg-final { scan-assembler "vhsub\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
5025 /* { dg-final { cleanup-saved-temps } } */
5026
5027=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c'
5028--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c 2010-07-29 15:38:15 +0000
5029+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c 2010-08-20 13:27:11 +0000
5030@@ -15,5 +15,5 @@
5031 out_float32x4_t = vld1q_dup_f32 (0);
5032 }
5033
5034-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5035+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5036 /* { dg-final { cleanup-saved-temps } } */
5037
5038=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c'
5039--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c 2010-07-29 15:38:15 +0000
5040+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c 2010-08-20 13:27:11 +0000
5041@@ -15,5 +15,5 @@
5042 out_poly16x8_t = vld1q_dup_p16 (0);
5043 }
5044
5045-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5046+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5047 /* { dg-final { cleanup-saved-temps } } */
5048
5049=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c'
5050--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c 2010-07-29 15:38:15 +0000
5051+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c 2010-08-20 13:27:11 +0000
5052@@ -15,5 +15,5 @@
5053 out_poly8x16_t = vld1q_dup_p8 (0);
5054 }
5055
5056-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5057+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5058 /* { dg-final { cleanup-saved-temps } } */
5059
5060=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c'
5061--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c 2010-07-29 15:38:15 +0000
5062+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c 2010-08-20 13:27:11 +0000
5063@@ -15,5 +15,5 @@
5064 out_int16x8_t = vld1q_dup_s16 (0);
5065 }
5066
5067-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5068+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5069 /* { dg-final { cleanup-saved-temps } } */
5070
5071=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c'
5072--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c 2010-07-29 15:38:15 +0000
5073+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c 2010-08-20 13:27:11 +0000
5074@@ -15,5 +15,5 @@
5075 out_int32x4_t = vld1q_dup_s32 (0);
5076 }
5077
5078-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5079+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5080 /* { dg-final { cleanup-saved-temps } } */
5081
5082=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c'
5083--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c 2010-07-29 15:38:15 +0000
5084+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c 2010-08-20 13:27:11 +0000
5085@@ -15,5 +15,5 @@
5086 out_int64x2_t = vld1q_dup_s64 (0);
5087 }
5088
5089-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5090+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5091 /* { dg-final { cleanup-saved-temps } } */
5092
5093=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c'
5094--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c 2010-07-29 15:38:15 +0000
5095+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c 2010-08-20 13:27:11 +0000
5096@@ -15,5 +15,5 @@
5097 out_int8x16_t = vld1q_dup_s8 (0);
5098 }
5099
5100-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5101+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5102 /* { dg-final { cleanup-saved-temps } } */
5103
5104=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c'
5105--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c 2010-07-29 15:38:15 +0000
5106+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c 2010-08-20 13:27:11 +0000
5107@@ -15,5 +15,5 @@
5108 out_uint16x8_t = vld1q_dup_u16 (0);
5109 }
5110
5111-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5112+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5113 /* { dg-final { cleanup-saved-temps } } */
5114
5115=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c'
5116--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c 2010-07-29 15:38:15 +0000
5117+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c 2010-08-20 13:27:11 +0000
5118@@ -15,5 +15,5 @@
5119 out_uint32x4_t = vld1q_dup_u32 (0);
5120 }
5121
5122-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5123+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5124 /* { dg-final { cleanup-saved-temps } } */
5125
5126=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c'
5127--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c 2010-07-29 15:38:15 +0000
5128+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c 2010-08-20 13:27:11 +0000
5129@@ -15,5 +15,5 @@
5130 out_uint64x2_t = vld1q_dup_u64 (0);
5131 }
5132
5133-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5134+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5135 /* { dg-final { cleanup-saved-temps } } */
5136
5137=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c'
5138--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c 2010-07-29 15:38:15 +0000
5139+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c 2010-08-20 13:27:11 +0000
5140@@ -15,5 +15,5 @@
5141 out_uint8x16_t = vld1q_dup_u8 (0);
5142 }
5143
5144-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5145+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5146 /* { dg-final { cleanup-saved-temps } } */
5147
5148=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c'
5149--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c 2010-07-29 15:38:15 +0000
5150+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c 2010-08-20 13:27:11 +0000
5151@@ -16,5 +16,5 @@
5152 out_float32x4_t = vld1q_lane_f32 (0, arg1_float32x4_t, 1);
5153 }
5154
5155-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5156+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5157 /* { dg-final { cleanup-saved-temps } } */
5158
5159=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c'
5160--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c 2010-07-29 15:38:15 +0000
5161+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c 2010-08-20 13:27:11 +0000
5162@@ -16,5 +16,5 @@
5163 out_poly16x8_t = vld1q_lane_p16 (0, arg1_poly16x8_t, 1);
5164 }
5165
5166-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5167+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5168 /* { dg-final { cleanup-saved-temps } } */
5169
5170=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c'
5171--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c 2010-07-29 15:38:15 +0000
5172+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c 2010-08-20 13:27:11 +0000
5173@@ -16,5 +16,5 @@
5174 out_poly8x16_t = vld1q_lane_p8 (0, arg1_poly8x16_t, 1);
5175 }
5176
5177-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5178+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5179 /* { dg-final { cleanup-saved-temps } } */
5180
5181=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c'
5182--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c 2010-07-29 15:38:15 +0000
5183+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c 2010-08-20 13:27:11 +0000
5184@@ -16,5 +16,5 @@
5185 out_int16x8_t = vld1q_lane_s16 (0, arg1_int16x8_t, 1);
5186 }
5187
5188-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5189+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5190 /* { dg-final { cleanup-saved-temps } } */
5191
5192=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c'
5193--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c 2010-07-29 15:38:15 +0000
5194+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c 2010-08-20 13:27:11 +0000
5195@@ -16,5 +16,5 @@
5196 out_int32x4_t = vld1q_lane_s32 (0, arg1_int32x4_t, 1);
5197 }
5198
5199-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5200+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5201 /* { dg-final { cleanup-saved-temps } } */
5202
5203=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c'
5204--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c 2010-07-29 15:38:15 +0000
5205+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c 2010-08-20 13:27:11 +0000
5206@@ -16,5 +16,5 @@
5207 out_int64x2_t = vld1q_lane_s64 (0, arg1_int64x2_t, 1);
5208 }
5209
5210-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5211+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5212 /* { dg-final { cleanup-saved-temps } } */
5213
5214=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c'
5215--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c 2010-07-29 15:38:15 +0000
5216+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c 2010-08-20 13:27:11 +0000
5217@@ -16,5 +16,5 @@
5218 out_int8x16_t = vld1q_lane_s8 (0, arg1_int8x16_t, 1);
5219 }
5220
5221-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5222+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5223 /* { dg-final { cleanup-saved-temps } } */
5224
5225=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c'
5226--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c 2010-07-29 15:38:15 +0000
5227+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c 2010-08-20 13:27:11 +0000
5228@@ -16,5 +16,5 @@
5229 out_uint16x8_t = vld1q_lane_u16 (0, arg1_uint16x8_t, 1);
5230 }
5231
5232-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5233+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5234 /* { dg-final { cleanup-saved-temps } } */
5235
5236=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c'
5237--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c 2010-07-29 15:38:15 +0000
5238+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c 2010-08-20 13:27:11 +0000
5239@@ -16,5 +16,5 @@
5240 out_uint32x4_t = vld1q_lane_u32 (0, arg1_uint32x4_t, 1);
5241 }
5242
5243-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5244+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5245 /* { dg-final { cleanup-saved-temps } } */
5246
5247=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c'
5248--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c 2010-07-29 15:38:15 +0000
5249+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c 2010-08-20 13:27:11 +0000
5250@@ -16,5 +16,5 @@
5251 out_uint64x2_t = vld1q_lane_u64 (0, arg1_uint64x2_t, 1);
5252 }
5253
5254-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5255+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5256 /* { dg-final { cleanup-saved-temps } } */
5257
5258=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c'
5259--- old/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c 2010-07-29 15:38:15 +0000
5260+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c 2010-08-20 13:27:11 +0000
5261@@ -16,5 +16,5 @@
5262 out_uint8x16_t = vld1q_lane_u8 (0, arg1_uint8x16_t, 1);
5263 }
5264
5265-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5266+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5267 /* { dg-final { cleanup-saved-temps } } */
5268
5269=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c'
5270--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c 2010-07-29 15:38:15 +0000
5271+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c 2010-08-20 13:27:11 +0000
5272@@ -15,5 +15,5 @@
5273 out_float32x4_t = vld1q_f32 (0);
5274 }
5275
5276-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5277+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5278 /* { dg-final { cleanup-saved-temps } } */
5279
5280=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c'
5281--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c 2010-07-29 15:38:15 +0000
5282+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c 2010-08-20 13:27:11 +0000
5283@@ -15,5 +15,5 @@
5284 out_poly16x8_t = vld1q_p16 (0);
5285 }
5286
5287-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5288+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5289 /* { dg-final { cleanup-saved-temps } } */
5290
5291=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c'
5292--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c 2010-07-29 15:38:15 +0000
5293+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c 2010-08-20 13:27:11 +0000
5294@@ -15,5 +15,5 @@
5295 out_poly8x16_t = vld1q_p8 (0);
5296 }
5297
5298-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5299+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5300 /* { dg-final { cleanup-saved-temps } } */
5301
5302=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c'
5303--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c 2010-07-29 15:38:15 +0000
5304+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c 2010-08-20 13:27:11 +0000
5305@@ -15,5 +15,5 @@
5306 out_int16x8_t = vld1q_s16 (0);
5307 }
5308
5309-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5310+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5311 /* { dg-final { cleanup-saved-temps } } */
5312
5313=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c'
5314--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c 2010-07-29 15:38:15 +0000
5315+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c 2010-08-20 13:27:11 +0000
5316@@ -15,5 +15,5 @@
5317 out_int32x4_t = vld1q_s32 (0);
5318 }
5319
5320-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5321+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5322 /* { dg-final { cleanup-saved-temps } } */
5323
5324=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c'
5325--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c 2010-07-29 15:38:15 +0000
5326+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c 2010-08-20 13:27:11 +0000
5327@@ -15,5 +15,5 @@
5328 out_int64x2_t = vld1q_s64 (0);
5329 }
5330
5331-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5332+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5333 /* { dg-final { cleanup-saved-temps } } */
5334
5335=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c'
5336--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c 2010-07-29 15:38:15 +0000
5337+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c 2010-08-20 13:27:11 +0000
5338@@ -15,5 +15,5 @@
5339 out_int8x16_t = vld1q_s8 (0);
5340 }
5341
5342-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5343+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5344 /* { dg-final { cleanup-saved-temps } } */
5345
5346=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c'
5347--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c 2010-07-29 15:38:15 +0000
5348+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c 2010-08-20 13:27:11 +0000
5349@@ -15,5 +15,5 @@
5350 out_uint16x8_t = vld1q_u16 (0);
5351 }
5352
5353-/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5354+/* { dg-final { scan-assembler "vld1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5355 /* { dg-final { cleanup-saved-temps } } */
5356
5357=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c'
5358--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c 2010-07-29 15:38:15 +0000
5359+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c 2010-08-20 13:27:11 +0000
5360@@ -15,5 +15,5 @@
5361 out_uint32x4_t = vld1q_u32 (0);
5362 }
5363
5364-/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5365+/* { dg-final { scan-assembler "vld1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5366 /* { dg-final { cleanup-saved-temps } } */
5367
5368=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c'
5369--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c 2010-07-29 15:38:15 +0000
5370+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c 2010-08-20 13:27:11 +0000
5371@@ -15,5 +15,5 @@
5372 out_uint64x2_t = vld1q_u64 (0);
5373 }
5374
5375-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5376+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5377 /* { dg-final { cleanup-saved-temps } } */
5378
5379=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c'
5380--- old/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c 2010-07-29 15:38:15 +0000
5381+++ new/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c 2010-08-20 13:27:11 +0000
5382@@ -15,5 +15,5 @@
5383 out_uint8x16_t = vld1q_u8 (0);
5384 }
5385
5386-/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5387+/* { dg-final { scan-assembler "vld1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5388 /* { dg-final { cleanup-saved-temps } } */
5389
5390=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c'
5391--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c 2010-07-29 15:38:15 +0000
5392+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c 2010-08-20 13:27:11 +0000
5393@@ -15,5 +15,5 @@
5394 out_float32x2_t = vld1_dup_f32 (0);
5395 }
5396
5397-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5398+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5399 /* { dg-final { cleanup-saved-temps } } */
5400
5401=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c'
5402--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c 2010-07-29 15:38:15 +0000
5403+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c 2010-08-20 13:27:11 +0000
5404@@ -15,5 +15,5 @@
5405 out_poly16x4_t = vld1_dup_p16 (0);
5406 }
5407
5408-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5409+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5410 /* { dg-final { cleanup-saved-temps } } */
5411
5412=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c'
5413--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c 2010-07-29 15:38:15 +0000
5414+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c 2010-08-20 13:27:11 +0000
5415@@ -15,5 +15,5 @@
5416 out_poly8x8_t = vld1_dup_p8 (0);
5417 }
5418
5419-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5420+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5421 /* { dg-final { cleanup-saved-temps } } */
5422
5423=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c'
5424--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c 2010-07-29 15:38:15 +0000
5425+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c 2010-08-20 13:27:11 +0000
5426@@ -15,5 +15,5 @@
5427 out_int16x4_t = vld1_dup_s16 (0);
5428 }
5429
5430-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5431+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5432 /* { dg-final { cleanup-saved-temps } } */
5433
5434=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c'
5435--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c 2010-07-29 15:38:15 +0000
5436+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c 2010-08-20 13:27:11 +0000
5437@@ -15,5 +15,5 @@
5438 out_int32x2_t = vld1_dup_s32 (0);
5439 }
5440
5441-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5442+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5443 /* { dg-final { cleanup-saved-temps } } */
5444
5445=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c'
5446--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c 2010-07-29 15:38:15 +0000
5447+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c 2010-08-20 13:27:11 +0000
5448@@ -15,5 +15,5 @@
5449 out_int64x1_t = vld1_dup_s64 (0);
5450 }
5451
5452-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5453+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5454 /* { dg-final { cleanup-saved-temps } } */
5455
5456=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c'
5457--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c 2010-07-29 15:38:15 +0000
5458+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c 2010-08-20 13:27:11 +0000
5459@@ -15,5 +15,5 @@
5460 out_int8x8_t = vld1_dup_s8 (0);
5461 }
5462
5463-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5464+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5465 /* { dg-final { cleanup-saved-temps } } */
5466
5467=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c'
5468--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c 2010-07-29 15:38:15 +0000
5469+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c 2010-08-20 13:27:11 +0000
5470@@ -15,5 +15,5 @@
5471 out_uint16x4_t = vld1_dup_u16 (0);
5472 }
5473
5474-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5475+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5476 /* { dg-final { cleanup-saved-temps } } */
5477
5478=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c'
5479--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c 2010-07-29 15:38:15 +0000
5480+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c 2010-08-20 13:27:11 +0000
5481@@ -15,5 +15,5 @@
5482 out_uint32x2_t = vld1_dup_u32 (0);
5483 }
5484
5485-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5486+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5487 /* { dg-final { cleanup-saved-temps } } */
5488
5489=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c'
5490--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c 2010-07-29 15:38:15 +0000
5491+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c 2010-08-20 13:27:11 +0000
5492@@ -15,5 +15,5 @@
5493 out_uint64x1_t = vld1_dup_u64 (0);
5494 }
5495
5496-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5497+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5498 /* { dg-final { cleanup-saved-temps } } */
5499
5500=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c'
5501--- old/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c 2010-07-29 15:38:15 +0000
5502+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c 2010-08-20 13:27:11 +0000
5503@@ -15,5 +15,5 @@
5504 out_uint8x8_t = vld1_dup_u8 (0);
5505 }
5506
5507-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5508+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5509 /* { dg-final { cleanup-saved-temps } } */
5510
5511=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c'
5512--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c 2010-07-29 15:38:15 +0000
5513+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c 2010-08-20 13:27:11 +0000
5514@@ -16,5 +16,5 @@
5515 out_float32x2_t = vld1_lane_f32 (0, arg1_float32x2_t, 1);
5516 }
5517
5518-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5519+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5520 /* { dg-final { cleanup-saved-temps } } */
5521
5522=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c'
5523--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c 2010-07-29 15:38:15 +0000
5524+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c 2010-08-20 13:27:11 +0000
5525@@ -16,5 +16,5 @@
5526 out_poly16x4_t = vld1_lane_p16 (0, arg1_poly16x4_t, 1);
5527 }
5528
5529-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5530+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5531 /* { dg-final { cleanup-saved-temps } } */
5532
5533=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c'
5534--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c 2010-07-29 15:38:15 +0000
5535+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c 2010-08-20 13:27:11 +0000
5536@@ -16,5 +16,5 @@
5537 out_poly8x8_t = vld1_lane_p8 (0, arg1_poly8x8_t, 1);
5538 }
5539
5540-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5541+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5542 /* { dg-final { cleanup-saved-temps } } */
5543
5544=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c'
5545--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c 2010-07-29 15:38:15 +0000
5546+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c 2010-08-20 13:27:11 +0000
5547@@ -16,5 +16,5 @@
5548 out_int16x4_t = vld1_lane_s16 (0, arg1_int16x4_t, 1);
5549 }
5550
5551-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5552+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5553 /* { dg-final { cleanup-saved-temps } } */
5554
5555=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c'
5556--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c 2010-07-29 15:38:15 +0000
5557+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c 2010-08-20 13:27:11 +0000
5558@@ -16,5 +16,5 @@
5559 out_int32x2_t = vld1_lane_s32 (0, arg1_int32x2_t, 1);
5560 }
5561
5562-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5563+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5564 /* { dg-final { cleanup-saved-temps } } */
5565
5566=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c'
5567--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c 2010-07-29 15:38:15 +0000
5568+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c 2010-08-20 13:27:11 +0000
5569@@ -16,5 +16,5 @@
5570 out_int64x1_t = vld1_lane_s64 (0, arg1_int64x1_t, 0);
5571 }
5572
5573-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5574+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5575 /* { dg-final { cleanup-saved-temps } } */
5576
5577=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c'
5578--- old/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c 2010-07-29 15:38:15 +0000
5579+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c 2010-08-20 13:27:11 +0000
5580@@ -16,5 +16,5 @@
5581 out_int8x8_t = vld1_lane_s8 (0, arg1_int8x8_t, 1);
5582 }
5583
5584-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5585+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5586 /* { dg-final { cleanup-saved-temps } } */
5587
5588=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c'
5589--- old/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c 2010-07-29 15:38:15 +0000
5590+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c 2010-08-20 13:27:11 +0000
5591@@ -16,5 +16,5 @@
5592 out_uint16x4_t = vld1_lane_u16 (0, arg1_uint16x4_t, 1);
5593 }
5594
5595-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5596+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5597 /* { dg-final { cleanup-saved-temps } } */
5598
5599=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c'
5600--- old/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c 2010-07-29 15:38:15 +0000
5601+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c 2010-08-20 13:27:11 +0000
5602@@ -16,5 +16,5 @@
5603 out_uint32x2_t = vld1_lane_u32 (0, arg1_uint32x2_t, 1);
5604 }
5605
5606-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5607+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5608 /* { dg-final { cleanup-saved-temps } } */
5609
5610=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c'
5611--- old/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c 2010-07-29 15:38:15 +0000
5612+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c 2010-08-20 13:27:11 +0000
5613@@ -16,5 +16,5 @@
5614 out_uint64x1_t = vld1_lane_u64 (0, arg1_uint64x1_t, 0);
5615 }
5616
5617-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5618+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5619 /* { dg-final { cleanup-saved-temps } } */
5620
5621=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c'
5622--- old/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c 2010-07-29 15:38:15 +0000
5623+++ new/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c 2010-08-20 13:27:11 +0000
5624@@ -16,5 +16,5 @@
5625 out_uint8x8_t = vld1_lane_u8 (0, arg1_uint8x8_t, 1);
5626 }
5627
5628-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5629+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5630 /* { dg-final { cleanup-saved-temps } } */
5631
5632=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1f32.c'
5633--- old/gcc/testsuite/gcc.target/arm/neon/vld1f32.c 2010-07-29 15:38:15 +0000
5634+++ new/gcc/testsuite/gcc.target/arm/neon/vld1f32.c 2010-08-20 13:27:11 +0000
5635@@ -15,5 +15,5 @@
5636 out_float32x2_t = vld1_f32 (0);
5637 }
5638
5639-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5640+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5641 /* { dg-final { cleanup-saved-temps } } */
5642
5643=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1p16.c'
5644--- old/gcc/testsuite/gcc.target/arm/neon/vld1p16.c 2010-07-29 15:38:15 +0000
5645+++ new/gcc/testsuite/gcc.target/arm/neon/vld1p16.c 2010-08-20 13:27:11 +0000
5646@@ -15,5 +15,5 @@
5647 out_poly16x4_t = vld1_p16 (0);
5648 }
5649
5650-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5651+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5652 /* { dg-final { cleanup-saved-temps } } */
5653
5654=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1p8.c'
5655--- old/gcc/testsuite/gcc.target/arm/neon/vld1p8.c 2010-07-29 15:38:15 +0000
5656+++ new/gcc/testsuite/gcc.target/arm/neon/vld1p8.c 2010-08-20 13:27:11 +0000
5657@@ -15,5 +15,5 @@
5658 out_poly8x8_t = vld1_p8 (0);
5659 }
5660
5661-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5662+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5663 /* { dg-final { cleanup-saved-temps } } */
5664
5665=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1s16.c'
5666--- old/gcc/testsuite/gcc.target/arm/neon/vld1s16.c 2010-07-29 15:38:15 +0000
5667+++ new/gcc/testsuite/gcc.target/arm/neon/vld1s16.c 2010-08-20 13:27:11 +0000
5668@@ -15,5 +15,5 @@
5669 out_int16x4_t = vld1_s16 (0);
5670 }
5671
5672-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5673+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5674 /* { dg-final { cleanup-saved-temps } } */
5675
5676=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1s32.c'
5677--- old/gcc/testsuite/gcc.target/arm/neon/vld1s32.c 2010-07-29 15:38:15 +0000
5678+++ new/gcc/testsuite/gcc.target/arm/neon/vld1s32.c 2010-08-20 13:27:11 +0000
5679@@ -15,5 +15,5 @@
5680 out_int32x2_t = vld1_s32 (0);
5681 }
5682
5683-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5684+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5685 /* { dg-final { cleanup-saved-temps } } */
5686
5687=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1s64.c'
5688--- old/gcc/testsuite/gcc.target/arm/neon/vld1s64.c 2010-07-29 15:38:15 +0000
5689+++ new/gcc/testsuite/gcc.target/arm/neon/vld1s64.c 2010-08-20 13:27:11 +0000
5690@@ -15,5 +15,5 @@
5691 out_int64x1_t = vld1_s64 (0);
5692 }
5693
5694-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5695+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5696 /* { dg-final { cleanup-saved-temps } } */
5697
5698=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1s8.c'
5699--- old/gcc/testsuite/gcc.target/arm/neon/vld1s8.c 2010-07-29 15:38:15 +0000
5700+++ new/gcc/testsuite/gcc.target/arm/neon/vld1s8.c 2010-08-20 13:27:11 +0000
5701@@ -15,5 +15,5 @@
5702 out_int8x8_t = vld1_s8 (0);
5703 }
5704
5705-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5706+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5707 /* { dg-final { cleanup-saved-temps } } */
5708
5709=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1u16.c'
5710--- old/gcc/testsuite/gcc.target/arm/neon/vld1u16.c 2010-07-29 15:38:15 +0000
5711+++ new/gcc/testsuite/gcc.target/arm/neon/vld1u16.c 2010-08-20 13:27:11 +0000
5712@@ -15,5 +15,5 @@
5713 out_uint16x4_t = vld1_u16 (0);
5714 }
5715
5716-/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5717+/* { dg-final { scan-assembler "vld1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5718 /* { dg-final { cleanup-saved-temps } } */
5719
5720=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1u32.c'
5721--- old/gcc/testsuite/gcc.target/arm/neon/vld1u32.c 2010-07-29 15:38:15 +0000
5722+++ new/gcc/testsuite/gcc.target/arm/neon/vld1u32.c 2010-08-20 13:27:11 +0000
5723@@ -15,5 +15,5 @@
5724 out_uint32x2_t = vld1_u32 (0);
5725 }
5726
5727-/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5728+/* { dg-final { scan-assembler "vld1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5729 /* { dg-final { cleanup-saved-temps } } */
5730
5731=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1u64.c'
5732--- old/gcc/testsuite/gcc.target/arm/neon/vld1u64.c 2010-07-29 15:38:15 +0000
5733+++ new/gcc/testsuite/gcc.target/arm/neon/vld1u64.c 2010-08-20 13:27:11 +0000
5734@@ -15,5 +15,5 @@
5735 out_uint64x1_t = vld1_u64 (0);
5736 }
5737
5738-/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5739+/* { dg-final { scan-assembler "vld1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5740 /* { dg-final { cleanup-saved-temps } } */
5741
5742=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld1u8.c'
5743--- old/gcc/testsuite/gcc.target/arm/neon/vld1u8.c 2010-07-29 15:38:15 +0000
5744+++ new/gcc/testsuite/gcc.target/arm/neon/vld1u8.c 2010-08-20 13:27:11 +0000
5745@@ -15,5 +15,5 @@
5746 out_uint8x8_t = vld1_u8 (0);
5747 }
5748
5749-/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5750+/* { dg-final { scan-assembler "vld1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5751 /* { dg-final { cleanup-saved-temps } } */
5752
5753=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c'
5754--- old/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c 2010-07-29 15:38:15 +0000
5755+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c 2010-08-20 13:27:11 +0000
5756@@ -16,5 +16,5 @@
5757 out_float32x4x2_t = vld2q_lane_f32 (0, arg1_float32x4x2_t, 1);
5758 }
5759
5760-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5761+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5762 /* { dg-final { cleanup-saved-temps } } */
5763
5764=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c'
5765--- old/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c 2010-07-29 15:38:15 +0000
5766+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c 2010-08-20 13:27:11 +0000
5767@@ -16,5 +16,5 @@
5768 out_poly16x8x2_t = vld2q_lane_p16 (0, arg1_poly16x8x2_t, 1);
5769 }
5770
5771-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5772+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5773 /* { dg-final { cleanup-saved-temps } } */
5774
5775=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c'
5776--- old/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c 2010-07-29 15:38:15 +0000
5777+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c 2010-08-20 13:27:11 +0000
5778@@ -16,5 +16,5 @@
5779 out_int16x8x2_t = vld2q_lane_s16 (0, arg1_int16x8x2_t, 1);
5780 }
5781
5782-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5783+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5784 /* { dg-final { cleanup-saved-temps } } */
5785
5786=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c'
5787--- old/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c 2010-07-29 15:38:15 +0000
5788+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c 2010-08-20 13:27:11 +0000
5789@@ -16,5 +16,5 @@
5790 out_int32x4x2_t = vld2q_lane_s32 (0, arg1_int32x4x2_t, 1);
5791 }
5792
5793-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5794+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5795 /* { dg-final { cleanup-saved-temps } } */
5796
5797=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c'
5798--- old/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c 2010-07-29 15:38:15 +0000
5799+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c 2010-08-20 13:27:11 +0000
5800@@ -16,5 +16,5 @@
5801 out_uint16x8x2_t = vld2q_lane_u16 (0, arg1_uint16x8x2_t, 1);
5802 }
5803
5804-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5805+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5806 /* { dg-final { cleanup-saved-temps } } */
5807
5808=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c'
5809--- old/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c 2010-07-29 15:38:15 +0000
5810+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c 2010-08-20 13:27:11 +0000
5811@@ -16,5 +16,5 @@
5812 out_uint32x4x2_t = vld2q_lane_u32 (0, arg1_uint32x4x2_t, 1);
5813 }
5814
5815-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5816+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5817 /* { dg-final { cleanup-saved-temps } } */
5818
5819=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c'
5820--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c 2010-07-29 15:38:15 +0000
5821+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c 2010-08-20 13:27:11 +0000
5822@@ -15,6 +15,6 @@
5823 out_float32x4x2_t = vld2q_f32 (0);
5824 }
5825
5826-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5827-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5828+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5829+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5830 /* { dg-final { cleanup-saved-temps } } */
5831
5832=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c'
5833--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c 2010-07-29 15:38:15 +0000
5834+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c 2010-08-20 13:27:11 +0000
5835@@ -15,6 +15,6 @@
5836 out_poly16x8x2_t = vld2q_p16 (0);
5837 }
5838
5839-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5840-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5841+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5842+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5843 /* { dg-final { cleanup-saved-temps } } */
5844
5845=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c'
5846--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c 2010-07-29 15:38:15 +0000
5847+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c 2010-08-20 13:27:11 +0000
5848@@ -15,6 +15,6 @@
5849 out_poly8x16x2_t = vld2q_p8 (0);
5850 }
5851
5852-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5853-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5854+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5855+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5856 /* { dg-final { cleanup-saved-temps } } */
5857
5858=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c'
5859--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c 2010-07-29 15:38:15 +0000
5860+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c 2010-08-20 13:27:11 +0000
5861@@ -15,6 +15,6 @@
5862 out_int16x8x2_t = vld2q_s16 (0);
5863 }
5864
5865-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5866-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5867+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5868+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5869 /* { dg-final { cleanup-saved-temps } } */
5870
5871=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c'
5872--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c 2010-07-29 15:38:15 +0000
5873+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c 2010-08-20 13:27:11 +0000
5874@@ -15,6 +15,6 @@
5875 out_int32x4x2_t = vld2q_s32 (0);
5876 }
5877
5878-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5879-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5880+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5881+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5882 /* { dg-final { cleanup-saved-temps } } */
5883
5884=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c'
5885--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c 2010-07-29 15:38:15 +0000
5886+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c 2010-08-20 13:27:11 +0000
5887@@ -15,6 +15,6 @@
5888 out_int8x16x2_t = vld2q_s8 (0);
5889 }
5890
5891-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5892-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5893+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5894+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5895 /* { dg-final { cleanup-saved-temps } } */
5896
5897=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c'
5898--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c 2010-07-29 15:38:15 +0000
5899+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c 2010-08-20 13:27:11 +0000
5900@@ -15,6 +15,6 @@
5901 out_uint16x8x2_t = vld2q_u16 (0);
5902 }
5903
5904-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5905-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5906+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5907+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5908 /* { dg-final { cleanup-saved-temps } } */
5909
5910=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c'
5911--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c 2010-07-29 15:38:15 +0000
5912+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c 2010-08-20 13:27:11 +0000
5913@@ -15,6 +15,6 @@
5914 out_uint32x4x2_t = vld2q_u32 (0);
5915 }
5916
5917-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5918-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5919+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5920+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5921 /* { dg-final { cleanup-saved-temps } } */
5922
5923=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c'
5924--- old/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c 2010-07-29 15:38:15 +0000
5925+++ new/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c 2010-08-20 13:27:11 +0000
5926@@ -15,6 +15,6 @@
5927 out_uint8x16x2_t = vld2q_u8 (0);
5928 }
5929
5930-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5931-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5932+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5933+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5934 /* { dg-final { cleanup-saved-temps } } */
5935
5936=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c'
5937--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c 2010-07-29 15:38:15 +0000
5938+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c 2010-08-20 13:27:11 +0000
5939@@ -15,5 +15,5 @@
5940 out_float32x2x2_t = vld2_dup_f32 (0);
5941 }
5942
5943-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5944+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5945 /* { dg-final { cleanup-saved-temps } } */
5946
5947=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c'
5948--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c 2010-07-29 15:38:15 +0000
5949+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c 2010-08-20 13:27:11 +0000
5950@@ -15,5 +15,5 @@
5951 out_poly16x4x2_t = vld2_dup_p16 (0);
5952 }
5953
5954-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5955+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5956 /* { dg-final { cleanup-saved-temps } } */
5957
5958=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c'
5959--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c 2010-07-29 15:38:15 +0000
5960+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c 2010-08-20 13:27:11 +0000
5961@@ -15,5 +15,5 @@
5962 out_poly8x8x2_t = vld2_dup_p8 (0);
5963 }
5964
5965-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5966+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5967 /* { dg-final { cleanup-saved-temps } } */
5968
5969=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c'
5970--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c 2010-07-29 15:38:15 +0000
5971+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c 2010-08-20 13:27:11 +0000
5972@@ -15,5 +15,5 @@
5973 out_int16x4x2_t = vld2_dup_s16 (0);
5974 }
5975
5976-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5977+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5978 /* { dg-final { cleanup-saved-temps } } */
5979
5980=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c'
5981--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c 2010-07-29 15:38:15 +0000
5982+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c 2010-08-20 13:27:11 +0000
5983@@ -15,5 +15,5 @@
5984 out_int32x2x2_t = vld2_dup_s32 (0);
5985 }
5986
5987-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5988+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
5989 /* { dg-final { cleanup-saved-temps } } */
5990
5991=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c'
5992--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c 2010-07-29 15:38:15 +0000
5993+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c 2010-08-20 13:27:11 +0000
5994@@ -15,5 +15,5 @@
5995 out_int64x1x2_t = vld2_dup_s64 (0);
5996 }
5997
5998-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
5999+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6000 /* { dg-final { cleanup-saved-temps } } */
6001
6002=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c'
6003--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c 2010-07-29 15:38:15 +0000
6004+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c 2010-08-20 13:27:11 +0000
6005@@ -15,5 +15,5 @@
6006 out_int8x8x2_t = vld2_dup_s8 (0);
6007 }
6008
6009-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6010+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6011 /* { dg-final { cleanup-saved-temps } } */
6012
6013=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c'
6014--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c 2010-07-29 15:38:15 +0000
6015+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c 2010-08-20 13:27:11 +0000
6016@@ -15,5 +15,5 @@
6017 out_uint16x4x2_t = vld2_dup_u16 (0);
6018 }
6019
6020-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6021+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6022 /* { dg-final { cleanup-saved-temps } } */
6023
6024=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c'
6025--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c 2010-07-29 15:38:15 +0000
6026+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c 2010-08-20 13:27:11 +0000
6027@@ -15,5 +15,5 @@
6028 out_uint32x2x2_t = vld2_dup_u32 (0);
6029 }
6030
6031-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6032+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6033 /* { dg-final { cleanup-saved-temps } } */
6034
6035=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c'
6036--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c 2010-07-29 15:38:15 +0000
6037+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c 2010-08-20 13:27:11 +0000
6038@@ -15,5 +15,5 @@
6039 out_uint64x1x2_t = vld2_dup_u64 (0);
6040 }
6041
6042-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6043+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6044 /* { dg-final { cleanup-saved-temps } } */
6045
6046=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c'
6047--- old/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c 2010-07-29 15:38:15 +0000
6048+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c 2010-08-20 13:27:11 +0000
6049@@ -15,5 +15,5 @@
6050 out_uint8x8x2_t = vld2_dup_u8 (0);
6051 }
6052
6053-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6054+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6055 /* { dg-final { cleanup-saved-temps } } */
6056
6057=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c'
6058--- old/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c 2010-07-29 15:38:15 +0000
6059+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c 2010-08-20 13:27:11 +0000
6060@@ -16,5 +16,5 @@
6061 out_float32x2x2_t = vld2_lane_f32 (0, arg1_float32x2x2_t, 1);
6062 }
6063
6064-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6065+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6066 /* { dg-final { cleanup-saved-temps } } */
6067
6068=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c'
6069--- old/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c 2010-07-29 15:38:15 +0000
6070+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c 2010-08-20 13:27:11 +0000
6071@@ -16,5 +16,5 @@
6072 out_poly16x4x2_t = vld2_lane_p16 (0, arg1_poly16x4x2_t, 1);
6073 }
6074
6075-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6076+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6077 /* { dg-final { cleanup-saved-temps } } */
6078
6079=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c'
6080--- old/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c 2010-07-29 15:38:15 +0000
6081+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c 2010-08-20 13:27:11 +0000
6082@@ -16,5 +16,5 @@
6083 out_poly8x8x2_t = vld2_lane_p8 (0, arg1_poly8x8x2_t, 1);
6084 }
6085
6086-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6087+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6088 /* { dg-final { cleanup-saved-temps } } */
6089
6090=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c'
6091--- old/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c 2010-07-29 15:38:15 +0000
6092+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c 2010-08-20 13:27:11 +0000
6093@@ -16,5 +16,5 @@
6094 out_int16x4x2_t = vld2_lane_s16 (0, arg1_int16x4x2_t, 1);
6095 }
6096
6097-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6098+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6099 /* { dg-final { cleanup-saved-temps } } */
6100
6101=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c'
6102--- old/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c 2010-07-29 15:38:15 +0000
6103+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c 2010-08-20 13:27:11 +0000
6104@@ -16,5 +16,5 @@
6105 out_int32x2x2_t = vld2_lane_s32 (0, arg1_int32x2x2_t, 1);
6106 }
6107
6108-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6109+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6110 /* { dg-final { cleanup-saved-temps } } */
6111
6112=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c'
6113--- old/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c 2010-07-29 15:38:15 +0000
6114+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c 2010-08-20 13:27:11 +0000
6115@@ -16,5 +16,5 @@
6116 out_int8x8x2_t = vld2_lane_s8 (0, arg1_int8x8x2_t, 1);
6117 }
6118
6119-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6120+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6121 /* { dg-final { cleanup-saved-temps } } */
6122
6123=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c'
6124--- old/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c 2010-07-29 15:38:15 +0000
6125+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c 2010-08-20 13:27:11 +0000
6126@@ -16,5 +16,5 @@
6127 out_uint16x4x2_t = vld2_lane_u16 (0, arg1_uint16x4x2_t, 1);
6128 }
6129
6130-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6131+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6132 /* { dg-final { cleanup-saved-temps } } */
6133
6134=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c'
6135--- old/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c 2010-07-29 15:38:15 +0000
6136+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c 2010-08-20 13:27:11 +0000
6137@@ -16,5 +16,5 @@
6138 out_uint32x2x2_t = vld2_lane_u32 (0, arg1_uint32x2x2_t, 1);
6139 }
6140
6141-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6142+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6143 /* { dg-final { cleanup-saved-temps } } */
6144
6145=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c'
6146--- old/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c 2010-07-29 15:38:15 +0000
6147+++ new/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c 2010-08-20 13:27:11 +0000
6148@@ -16,5 +16,5 @@
6149 out_uint8x8x2_t = vld2_lane_u8 (0, arg1_uint8x8x2_t, 1);
6150 }
6151
6152-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6153+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6154 /* { dg-final { cleanup-saved-temps } } */
6155
6156=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2f32.c'
6157--- old/gcc/testsuite/gcc.target/arm/neon/vld2f32.c 2010-07-29 15:38:15 +0000
6158+++ new/gcc/testsuite/gcc.target/arm/neon/vld2f32.c 2010-08-20 13:27:11 +0000
6159@@ -15,5 +15,5 @@
6160 out_float32x2x2_t = vld2_f32 (0);
6161 }
6162
6163-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6164+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6165 /* { dg-final { cleanup-saved-temps } } */
6166
6167=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2p16.c'
6168--- old/gcc/testsuite/gcc.target/arm/neon/vld2p16.c 2010-07-29 15:38:15 +0000
6169+++ new/gcc/testsuite/gcc.target/arm/neon/vld2p16.c 2010-08-20 13:27:11 +0000
6170@@ -15,5 +15,5 @@
6171 out_poly16x4x2_t = vld2_p16 (0);
6172 }
6173
6174-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6175+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6176 /* { dg-final { cleanup-saved-temps } } */
6177
6178=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2p8.c'
6179--- old/gcc/testsuite/gcc.target/arm/neon/vld2p8.c 2010-07-29 15:38:15 +0000
6180+++ new/gcc/testsuite/gcc.target/arm/neon/vld2p8.c 2010-08-20 13:27:11 +0000
6181@@ -15,5 +15,5 @@
6182 out_poly8x8x2_t = vld2_p8 (0);
6183 }
6184
6185-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6186+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6187 /* { dg-final { cleanup-saved-temps } } */
6188
6189=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2s16.c'
6190--- old/gcc/testsuite/gcc.target/arm/neon/vld2s16.c 2010-07-29 15:38:15 +0000
6191+++ new/gcc/testsuite/gcc.target/arm/neon/vld2s16.c 2010-08-20 13:27:11 +0000
6192@@ -15,5 +15,5 @@
6193 out_int16x4x2_t = vld2_s16 (0);
6194 }
6195
6196-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6197+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6198 /* { dg-final { cleanup-saved-temps } } */
6199
6200=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2s32.c'
6201--- old/gcc/testsuite/gcc.target/arm/neon/vld2s32.c 2010-07-29 15:38:15 +0000
6202+++ new/gcc/testsuite/gcc.target/arm/neon/vld2s32.c 2010-08-20 13:27:11 +0000
6203@@ -15,5 +15,5 @@
6204 out_int32x2x2_t = vld2_s32 (0);
6205 }
6206
6207-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6208+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6209 /* { dg-final { cleanup-saved-temps } } */
6210
6211=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2s64.c'
6212--- old/gcc/testsuite/gcc.target/arm/neon/vld2s64.c 2010-07-29 15:38:15 +0000
6213+++ new/gcc/testsuite/gcc.target/arm/neon/vld2s64.c 2010-08-20 13:27:11 +0000
6214@@ -15,5 +15,5 @@
6215 out_int64x1x2_t = vld2_s64 (0);
6216 }
6217
6218-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6219+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6220 /* { dg-final { cleanup-saved-temps } } */
6221
6222=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2s8.c'
6223--- old/gcc/testsuite/gcc.target/arm/neon/vld2s8.c 2010-07-29 15:38:15 +0000
6224+++ new/gcc/testsuite/gcc.target/arm/neon/vld2s8.c 2010-08-20 13:27:11 +0000
6225@@ -15,5 +15,5 @@
6226 out_int8x8x2_t = vld2_s8 (0);
6227 }
6228
6229-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6230+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6231 /* { dg-final { cleanup-saved-temps } } */
6232
6233=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2u16.c'
6234--- old/gcc/testsuite/gcc.target/arm/neon/vld2u16.c 2010-07-29 15:38:15 +0000
6235+++ new/gcc/testsuite/gcc.target/arm/neon/vld2u16.c 2010-08-20 13:27:11 +0000
6236@@ -15,5 +15,5 @@
6237 out_uint16x4x2_t = vld2_u16 (0);
6238 }
6239
6240-/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6241+/* { dg-final { scan-assembler "vld2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6242 /* { dg-final { cleanup-saved-temps } } */
6243
6244=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2u32.c'
6245--- old/gcc/testsuite/gcc.target/arm/neon/vld2u32.c 2010-07-29 15:38:15 +0000
6246+++ new/gcc/testsuite/gcc.target/arm/neon/vld2u32.c 2010-08-20 13:27:11 +0000
6247@@ -15,5 +15,5 @@
6248 out_uint32x2x2_t = vld2_u32 (0);
6249 }
6250
6251-/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6252+/* { dg-final { scan-assembler "vld2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6253 /* { dg-final { cleanup-saved-temps } } */
6254
6255=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2u64.c'
6256--- old/gcc/testsuite/gcc.target/arm/neon/vld2u64.c 2010-07-29 15:38:15 +0000
6257+++ new/gcc/testsuite/gcc.target/arm/neon/vld2u64.c 2010-08-20 13:27:11 +0000
6258@@ -15,5 +15,5 @@
6259 out_uint64x1x2_t = vld2_u64 (0);
6260 }
6261
6262-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6263+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6264 /* { dg-final { cleanup-saved-temps } } */
6265
6266=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld2u8.c'
6267--- old/gcc/testsuite/gcc.target/arm/neon/vld2u8.c 2010-07-29 15:38:15 +0000
6268+++ new/gcc/testsuite/gcc.target/arm/neon/vld2u8.c 2010-08-20 13:27:11 +0000
6269@@ -15,5 +15,5 @@
6270 out_uint8x8x2_t = vld2_u8 (0);
6271 }
6272
6273-/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6274+/* { dg-final { scan-assembler "vld2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6275 /* { dg-final { cleanup-saved-temps } } */
6276
6277=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c'
6278--- old/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c 2010-07-29 15:38:15 +0000
6279+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c 2010-08-20 13:27:11 +0000
6280@@ -16,5 +16,5 @@
6281 out_float32x4x3_t = vld3q_lane_f32 (0, arg1_float32x4x3_t, 1);
6282 }
6283
6284-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6285+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6286 /* { dg-final { cleanup-saved-temps } } */
6287
6288=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c'
6289--- old/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c 2010-07-29 15:38:15 +0000
6290+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c 2010-08-20 13:27:11 +0000
6291@@ -16,5 +16,5 @@
6292 out_poly16x8x3_t = vld3q_lane_p16 (0, arg1_poly16x8x3_t, 1);
6293 }
6294
6295-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6296+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6297 /* { dg-final { cleanup-saved-temps } } */
6298
6299=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c'
6300--- old/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c 2010-07-29 15:38:15 +0000
6301+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c 2010-08-20 13:27:11 +0000
6302@@ -16,5 +16,5 @@
6303 out_int16x8x3_t = vld3q_lane_s16 (0, arg1_int16x8x3_t, 1);
6304 }
6305
6306-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6307+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6308 /* { dg-final { cleanup-saved-temps } } */
6309
6310=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c'
6311--- old/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c 2010-07-29 15:38:15 +0000
6312+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c 2010-08-20 13:27:11 +0000
6313@@ -16,5 +16,5 @@
6314 out_int32x4x3_t = vld3q_lane_s32 (0, arg1_int32x4x3_t, 1);
6315 }
6316
6317-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6318+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6319 /* { dg-final { cleanup-saved-temps } } */
6320
6321=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c'
6322--- old/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c 2010-07-29 15:38:15 +0000
6323+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c 2010-08-20 13:27:11 +0000
6324@@ -16,5 +16,5 @@
6325 out_uint16x8x3_t = vld3q_lane_u16 (0, arg1_uint16x8x3_t, 1);
6326 }
6327
6328-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6329+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6330 /* { dg-final { cleanup-saved-temps } } */
6331
6332=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c'
6333--- old/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c 2010-07-29 15:38:15 +0000
6334+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c 2010-08-20 13:27:11 +0000
6335@@ -16,5 +16,5 @@
6336 out_uint32x4x3_t = vld3q_lane_u32 (0, arg1_uint32x4x3_t, 1);
6337 }
6338
6339-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6340+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6341 /* { dg-final { cleanup-saved-temps } } */
6342
6343=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c'
6344--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c 2010-07-29 15:38:15 +0000
6345+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c 2010-08-20 13:27:11 +0000
6346@@ -15,6 +15,6 @@
6347 out_float32x4x3_t = vld3q_f32 (0);
6348 }
6349
6350-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6351-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6352+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6353+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6354 /* { dg-final { cleanup-saved-temps } } */
6355
6356=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c'
6357--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c 2010-07-29 15:38:15 +0000
6358+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c 2010-08-20 13:27:11 +0000
6359@@ -15,6 +15,6 @@
6360 out_poly16x8x3_t = vld3q_p16 (0);
6361 }
6362
6363-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6364-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6365+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6366+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6367 /* { dg-final { cleanup-saved-temps } } */
6368
6369=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c'
6370--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c 2010-07-29 15:38:15 +0000
6371+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c 2010-08-20 13:27:11 +0000
6372@@ -15,6 +15,6 @@
6373 out_poly8x16x3_t = vld3q_p8 (0);
6374 }
6375
6376-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6377-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6378+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6379+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6380 /* { dg-final { cleanup-saved-temps } } */
6381
6382=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c'
6383--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c 2010-07-29 15:38:15 +0000
6384+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c 2010-08-20 13:27:11 +0000
6385@@ -15,6 +15,6 @@
6386 out_int16x8x3_t = vld3q_s16 (0);
6387 }
6388
6389-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6390-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6391+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6392+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6393 /* { dg-final { cleanup-saved-temps } } */
6394
6395=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c'
6396--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c 2010-07-29 15:38:15 +0000
6397+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c 2010-08-20 13:27:11 +0000
6398@@ -15,6 +15,6 @@
6399 out_int32x4x3_t = vld3q_s32 (0);
6400 }
6401
6402-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6403-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6404+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6405+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6406 /* { dg-final { cleanup-saved-temps } } */
6407
6408=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c'
6409--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c 2010-07-29 15:38:15 +0000
6410+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c 2010-08-20 13:27:11 +0000
6411@@ -15,6 +15,6 @@
6412 out_int8x16x3_t = vld3q_s8 (0);
6413 }
6414
6415-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6416-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6417+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6418+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6419 /* { dg-final { cleanup-saved-temps } } */
6420
6421=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c'
6422--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c 2010-07-29 15:38:15 +0000
6423+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c 2010-08-20 13:27:11 +0000
6424@@ -15,6 +15,6 @@
6425 out_uint16x8x3_t = vld3q_u16 (0);
6426 }
6427
6428-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6429-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6430+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6431+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6432 /* { dg-final { cleanup-saved-temps } } */
6433
6434=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c'
6435--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c 2010-07-29 15:38:15 +0000
6436+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c 2010-08-20 13:27:11 +0000
6437@@ -15,6 +15,6 @@
6438 out_uint32x4x3_t = vld3q_u32 (0);
6439 }
6440
6441-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6442-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6443+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6444+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6445 /* { dg-final { cleanup-saved-temps } } */
6446
6447=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c'
6448--- old/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c 2010-07-29 15:38:15 +0000
6449+++ new/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c 2010-08-20 13:27:11 +0000
6450@@ -15,6 +15,6 @@
6451 out_uint8x16x3_t = vld3q_u8 (0);
6452 }
6453
6454-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6455-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6456+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6457+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6458 /* { dg-final { cleanup-saved-temps } } */
6459
6460=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c'
6461--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c 2010-07-29 15:38:15 +0000
6462+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c 2010-08-20 13:27:11 +0000
6463@@ -15,5 +15,5 @@
6464 out_float32x2x3_t = vld3_dup_f32 (0);
6465 }
6466
6467-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6468+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6469 /* { dg-final { cleanup-saved-temps } } */
6470
6471=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c'
6472--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c 2010-07-29 15:38:15 +0000
6473+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c 2010-08-20 13:27:11 +0000
6474@@ -15,5 +15,5 @@
6475 out_poly16x4x3_t = vld3_dup_p16 (0);
6476 }
6477
6478-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6479+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6480 /* { dg-final { cleanup-saved-temps } } */
6481
6482=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c'
6483--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c 2010-07-29 15:38:15 +0000
6484+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c 2010-08-20 13:27:11 +0000
6485@@ -15,5 +15,5 @@
6486 out_poly8x8x3_t = vld3_dup_p8 (0);
6487 }
6488
6489-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6490+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6491 /* { dg-final { cleanup-saved-temps } } */
6492
6493=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c'
6494--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c 2010-07-29 15:38:15 +0000
6495+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c 2010-08-20 13:27:11 +0000
6496@@ -15,5 +15,5 @@
6497 out_int16x4x3_t = vld3_dup_s16 (0);
6498 }
6499
6500-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6501+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6502 /* { dg-final { cleanup-saved-temps } } */
6503
6504=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c'
6505--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c 2010-07-29 15:38:15 +0000
6506+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c 2010-08-20 13:27:11 +0000
6507@@ -15,5 +15,5 @@
6508 out_int32x2x3_t = vld3_dup_s32 (0);
6509 }
6510
6511-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6512+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6513 /* { dg-final { cleanup-saved-temps } } */
6514
6515=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c'
6516--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c 2010-07-29 15:38:15 +0000
6517+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c 2010-08-20 13:27:11 +0000
6518@@ -15,5 +15,5 @@
6519 out_int64x1x3_t = vld3_dup_s64 (0);
6520 }
6521
6522-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6523+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6524 /* { dg-final { cleanup-saved-temps } } */
6525
6526=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c'
6527--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c 2010-07-29 15:38:15 +0000
6528+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c 2010-08-20 13:27:11 +0000
6529@@ -15,5 +15,5 @@
6530 out_int8x8x3_t = vld3_dup_s8 (0);
6531 }
6532
6533-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6534+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6535 /* { dg-final { cleanup-saved-temps } } */
6536
6537=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c'
6538--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c 2010-07-29 15:38:15 +0000
6539+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c 2010-08-20 13:27:11 +0000
6540@@ -15,5 +15,5 @@
6541 out_uint16x4x3_t = vld3_dup_u16 (0);
6542 }
6543
6544-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6545+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6546 /* { dg-final { cleanup-saved-temps } } */
6547
6548=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c'
6549--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c 2010-07-29 15:38:15 +0000
6550+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c 2010-08-20 13:27:11 +0000
6551@@ -15,5 +15,5 @@
6552 out_uint32x2x3_t = vld3_dup_u32 (0);
6553 }
6554
6555-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6556+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6557 /* { dg-final { cleanup-saved-temps } } */
6558
6559=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c'
6560--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c 2010-07-29 15:38:15 +0000
6561+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c 2010-08-20 13:27:11 +0000
6562@@ -15,5 +15,5 @@
6563 out_uint64x1x3_t = vld3_dup_u64 (0);
6564 }
6565
6566-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6567+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6568 /* { dg-final { cleanup-saved-temps } } */
6569
6570=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c'
6571--- old/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c 2010-07-29 15:38:15 +0000
6572+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c 2010-08-20 13:27:11 +0000
6573@@ -15,5 +15,5 @@
6574 out_uint8x8x3_t = vld3_dup_u8 (0);
6575 }
6576
6577-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6578+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6579 /* { dg-final { cleanup-saved-temps } } */
6580
6581=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c'
6582--- old/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c 2010-07-29 15:38:15 +0000
6583+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c 2010-08-20 13:27:11 +0000
6584@@ -16,5 +16,5 @@
6585 out_float32x2x3_t = vld3_lane_f32 (0, arg1_float32x2x3_t, 1);
6586 }
6587
6588-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6589+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6590 /* { dg-final { cleanup-saved-temps } } */
6591
6592=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c'
6593--- old/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c 2010-07-29 15:38:15 +0000
6594+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c 2010-08-20 13:27:11 +0000
6595@@ -16,5 +16,5 @@
6596 out_poly16x4x3_t = vld3_lane_p16 (0, arg1_poly16x4x3_t, 1);
6597 }
6598
6599-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6600+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6601 /* { dg-final { cleanup-saved-temps } } */
6602
6603=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c'
6604--- old/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c 2010-07-29 15:38:15 +0000
6605+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c 2010-08-20 13:27:11 +0000
6606@@ -16,5 +16,5 @@
6607 out_poly8x8x3_t = vld3_lane_p8 (0, arg1_poly8x8x3_t, 1);
6608 }
6609
6610-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6611+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6612 /* { dg-final { cleanup-saved-temps } } */
6613
6614=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c'
6615--- old/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c 2010-07-29 15:38:15 +0000
6616+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c 2010-08-20 13:27:11 +0000
6617@@ -16,5 +16,5 @@
6618 out_int16x4x3_t = vld3_lane_s16 (0, arg1_int16x4x3_t, 1);
6619 }
6620
6621-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6622+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6623 /* { dg-final { cleanup-saved-temps } } */
6624
6625=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c'
6626--- old/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c 2010-07-29 15:38:15 +0000
6627+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c 2010-08-20 13:27:11 +0000
6628@@ -16,5 +16,5 @@
6629 out_int32x2x3_t = vld3_lane_s32 (0, arg1_int32x2x3_t, 1);
6630 }
6631
6632-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6633+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6634 /* { dg-final { cleanup-saved-temps } } */
6635
6636=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c'
6637--- old/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c 2010-07-29 15:38:15 +0000
6638+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c 2010-08-20 13:27:11 +0000
6639@@ -16,5 +16,5 @@
6640 out_int8x8x3_t = vld3_lane_s8 (0, arg1_int8x8x3_t, 1);
6641 }
6642
6643-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6644+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6645 /* { dg-final { cleanup-saved-temps } } */
6646
6647=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c'
6648--- old/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c 2010-07-29 15:38:15 +0000
6649+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c 2010-08-20 13:27:11 +0000
6650@@ -16,5 +16,5 @@
6651 out_uint16x4x3_t = vld3_lane_u16 (0, arg1_uint16x4x3_t, 1);
6652 }
6653
6654-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6655+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6656 /* { dg-final { cleanup-saved-temps } } */
6657
6658=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c'
6659--- old/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c 2010-07-29 15:38:15 +0000
6660+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c 2010-08-20 13:27:11 +0000
6661@@ -16,5 +16,5 @@
6662 out_uint32x2x3_t = vld3_lane_u32 (0, arg1_uint32x2x3_t, 1);
6663 }
6664
6665-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6666+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6667 /* { dg-final { cleanup-saved-temps } } */
6668
6669=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c'
6670--- old/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c 2010-07-29 15:38:15 +0000
6671+++ new/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c 2010-08-20 13:27:11 +0000
6672@@ -16,5 +16,5 @@
6673 out_uint8x8x3_t = vld3_lane_u8 (0, arg1_uint8x8x3_t, 1);
6674 }
6675
6676-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6677+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6678 /* { dg-final { cleanup-saved-temps } } */
6679
6680=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3f32.c'
6681--- old/gcc/testsuite/gcc.target/arm/neon/vld3f32.c 2010-07-29 15:38:15 +0000
6682+++ new/gcc/testsuite/gcc.target/arm/neon/vld3f32.c 2010-08-20 13:27:11 +0000
6683@@ -15,5 +15,5 @@
6684 out_float32x2x3_t = vld3_f32 (0);
6685 }
6686
6687-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6688+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6689 /* { dg-final { cleanup-saved-temps } } */
6690
6691=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3p16.c'
6692--- old/gcc/testsuite/gcc.target/arm/neon/vld3p16.c 2010-07-29 15:38:15 +0000
6693+++ new/gcc/testsuite/gcc.target/arm/neon/vld3p16.c 2010-08-20 13:27:11 +0000
6694@@ -15,5 +15,5 @@
6695 out_poly16x4x3_t = vld3_p16 (0);
6696 }
6697
6698-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6699+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6700 /* { dg-final { cleanup-saved-temps } } */
6701
6702=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3p8.c'
6703--- old/gcc/testsuite/gcc.target/arm/neon/vld3p8.c 2010-07-29 15:38:15 +0000
6704+++ new/gcc/testsuite/gcc.target/arm/neon/vld3p8.c 2010-08-20 13:27:11 +0000
6705@@ -15,5 +15,5 @@
6706 out_poly8x8x3_t = vld3_p8 (0);
6707 }
6708
6709-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6710+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6711 /* { dg-final { cleanup-saved-temps } } */
6712
6713=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3s16.c'
6714--- old/gcc/testsuite/gcc.target/arm/neon/vld3s16.c 2010-07-29 15:38:15 +0000
6715+++ new/gcc/testsuite/gcc.target/arm/neon/vld3s16.c 2010-08-20 13:27:11 +0000
6716@@ -15,5 +15,5 @@
6717 out_int16x4x3_t = vld3_s16 (0);
6718 }
6719
6720-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6721+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6722 /* { dg-final { cleanup-saved-temps } } */
6723
6724=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3s32.c'
6725--- old/gcc/testsuite/gcc.target/arm/neon/vld3s32.c 2010-07-29 15:38:15 +0000
6726+++ new/gcc/testsuite/gcc.target/arm/neon/vld3s32.c 2010-08-20 13:27:11 +0000
6727@@ -15,5 +15,5 @@
6728 out_int32x2x3_t = vld3_s32 (0);
6729 }
6730
6731-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6732+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6733 /* { dg-final { cleanup-saved-temps } } */
6734
6735=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3s64.c'
6736--- old/gcc/testsuite/gcc.target/arm/neon/vld3s64.c 2010-07-29 15:38:15 +0000
6737+++ new/gcc/testsuite/gcc.target/arm/neon/vld3s64.c 2010-08-20 13:27:11 +0000
6738@@ -15,5 +15,5 @@
6739 out_int64x1x3_t = vld3_s64 (0);
6740 }
6741
6742-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6743+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6744 /* { dg-final { cleanup-saved-temps } } */
6745
6746=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3s8.c'
6747--- old/gcc/testsuite/gcc.target/arm/neon/vld3s8.c 2010-07-29 15:38:15 +0000
6748+++ new/gcc/testsuite/gcc.target/arm/neon/vld3s8.c 2010-08-20 13:27:11 +0000
6749@@ -15,5 +15,5 @@
6750 out_int8x8x3_t = vld3_s8 (0);
6751 }
6752
6753-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6754+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6755 /* { dg-final { cleanup-saved-temps } } */
6756
6757=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3u16.c'
6758--- old/gcc/testsuite/gcc.target/arm/neon/vld3u16.c 2010-07-29 15:38:15 +0000
6759+++ new/gcc/testsuite/gcc.target/arm/neon/vld3u16.c 2010-08-20 13:27:11 +0000
6760@@ -15,5 +15,5 @@
6761 out_uint16x4x3_t = vld3_u16 (0);
6762 }
6763
6764-/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6765+/* { dg-final { scan-assembler "vld3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6766 /* { dg-final { cleanup-saved-temps } } */
6767
6768=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3u32.c'
6769--- old/gcc/testsuite/gcc.target/arm/neon/vld3u32.c 2010-07-29 15:38:15 +0000
6770+++ new/gcc/testsuite/gcc.target/arm/neon/vld3u32.c 2010-08-20 13:27:11 +0000
6771@@ -15,5 +15,5 @@
6772 out_uint32x2x3_t = vld3_u32 (0);
6773 }
6774
6775-/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6776+/* { dg-final { scan-assembler "vld3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6777 /* { dg-final { cleanup-saved-temps } } */
6778
6779=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3u64.c'
6780--- old/gcc/testsuite/gcc.target/arm/neon/vld3u64.c 2010-07-29 15:38:15 +0000
6781+++ new/gcc/testsuite/gcc.target/arm/neon/vld3u64.c 2010-08-20 13:27:11 +0000
6782@@ -15,5 +15,5 @@
6783 out_uint64x1x3_t = vld3_u64 (0);
6784 }
6785
6786-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6787+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6788 /* { dg-final { cleanup-saved-temps } } */
6789
6790=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld3u8.c'
6791--- old/gcc/testsuite/gcc.target/arm/neon/vld3u8.c 2010-07-29 15:38:15 +0000
6792+++ new/gcc/testsuite/gcc.target/arm/neon/vld3u8.c 2010-08-20 13:27:11 +0000
6793@@ -15,5 +15,5 @@
6794 out_uint8x8x3_t = vld3_u8 (0);
6795 }
6796
6797-/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6798+/* { dg-final { scan-assembler "vld3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6799 /* { dg-final { cleanup-saved-temps } } */
6800
6801=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c'
6802--- old/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c 2010-07-29 15:38:15 +0000
6803+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c 2010-08-20 13:27:11 +0000
6804@@ -16,5 +16,5 @@
6805 out_float32x4x4_t = vld4q_lane_f32 (0, arg1_float32x4x4_t, 1);
6806 }
6807
6808-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6809+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6810 /* { dg-final { cleanup-saved-temps } } */
6811
6812=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c'
6813--- old/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c 2010-07-29 15:38:15 +0000
6814+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c 2010-08-20 13:27:11 +0000
6815@@ -16,5 +16,5 @@
6816 out_poly16x8x4_t = vld4q_lane_p16 (0, arg1_poly16x8x4_t, 1);
6817 }
6818
6819-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6820+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6821 /* { dg-final { cleanup-saved-temps } } */
6822
6823=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c'
6824--- old/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c 2010-07-29 15:38:15 +0000
6825+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c 2010-08-20 13:27:11 +0000
6826@@ -16,5 +16,5 @@
6827 out_int16x8x4_t = vld4q_lane_s16 (0, arg1_int16x8x4_t, 1);
6828 }
6829
6830-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6831+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6832 /* { dg-final { cleanup-saved-temps } } */
6833
6834=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c'
6835--- old/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c 2010-07-29 15:38:15 +0000
6836+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c 2010-08-20 13:27:11 +0000
6837@@ -16,5 +16,5 @@
6838 out_int32x4x4_t = vld4q_lane_s32 (0, arg1_int32x4x4_t, 1);
6839 }
6840
6841-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6842+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6843 /* { dg-final { cleanup-saved-temps } } */
6844
6845=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c'
6846--- old/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c 2010-07-29 15:38:15 +0000
6847+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c 2010-08-20 13:27:11 +0000
6848@@ -16,5 +16,5 @@
6849 out_uint16x8x4_t = vld4q_lane_u16 (0, arg1_uint16x8x4_t, 1);
6850 }
6851
6852-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6853+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6854 /* { dg-final { cleanup-saved-temps } } */
6855
6856=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c'
6857--- old/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c 2010-07-29 15:38:15 +0000
6858+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c 2010-08-20 13:27:11 +0000
6859@@ -16,5 +16,5 @@
6860 out_uint32x4x4_t = vld4q_lane_u32 (0, arg1_uint32x4x4_t, 1);
6861 }
6862
6863-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6864+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6865 /* { dg-final { cleanup-saved-temps } } */
6866
6867=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c'
6868--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c 2010-07-29 15:38:15 +0000
6869+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c 2010-08-20 13:27:11 +0000
6870@@ -15,6 +15,6 @@
6871 out_float32x4x4_t = vld4q_f32 (0);
6872 }
6873
6874-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6875-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6876+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6877+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6878 /* { dg-final { cleanup-saved-temps } } */
6879
6880=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c'
6881--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c 2010-07-29 15:38:15 +0000
6882+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c 2010-08-20 13:27:11 +0000
6883@@ -15,6 +15,6 @@
6884 out_poly16x8x4_t = vld4q_p16 (0);
6885 }
6886
6887-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6888-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6889+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6890+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6891 /* { dg-final { cleanup-saved-temps } } */
6892
6893=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c'
6894--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c 2010-07-29 15:38:15 +0000
6895+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c 2010-08-20 13:27:11 +0000
6896@@ -15,6 +15,6 @@
6897 out_poly8x16x4_t = vld4q_p8 (0);
6898 }
6899
6900-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6901-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6902+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6903+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6904 /* { dg-final { cleanup-saved-temps } } */
6905
6906=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c'
6907--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c 2010-07-29 15:38:15 +0000
6908+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c 2010-08-20 13:27:11 +0000
6909@@ -15,6 +15,6 @@
6910 out_int16x8x4_t = vld4q_s16 (0);
6911 }
6912
6913-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6914-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6915+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6916+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6917 /* { dg-final { cleanup-saved-temps } } */
6918
6919=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c'
6920--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c 2010-07-29 15:38:15 +0000
6921+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c 2010-08-20 13:27:11 +0000
6922@@ -15,6 +15,6 @@
6923 out_int32x4x4_t = vld4q_s32 (0);
6924 }
6925
6926-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6927-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6928+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6929+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6930 /* { dg-final { cleanup-saved-temps } } */
6931
6932=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c'
6933--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c 2010-07-29 15:38:15 +0000
6934+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c 2010-08-20 13:27:11 +0000
6935@@ -15,6 +15,6 @@
6936 out_int8x16x4_t = vld4q_s8 (0);
6937 }
6938
6939-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6940-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6941+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6942+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6943 /* { dg-final { cleanup-saved-temps } } */
6944
6945=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c'
6946--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c 2010-07-29 15:38:15 +0000
6947+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c 2010-08-20 13:27:11 +0000
6948@@ -15,6 +15,6 @@
6949 out_uint16x8x4_t = vld4q_u16 (0);
6950 }
6951
6952-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6953-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6954+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6955+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6956 /* { dg-final { cleanup-saved-temps } } */
6957
6958=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c'
6959--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c 2010-07-29 15:38:15 +0000
6960+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c 2010-08-20 13:27:11 +0000
6961@@ -15,6 +15,6 @@
6962 out_uint32x4x4_t = vld4q_u32 (0);
6963 }
6964
6965-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6966-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6967+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6968+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6969 /* { dg-final { cleanup-saved-temps } } */
6970
6971=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c'
6972--- old/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c 2010-07-29 15:38:15 +0000
6973+++ new/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c 2010-08-20 13:27:11 +0000
6974@@ -15,6 +15,6 @@
6975 out_uint8x16x4_t = vld4q_u8 (0);
6976 }
6977
6978-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6979-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6980+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6981+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6982 /* { dg-final { cleanup-saved-temps } } */
6983
6984=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c'
6985--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c 2010-07-29 15:38:15 +0000
6986+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c 2010-08-20 13:27:11 +0000
6987@@ -15,5 +15,5 @@
6988 out_float32x2x4_t = vld4_dup_f32 (0);
6989 }
6990
6991-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
6992+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
6993 /* { dg-final { cleanup-saved-temps } } */
6994
6995=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c'
6996--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c 2010-07-29 15:38:15 +0000
6997+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c 2010-08-20 13:27:11 +0000
6998@@ -15,5 +15,5 @@
6999 out_poly16x4x4_t = vld4_dup_p16 (0);
7000 }
7001
7002-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7003+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7004 /* { dg-final { cleanup-saved-temps } } */
7005
7006=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c'
7007--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c 2010-07-29 15:38:15 +0000
7008+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c 2010-08-20 13:27:11 +0000
7009@@ -15,5 +15,5 @@
7010 out_poly8x8x4_t = vld4_dup_p8 (0);
7011 }
7012
7013-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7014+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7015 /* { dg-final { cleanup-saved-temps } } */
7016
7017=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c'
7018--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c 2010-07-29 15:38:15 +0000
7019+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c 2010-08-20 13:27:11 +0000
7020@@ -15,5 +15,5 @@
7021 out_int16x4x4_t = vld4_dup_s16 (0);
7022 }
7023
7024-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7025+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7026 /* { dg-final { cleanup-saved-temps } } */
7027
7028=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c'
7029--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c 2010-07-29 15:38:15 +0000
7030+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c 2010-08-20 13:27:11 +0000
7031@@ -15,5 +15,5 @@
7032 out_int32x2x4_t = vld4_dup_s32 (0);
7033 }
7034
7035-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7036+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7037 /* { dg-final { cleanup-saved-temps } } */
7038
7039=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c'
7040--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c 2010-07-29 15:38:15 +0000
7041+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c 2010-08-20 13:27:11 +0000
7042@@ -15,5 +15,5 @@
7043 out_int64x1x4_t = vld4_dup_s64 (0);
7044 }
7045
7046-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7047+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7048 /* { dg-final { cleanup-saved-temps } } */
7049
7050=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c'
7051--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c 2010-07-29 15:38:15 +0000
7052+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c 2010-08-20 13:27:11 +0000
7053@@ -15,5 +15,5 @@
7054 out_int8x8x4_t = vld4_dup_s8 (0);
7055 }
7056
7057-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7058+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7059 /* { dg-final { cleanup-saved-temps } } */
7060
7061=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c'
7062--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c 2010-07-29 15:38:15 +0000
7063+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c 2010-08-20 13:27:11 +0000
7064@@ -15,5 +15,5 @@
7065 out_uint16x4x4_t = vld4_dup_u16 (0);
7066 }
7067
7068-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7069+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7070 /* { dg-final { cleanup-saved-temps } } */
7071
7072=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c'
7073--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c 2010-07-29 15:38:15 +0000
7074+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c 2010-08-20 13:27:11 +0000
7075@@ -15,5 +15,5 @@
7076 out_uint32x2x4_t = vld4_dup_u32 (0);
7077 }
7078
7079-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7080+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7081 /* { dg-final { cleanup-saved-temps } } */
7082
7083=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c'
7084--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c 2010-07-29 15:38:15 +0000
7085+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c 2010-08-20 13:27:11 +0000
7086@@ -15,5 +15,5 @@
7087 out_uint64x1x4_t = vld4_dup_u64 (0);
7088 }
7089
7090-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7091+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7092 /* { dg-final { cleanup-saved-temps } } */
7093
7094=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c'
7095--- old/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c 2010-07-29 15:38:15 +0000
7096+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c 2010-08-20 13:27:11 +0000
7097@@ -15,5 +15,5 @@
7098 out_uint8x8x4_t = vld4_dup_u8 (0);
7099 }
7100
7101-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7102+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7103 /* { dg-final { cleanup-saved-temps } } */
7104
7105=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c'
7106--- old/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c 2010-07-29 15:38:15 +0000
7107+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c 2010-08-20 13:27:11 +0000
7108@@ -16,5 +16,5 @@
7109 out_float32x2x4_t = vld4_lane_f32 (0, arg1_float32x2x4_t, 1);
7110 }
7111
7112-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7113+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7114 /* { dg-final { cleanup-saved-temps } } */
7115
7116=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c'
7117--- old/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c 2010-07-29 15:38:15 +0000
7118+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c 2010-08-20 13:27:11 +0000
7119@@ -16,5 +16,5 @@
7120 out_poly16x4x4_t = vld4_lane_p16 (0, arg1_poly16x4x4_t, 1);
7121 }
7122
7123-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7124+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7125 /* { dg-final { cleanup-saved-temps } } */
7126
7127=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c'
7128--- old/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c 2010-07-29 15:38:15 +0000
7129+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c 2010-08-20 13:27:11 +0000
7130@@ -16,5 +16,5 @@
7131 out_poly8x8x4_t = vld4_lane_p8 (0, arg1_poly8x8x4_t, 1);
7132 }
7133
7134-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7135+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7136 /* { dg-final { cleanup-saved-temps } } */
7137
7138=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c'
7139--- old/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c 2010-07-29 15:38:15 +0000
7140+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c 2010-08-20 13:27:11 +0000
7141@@ -16,5 +16,5 @@
7142 out_int16x4x4_t = vld4_lane_s16 (0, arg1_int16x4x4_t, 1);
7143 }
7144
7145-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7146+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7147 /* { dg-final { cleanup-saved-temps } } */
7148
7149=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c'
7150--- old/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c 2010-07-29 15:38:15 +0000
7151+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c 2010-08-20 13:27:11 +0000
7152@@ -16,5 +16,5 @@
7153 out_int32x2x4_t = vld4_lane_s32 (0, arg1_int32x2x4_t, 1);
7154 }
7155
7156-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7157+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7158 /* { dg-final { cleanup-saved-temps } } */
7159
7160=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c'
7161--- old/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c 2010-07-29 15:38:15 +0000
7162+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c 2010-08-20 13:27:11 +0000
7163@@ -16,5 +16,5 @@
7164 out_int8x8x4_t = vld4_lane_s8 (0, arg1_int8x8x4_t, 1);
7165 }
7166
7167-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7168+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7169 /* { dg-final { cleanup-saved-temps } } */
7170
7171=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c'
7172--- old/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c 2010-07-29 15:38:15 +0000
7173+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c 2010-08-20 13:27:11 +0000
7174@@ -16,5 +16,5 @@
7175 out_uint16x4x4_t = vld4_lane_u16 (0, arg1_uint16x4x4_t, 1);
7176 }
7177
7178-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7179+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7180 /* { dg-final { cleanup-saved-temps } } */
7181
7182=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c'
7183--- old/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c 2010-07-29 15:38:15 +0000
7184+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c 2010-08-20 13:27:11 +0000
7185@@ -16,5 +16,5 @@
7186 out_uint32x2x4_t = vld4_lane_u32 (0, arg1_uint32x2x4_t, 1);
7187 }
7188
7189-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7190+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7191 /* { dg-final { cleanup-saved-temps } } */
7192
7193=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c'
7194--- old/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c 2010-07-29 15:38:15 +0000
7195+++ new/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c 2010-08-20 13:27:11 +0000
7196@@ -16,5 +16,5 @@
7197 out_uint8x8x4_t = vld4_lane_u8 (0, arg1_uint8x8x4_t, 1);
7198 }
7199
7200-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7201+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7202 /* { dg-final { cleanup-saved-temps } } */
7203
7204=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4f32.c'
7205--- old/gcc/testsuite/gcc.target/arm/neon/vld4f32.c 2010-07-29 15:38:15 +0000
7206+++ new/gcc/testsuite/gcc.target/arm/neon/vld4f32.c 2010-08-20 13:27:11 +0000
7207@@ -15,5 +15,5 @@
7208 out_float32x2x4_t = vld4_f32 (0);
7209 }
7210
7211-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7212+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7213 /* { dg-final { cleanup-saved-temps } } */
7214
7215=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4p16.c'
7216--- old/gcc/testsuite/gcc.target/arm/neon/vld4p16.c 2010-07-29 15:38:15 +0000
7217+++ new/gcc/testsuite/gcc.target/arm/neon/vld4p16.c 2010-08-20 13:27:11 +0000
7218@@ -15,5 +15,5 @@
7219 out_poly16x4x4_t = vld4_p16 (0);
7220 }
7221
7222-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7223+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7224 /* { dg-final { cleanup-saved-temps } } */
7225
7226=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4p8.c'
7227--- old/gcc/testsuite/gcc.target/arm/neon/vld4p8.c 2010-07-29 15:38:15 +0000
7228+++ new/gcc/testsuite/gcc.target/arm/neon/vld4p8.c 2010-08-20 13:27:11 +0000
7229@@ -15,5 +15,5 @@
7230 out_poly8x8x4_t = vld4_p8 (0);
7231 }
7232
7233-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7234+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7235 /* { dg-final { cleanup-saved-temps } } */
7236
7237=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4s16.c'
7238--- old/gcc/testsuite/gcc.target/arm/neon/vld4s16.c 2010-07-29 15:38:15 +0000
7239+++ new/gcc/testsuite/gcc.target/arm/neon/vld4s16.c 2010-08-20 13:27:11 +0000
7240@@ -15,5 +15,5 @@
7241 out_int16x4x4_t = vld4_s16 (0);
7242 }
7243
7244-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7245+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7246 /* { dg-final { cleanup-saved-temps } } */
7247
7248=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4s32.c'
7249--- old/gcc/testsuite/gcc.target/arm/neon/vld4s32.c 2010-07-29 15:38:15 +0000
7250+++ new/gcc/testsuite/gcc.target/arm/neon/vld4s32.c 2010-08-20 13:27:11 +0000
7251@@ -15,5 +15,5 @@
7252 out_int32x2x4_t = vld4_s32 (0);
7253 }
7254
7255-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7256+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7257 /* { dg-final { cleanup-saved-temps } } */
7258
7259=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4s64.c'
7260--- old/gcc/testsuite/gcc.target/arm/neon/vld4s64.c 2010-07-29 15:38:15 +0000
7261+++ new/gcc/testsuite/gcc.target/arm/neon/vld4s64.c 2010-08-20 13:27:11 +0000
7262@@ -15,5 +15,5 @@
7263 out_int64x1x4_t = vld4_s64 (0);
7264 }
7265
7266-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7267+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7268 /* { dg-final { cleanup-saved-temps } } */
7269
7270=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4s8.c'
7271--- old/gcc/testsuite/gcc.target/arm/neon/vld4s8.c 2010-07-29 15:38:15 +0000
7272+++ new/gcc/testsuite/gcc.target/arm/neon/vld4s8.c 2010-08-20 13:27:11 +0000
7273@@ -15,5 +15,5 @@
7274 out_int8x8x4_t = vld4_s8 (0);
7275 }
7276
7277-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7278+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7279 /* { dg-final { cleanup-saved-temps } } */
7280
7281=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4u16.c'
7282--- old/gcc/testsuite/gcc.target/arm/neon/vld4u16.c 2010-07-29 15:38:15 +0000
7283+++ new/gcc/testsuite/gcc.target/arm/neon/vld4u16.c 2010-08-20 13:27:11 +0000
7284@@ -15,5 +15,5 @@
7285 out_uint16x4x4_t = vld4_u16 (0);
7286 }
7287
7288-/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7289+/* { dg-final { scan-assembler "vld4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7290 /* { dg-final { cleanup-saved-temps } } */
7291
7292=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4u32.c'
7293--- old/gcc/testsuite/gcc.target/arm/neon/vld4u32.c 2010-07-29 15:38:15 +0000
7294+++ new/gcc/testsuite/gcc.target/arm/neon/vld4u32.c 2010-08-20 13:27:11 +0000
7295@@ -15,5 +15,5 @@
7296 out_uint32x2x4_t = vld4_u32 (0);
7297 }
7298
7299-/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7300+/* { dg-final { scan-assembler "vld4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7301 /* { dg-final { cleanup-saved-temps } } */
7302
7303=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4u64.c'
7304--- old/gcc/testsuite/gcc.target/arm/neon/vld4u64.c 2010-07-29 15:38:15 +0000
7305+++ new/gcc/testsuite/gcc.target/arm/neon/vld4u64.c 2010-08-20 13:27:11 +0000
7306@@ -15,5 +15,5 @@
7307 out_uint64x1x4_t = vld4_u64 (0);
7308 }
7309
7310-/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7311+/* { dg-final { scan-assembler "vld1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7312 /* { dg-final { cleanup-saved-temps } } */
7313
7314=== modified file 'gcc/testsuite/gcc.target/arm/neon/vld4u8.c'
7315--- old/gcc/testsuite/gcc.target/arm/neon/vld4u8.c 2010-07-29 15:38:15 +0000
7316+++ new/gcc/testsuite/gcc.target/arm/neon/vld4u8.c 2010-08-20 13:27:11 +0000
7317@@ -15,5 +15,5 @@
7318 out_uint8x8x4_t = vld4_u8 (0);
7319 }
7320
7321-/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7322+/* { dg-final { scan-assembler "vld4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7323 /* { dg-final { cleanup-saved-temps } } */
7324
7325=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c'
7326--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c 2010-07-29 15:38:15 +0000
7327+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c 2010-08-20 13:27:11 +0000
7328@@ -17,5 +17,5 @@
7329 out_float32x4_t = vmaxq_f32 (arg0_float32x4_t, arg1_float32x4_t);
7330 }
7331
7332-/* { dg-final { scan-assembler "vmax\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7333+/* { dg-final { scan-assembler "vmax\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7334 /* { dg-final { cleanup-saved-temps } } */
7335
7336=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c'
7337--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c 2010-07-29 15:38:15 +0000
7338+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c 2010-08-20 13:27:11 +0000
7339@@ -17,5 +17,5 @@
7340 out_int16x8_t = vmaxq_s16 (arg0_int16x8_t, arg1_int16x8_t);
7341 }
7342
7343-/* { dg-final { scan-assembler "vmax\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7344+/* { dg-final { scan-assembler "vmax\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7345 /* { dg-final { cleanup-saved-temps } } */
7346
7347=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c'
7348--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c 2010-07-29 15:38:15 +0000
7349+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c 2010-08-20 13:27:11 +0000
7350@@ -17,5 +17,5 @@
7351 out_int32x4_t = vmaxq_s32 (arg0_int32x4_t, arg1_int32x4_t);
7352 }
7353
7354-/* { dg-final { scan-assembler "vmax\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7355+/* { dg-final { scan-assembler "vmax\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7356 /* { dg-final { cleanup-saved-temps } } */
7357
7358=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c'
7359--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c 2010-07-29 15:38:15 +0000
7360+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c 2010-08-20 13:27:11 +0000
7361@@ -17,5 +17,5 @@
7362 out_int8x16_t = vmaxq_s8 (arg0_int8x16_t, arg1_int8x16_t);
7363 }
7364
7365-/* { dg-final { scan-assembler "vmax\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7366+/* { dg-final { scan-assembler "vmax\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7367 /* { dg-final { cleanup-saved-temps } } */
7368
7369=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c'
7370--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c 2010-07-29 15:38:15 +0000
7371+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c 2010-08-20 13:27:11 +0000
7372@@ -17,5 +17,5 @@
7373 out_uint16x8_t = vmaxq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
7374 }
7375
7376-/* { dg-final { scan-assembler "vmax\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7377+/* { dg-final { scan-assembler "vmax\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7378 /* { dg-final { cleanup-saved-temps } } */
7379
7380=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c'
7381--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c 2010-07-29 15:38:15 +0000
7382+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c 2010-08-20 13:27:11 +0000
7383@@ -17,5 +17,5 @@
7384 out_uint32x4_t = vmaxq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
7385 }
7386
7387-/* { dg-final { scan-assembler "vmax\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7388+/* { dg-final { scan-assembler "vmax\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7389 /* { dg-final { cleanup-saved-temps } } */
7390
7391=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c'
7392--- old/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c 2010-07-29 15:38:15 +0000
7393+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c 2010-08-20 13:27:11 +0000
7394@@ -17,5 +17,5 @@
7395 out_uint8x16_t = vmaxq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
7396 }
7397
7398-/* { dg-final { scan-assembler "vmax\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7399+/* { dg-final { scan-assembler "vmax\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7400 /* { dg-final { cleanup-saved-temps } } */
7401
7402=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxf32.c'
7403--- old/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c 2010-07-29 15:38:15 +0000
7404+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c 2010-08-20 13:27:11 +0000
7405@@ -17,5 +17,5 @@
7406 out_float32x2_t = vmax_f32 (arg0_float32x2_t, arg1_float32x2_t);
7407 }
7408
7409-/* { dg-final { scan-assembler "vmax\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7410+/* { dg-final { scan-assembler "vmax\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7411 /* { dg-final { cleanup-saved-temps } } */
7412
7413=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxs16.c'
7414--- old/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c 2010-07-29 15:38:15 +0000
7415+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c 2010-08-20 13:27:11 +0000
7416@@ -17,5 +17,5 @@
7417 out_int16x4_t = vmax_s16 (arg0_int16x4_t, arg1_int16x4_t);
7418 }
7419
7420-/* { dg-final { scan-assembler "vmax\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7421+/* { dg-final { scan-assembler "vmax\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7422 /* { dg-final { cleanup-saved-temps } } */
7423
7424=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxs32.c'
7425--- old/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c 2010-07-29 15:38:15 +0000
7426+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c 2010-08-20 13:27:11 +0000
7427@@ -17,5 +17,5 @@
7428 out_int32x2_t = vmax_s32 (arg0_int32x2_t, arg1_int32x2_t);
7429 }
7430
7431-/* { dg-final { scan-assembler "vmax\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7432+/* { dg-final { scan-assembler "vmax\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7433 /* { dg-final { cleanup-saved-temps } } */
7434
7435=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxs8.c'
7436--- old/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c 2010-07-29 15:38:15 +0000
7437+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c 2010-08-20 13:27:11 +0000
7438@@ -17,5 +17,5 @@
7439 out_int8x8_t = vmax_s8 (arg0_int8x8_t, arg1_int8x8_t);
7440 }
7441
7442-/* { dg-final { scan-assembler "vmax\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7443+/* { dg-final { scan-assembler "vmax\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7444 /* { dg-final { cleanup-saved-temps } } */
7445
7446=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxu16.c'
7447--- old/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c 2010-07-29 15:38:15 +0000
7448+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c 2010-08-20 13:27:11 +0000
7449@@ -17,5 +17,5 @@
7450 out_uint16x4_t = vmax_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
7451 }
7452
7453-/* { dg-final { scan-assembler "vmax\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7454+/* { dg-final { scan-assembler "vmax\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7455 /* { dg-final { cleanup-saved-temps } } */
7456
7457=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxu32.c'
7458--- old/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c 2010-07-29 15:38:15 +0000
7459+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c 2010-08-20 13:27:11 +0000
7460@@ -17,5 +17,5 @@
7461 out_uint32x2_t = vmax_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
7462 }
7463
7464-/* { dg-final { scan-assembler "vmax\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7465+/* { dg-final { scan-assembler "vmax\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7466 /* { dg-final { cleanup-saved-temps } } */
7467
7468=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmaxu8.c'
7469--- old/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c 2010-07-29 15:38:15 +0000
7470+++ new/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c 2010-08-20 13:27:11 +0000
7471@@ -17,5 +17,5 @@
7472 out_uint8x8_t = vmax_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
7473 }
7474
7475-/* { dg-final { scan-assembler "vmax\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7476+/* { dg-final { scan-assembler "vmax\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7477 /* { dg-final { cleanup-saved-temps } } */
7478
7479=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQf32.c'
7480--- old/gcc/testsuite/gcc.target/arm/neon/vminQf32.c 2010-07-29 15:38:15 +0000
7481+++ new/gcc/testsuite/gcc.target/arm/neon/vminQf32.c 2010-08-20 13:27:11 +0000
7482@@ -17,5 +17,5 @@
7483 out_float32x4_t = vminq_f32 (arg0_float32x4_t, arg1_float32x4_t);
7484 }
7485
7486-/* { dg-final { scan-assembler "vmin\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7487+/* { dg-final { scan-assembler "vmin\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7488 /* { dg-final { cleanup-saved-temps } } */
7489
7490=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQs16.c'
7491--- old/gcc/testsuite/gcc.target/arm/neon/vminQs16.c 2010-07-29 15:38:15 +0000
7492+++ new/gcc/testsuite/gcc.target/arm/neon/vminQs16.c 2010-08-20 13:27:11 +0000
7493@@ -17,5 +17,5 @@
7494 out_int16x8_t = vminq_s16 (arg0_int16x8_t, arg1_int16x8_t);
7495 }
7496
7497-/* { dg-final { scan-assembler "vmin\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7498+/* { dg-final { scan-assembler "vmin\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7499 /* { dg-final { cleanup-saved-temps } } */
7500
7501=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQs32.c'
7502--- old/gcc/testsuite/gcc.target/arm/neon/vminQs32.c 2010-07-29 15:38:15 +0000
7503+++ new/gcc/testsuite/gcc.target/arm/neon/vminQs32.c 2010-08-20 13:27:11 +0000
7504@@ -17,5 +17,5 @@
7505 out_int32x4_t = vminq_s32 (arg0_int32x4_t, arg1_int32x4_t);
7506 }
7507
7508-/* { dg-final { scan-assembler "vmin\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7509+/* { dg-final { scan-assembler "vmin\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7510 /* { dg-final { cleanup-saved-temps } } */
7511
7512=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQs8.c'
7513--- old/gcc/testsuite/gcc.target/arm/neon/vminQs8.c 2010-07-29 15:38:15 +0000
7514+++ new/gcc/testsuite/gcc.target/arm/neon/vminQs8.c 2010-08-20 13:27:11 +0000
7515@@ -17,5 +17,5 @@
7516 out_int8x16_t = vminq_s8 (arg0_int8x16_t, arg1_int8x16_t);
7517 }
7518
7519-/* { dg-final { scan-assembler "vmin\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7520+/* { dg-final { scan-assembler "vmin\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7521 /* { dg-final { cleanup-saved-temps } } */
7522
7523=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQu16.c'
7524--- old/gcc/testsuite/gcc.target/arm/neon/vminQu16.c 2010-07-29 15:38:15 +0000
7525+++ new/gcc/testsuite/gcc.target/arm/neon/vminQu16.c 2010-08-20 13:27:11 +0000
7526@@ -17,5 +17,5 @@
7527 out_uint16x8_t = vminq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
7528 }
7529
7530-/* { dg-final { scan-assembler "vmin\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7531+/* { dg-final { scan-assembler "vmin\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7532 /* { dg-final { cleanup-saved-temps } } */
7533
7534=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQu32.c'
7535--- old/gcc/testsuite/gcc.target/arm/neon/vminQu32.c 2010-07-29 15:38:15 +0000
7536+++ new/gcc/testsuite/gcc.target/arm/neon/vminQu32.c 2010-08-20 13:27:11 +0000
7537@@ -17,5 +17,5 @@
7538 out_uint32x4_t = vminq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
7539 }
7540
7541-/* { dg-final { scan-assembler "vmin\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7542+/* { dg-final { scan-assembler "vmin\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7543 /* { dg-final { cleanup-saved-temps } } */
7544
7545=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminQu8.c'
7546--- old/gcc/testsuite/gcc.target/arm/neon/vminQu8.c 2010-07-29 15:38:15 +0000
7547+++ new/gcc/testsuite/gcc.target/arm/neon/vminQu8.c 2010-08-20 13:27:11 +0000
7548@@ -17,5 +17,5 @@
7549 out_uint8x16_t = vminq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
7550 }
7551
7552-/* { dg-final { scan-assembler "vmin\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7553+/* { dg-final { scan-assembler "vmin\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7554 /* { dg-final { cleanup-saved-temps } } */
7555
7556=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminf32.c'
7557--- old/gcc/testsuite/gcc.target/arm/neon/vminf32.c 2010-07-29 15:38:15 +0000
7558+++ new/gcc/testsuite/gcc.target/arm/neon/vminf32.c 2010-08-20 13:27:11 +0000
7559@@ -17,5 +17,5 @@
7560 out_float32x2_t = vmin_f32 (arg0_float32x2_t, arg1_float32x2_t);
7561 }
7562
7563-/* { dg-final { scan-assembler "vmin\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7564+/* { dg-final { scan-assembler "vmin\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7565 /* { dg-final { cleanup-saved-temps } } */
7566
7567=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmins16.c'
7568--- old/gcc/testsuite/gcc.target/arm/neon/vmins16.c 2010-07-29 15:38:15 +0000
7569+++ new/gcc/testsuite/gcc.target/arm/neon/vmins16.c 2010-08-20 13:27:11 +0000
7570@@ -17,5 +17,5 @@
7571 out_int16x4_t = vmin_s16 (arg0_int16x4_t, arg1_int16x4_t);
7572 }
7573
7574-/* { dg-final { scan-assembler "vmin\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7575+/* { dg-final { scan-assembler "vmin\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7576 /* { dg-final { cleanup-saved-temps } } */
7577
7578=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmins32.c'
7579--- old/gcc/testsuite/gcc.target/arm/neon/vmins32.c 2010-07-29 15:38:15 +0000
7580+++ new/gcc/testsuite/gcc.target/arm/neon/vmins32.c 2010-08-20 13:27:11 +0000
7581@@ -17,5 +17,5 @@
7582 out_int32x2_t = vmin_s32 (arg0_int32x2_t, arg1_int32x2_t);
7583 }
7584
7585-/* { dg-final { scan-assembler "vmin\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7586+/* { dg-final { scan-assembler "vmin\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7587 /* { dg-final { cleanup-saved-temps } } */
7588
7589=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmins8.c'
7590--- old/gcc/testsuite/gcc.target/arm/neon/vmins8.c 2010-07-29 15:38:15 +0000
7591+++ new/gcc/testsuite/gcc.target/arm/neon/vmins8.c 2010-08-20 13:27:11 +0000
7592@@ -17,5 +17,5 @@
7593 out_int8x8_t = vmin_s8 (arg0_int8x8_t, arg1_int8x8_t);
7594 }
7595
7596-/* { dg-final { scan-assembler "vmin\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7597+/* { dg-final { scan-assembler "vmin\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7598 /* { dg-final { cleanup-saved-temps } } */
7599
7600=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminu16.c'
7601--- old/gcc/testsuite/gcc.target/arm/neon/vminu16.c 2010-07-29 15:38:15 +0000
7602+++ new/gcc/testsuite/gcc.target/arm/neon/vminu16.c 2010-08-20 13:27:11 +0000
7603@@ -17,5 +17,5 @@
7604 out_uint16x4_t = vmin_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
7605 }
7606
7607-/* { dg-final { scan-assembler "vmin\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7608+/* { dg-final { scan-assembler "vmin\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7609 /* { dg-final { cleanup-saved-temps } } */
7610
7611=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminu32.c'
7612--- old/gcc/testsuite/gcc.target/arm/neon/vminu32.c 2010-07-29 15:38:15 +0000
7613+++ new/gcc/testsuite/gcc.target/arm/neon/vminu32.c 2010-08-20 13:27:11 +0000
7614@@ -17,5 +17,5 @@
7615 out_uint32x2_t = vmin_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
7616 }
7617
7618-/* { dg-final { scan-assembler "vmin\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7619+/* { dg-final { scan-assembler "vmin\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7620 /* { dg-final { cleanup-saved-temps } } */
7621
7622=== modified file 'gcc/testsuite/gcc.target/arm/neon/vminu8.c'
7623--- old/gcc/testsuite/gcc.target/arm/neon/vminu8.c 2010-07-29 15:38:15 +0000
7624+++ new/gcc/testsuite/gcc.target/arm/neon/vminu8.c 2010-08-20 13:27:11 +0000
7625@@ -17,5 +17,5 @@
7626 out_uint8x8_t = vmin_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
7627 }
7628
7629-/* { dg-final { scan-assembler "vmin\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7630+/* { dg-final { scan-assembler "vmin\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7631 /* { dg-final { cleanup-saved-temps } } */
7632
7633=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c'
7634--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c 2010-07-29 15:38:15 +0000
7635+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c 2010-08-20 13:27:11 +0000
7636@@ -18,5 +18,5 @@
7637 out_float32x4_t = vmlaq_lane_f32 (arg0_float32x4_t, arg1_float32x4_t, arg2_float32x2_t, 1);
7638 }
7639
7640-/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7641+/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7642 /* { dg-final { cleanup-saved-temps } } */
7643
7644=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c'
7645--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c 2010-07-29 15:38:15 +0000
7646+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c 2010-08-20 13:27:11 +0000
7647@@ -18,5 +18,5 @@
7648 out_int16x8_t = vmlaq_lane_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16x4_t, 1);
7649 }
7650
7651-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7652+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7653 /* { dg-final { cleanup-saved-temps } } */
7654
7655=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c'
7656--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c 2010-07-29 15:38:15 +0000
7657+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c 2010-08-20 13:27:11 +0000
7658@@ -18,5 +18,5 @@
7659 out_int32x4_t = vmlaq_lane_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32x2_t, 1);
7660 }
7661
7662-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7663+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7664 /* { dg-final { cleanup-saved-temps } } */
7665
7666=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c'
7667--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c 2010-07-29 15:38:15 +0000
7668+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c 2010-08-20 13:27:11 +0000
7669@@ -18,5 +18,5 @@
7670 out_uint16x8_t = vmlaq_lane_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16x4_t, 1);
7671 }
7672
7673-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7674+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7675 /* { dg-final { cleanup-saved-temps } } */
7676
7677=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c'
7678--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c 2010-07-29 15:38:15 +0000
7679+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c 2010-08-20 13:27:11 +0000
7680@@ -18,5 +18,5 @@
7681 out_uint32x4_t = vmlaq_lane_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32x2_t, 1);
7682 }
7683
7684-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7685+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7686 /* { dg-final { cleanup-saved-temps } } */
7687
7688=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c'
7689--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c 2010-07-29 15:38:15 +0000
7690+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c 2010-08-20 13:27:11 +0000
7691@@ -18,5 +18,5 @@
7692 out_float32x4_t = vmlaq_n_f32 (arg0_float32x4_t, arg1_float32x4_t, arg2_float32_t);
7693 }
7694
7695-/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7696+/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7697 /* { dg-final { cleanup-saved-temps } } */
7698
7699=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c'
7700--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c 2010-07-29 15:38:15 +0000
7701+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c 2010-08-20 13:27:11 +0000
7702@@ -18,5 +18,5 @@
7703 out_int16x8_t = vmlaq_n_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16_t);
7704 }
7705
7706-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7707+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7708 /* { dg-final { cleanup-saved-temps } } */
7709
7710=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c'
7711--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c 2010-07-29 15:38:15 +0000
7712+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c 2010-08-20 13:27:11 +0000
7713@@ -18,5 +18,5 @@
7714 out_int32x4_t = vmlaq_n_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32_t);
7715 }
7716
7717-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7718+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7719 /* { dg-final { cleanup-saved-temps } } */
7720
7721=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c'
7722--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c 2010-07-29 15:38:15 +0000
7723+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c 2010-08-20 13:27:11 +0000
7724@@ -18,5 +18,5 @@
7725 out_uint16x8_t = vmlaq_n_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16_t);
7726 }
7727
7728-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7729+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7730 /* { dg-final { cleanup-saved-temps } } */
7731
7732=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c'
7733--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c 2010-07-29 15:38:15 +0000
7734+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c 2010-08-20 13:27:11 +0000
7735@@ -18,5 +18,5 @@
7736 out_uint32x4_t = vmlaq_n_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32_t);
7737 }
7738
7739-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7740+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7741 /* { dg-final { cleanup-saved-temps } } */
7742
7743=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c'
7744--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c 2010-07-29 15:38:15 +0000
7745+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c 2010-08-20 13:27:11 +0000
7746@@ -18,5 +18,5 @@
7747 out_float32x4_t = vmlaq_f32 (arg0_float32x4_t, arg1_float32x4_t, arg2_float32x4_t);
7748 }
7749
7750-/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7751+/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7752 /* { dg-final { cleanup-saved-temps } } */
7753
7754=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c'
7755--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c 2010-07-29 15:38:15 +0000
7756+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c 2010-08-20 13:27:11 +0000
7757@@ -18,5 +18,5 @@
7758 out_int16x8_t = vmlaq_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16x8_t);
7759 }
7760
7761-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7762+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7763 /* { dg-final { cleanup-saved-temps } } */
7764
7765=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c'
7766--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c 2010-07-29 15:38:15 +0000
7767+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c 2010-08-20 13:27:11 +0000
7768@@ -18,5 +18,5 @@
7769 out_int32x4_t = vmlaq_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32x4_t);
7770 }
7771
7772-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7773+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7774 /* { dg-final { cleanup-saved-temps } } */
7775
7776=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c'
7777--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c 2010-07-29 15:38:15 +0000
7778+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c 2010-08-20 13:27:11 +0000
7779@@ -18,5 +18,5 @@
7780 out_int8x16_t = vmlaq_s8 (arg0_int8x16_t, arg1_int8x16_t, arg2_int8x16_t);
7781 }
7782
7783-/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7784+/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7785 /* { dg-final { cleanup-saved-temps } } */
7786
7787=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c'
7788--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c 2010-07-29 15:38:15 +0000
7789+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c 2010-08-20 13:27:11 +0000
7790@@ -18,5 +18,5 @@
7791 out_uint16x8_t = vmlaq_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16x8_t);
7792 }
7793
7794-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7795+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7796 /* { dg-final { cleanup-saved-temps } } */
7797
7798=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c'
7799--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c 2010-07-29 15:38:15 +0000
7800+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c 2010-08-20 13:27:11 +0000
7801@@ -18,5 +18,5 @@
7802 out_uint32x4_t = vmlaq_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32x4_t);
7803 }
7804
7805-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7806+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7807 /* { dg-final { cleanup-saved-temps } } */
7808
7809=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c'
7810--- old/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c 2010-07-29 15:38:15 +0000
7811+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c 2010-08-20 13:27:11 +0000
7812@@ -18,5 +18,5 @@
7813 out_uint8x16_t = vmlaq_u8 (arg0_uint8x16_t, arg1_uint8x16_t, arg2_uint8x16_t);
7814 }
7815
7816-/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7817+/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7818 /* { dg-final { cleanup-saved-temps } } */
7819
7820=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c'
7821--- old/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c 2010-07-29 15:38:15 +0000
7822+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c 2010-08-20 13:27:11 +0000
7823@@ -18,5 +18,5 @@
7824 out_float32x2_t = vmla_lane_f32 (arg0_float32x2_t, arg1_float32x2_t, arg2_float32x2_t, 1);
7825 }
7826
7827-/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7828+/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7829 /* { dg-final { cleanup-saved-temps } } */
7830
7831=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c'
7832--- old/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c 2010-07-29 15:38:15 +0000
7833+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c 2010-08-20 13:27:11 +0000
7834@@ -18,5 +18,5 @@
7835 out_int16x4_t = vmla_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16x4_t, 1);
7836 }
7837
7838-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7839+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7840 /* { dg-final { cleanup-saved-temps } } */
7841
7842=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c'
7843--- old/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c 2010-07-29 15:38:15 +0000
7844+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c 2010-08-20 13:27:11 +0000
7845@@ -18,5 +18,5 @@
7846 out_int32x2_t = vmla_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32x2_t, 1);
7847 }
7848
7849-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7850+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7851 /* { dg-final { cleanup-saved-temps } } */
7852
7853=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c'
7854--- old/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c 2010-07-29 15:38:15 +0000
7855+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c 2010-08-20 13:27:11 +0000
7856@@ -18,5 +18,5 @@
7857 out_uint16x4_t = vmla_lane_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16x4_t, 1);
7858 }
7859
7860-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7861+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7862 /* { dg-final { cleanup-saved-temps } } */
7863
7864=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c'
7865--- old/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c 2010-07-29 15:38:15 +0000
7866+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c 2010-08-20 13:27:11 +0000
7867@@ -18,5 +18,5 @@
7868 out_uint32x2_t = vmla_lane_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32x2_t, 1);
7869 }
7870
7871-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7872+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7873 /* { dg-final { cleanup-saved-temps } } */
7874
7875=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c'
7876--- old/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c 2010-07-29 15:38:15 +0000
7877+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c 2010-08-20 13:27:11 +0000
7878@@ -18,5 +18,5 @@
7879 out_float32x2_t = vmla_n_f32 (arg0_float32x2_t, arg1_float32x2_t, arg2_float32_t);
7880 }
7881
7882-/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7883+/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7884 /* { dg-final { cleanup-saved-temps } } */
7885
7886=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c'
7887--- old/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c 2010-07-29 15:38:15 +0000
7888+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c 2010-08-20 13:27:11 +0000
7889@@ -18,5 +18,5 @@
7890 out_int16x4_t = vmla_n_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16_t);
7891 }
7892
7893-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7894+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7895 /* { dg-final { cleanup-saved-temps } } */
7896
7897=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c'
7898--- old/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c 2010-07-29 15:38:15 +0000
7899+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c 2010-08-20 13:27:11 +0000
7900@@ -18,5 +18,5 @@
7901 out_int32x2_t = vmla_n_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32_t);
7902 }
7903
7904-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7905+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7906 /* { dg-final { cleanup-saved-temps } } */
7907
7908=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c'
7909--- old/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c 2010-07-29 15:38:15 +0000
7910+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c 2010-08-20 13:27:11 +0000
7911@@ -18,5 +18,5 @@
7912 out_uint16x4_t = vmla_n_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16_t);
7913 }
7914
7915-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7916+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7917 /* { dg-final { cleanup-saved-temps } } */
7918
7919=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c'
7920--- old/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c 2010-07-29 15:38:15 +0000
7921+++ new/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c 2010-08-20 13:27:11 +0000
7922@@ -18,5 +18,5 @@
7923 out_uint32x2_t = vmla_n_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32_t);
7924 }
7925
7926-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7927+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7928 /* { dg-final { cleanup-saved-temps } } */
7929
7930=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlaf32.c'
7931--- old/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c 2010-07-29 15:38:15 +0000
7932+++ new/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c 2010-08-20 13:27:11 +0000
7933@@ -18,5 +18,5 @@
7934 out_float32x2_t = vmla_f32 (arg0_float32x2_t, arg1_float32x2_t, arg2_float32x2_t);
7935 }
7936
7937-/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7938+/* { dg-final { scan-assembler "vmla\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
7939 /* { dg-final { cleanup-saved-temps } } */
7940
7941=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c'
7942--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c 2010-07-29 15:38:15 +0000
7943+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c 2010-08-20 13:27:11 +0000
7944@@ -18,5 +18,5 @@
7945 out_int32x4_t = vmlal_lane_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t, 1);
7946 }
7947
7948-/* { dg-final { scan-assembler "vmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7949+/* { dg-final { scan-assembler "vmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7950 /* { dg-final { cleanup-saved-temps } } */
7951
7952=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c'
7953--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c 2010-07-29 15:38:15 +0000
7954+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c 2010-08-20 13:27:11 +0000
7955@@ -18,5 +18,5 @@
7956 out_int64x2_t = vmlal_lane_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t, 1);
7957 }
7958
7959-/* { dg-final { scan-assembler "vmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7960+/* { dg-final { scan-assembler "vmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7961 /* { dg-final { cleanup-saved-temps } } */
7962
7963=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c'
7964--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c 2010-07-29 15:38:15 +0000
7965+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c 2010-08-20 13:27:11 +0000
7966@@ -18,5 +18,5 @@
7967 out_uint32x4_t = vmlal_lane_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16x4_t, 1);
7968 }
7969
7970-/* { dg-final { scan-assembler "vmlal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7971+/* { dg-final { scan-assembler "vmlal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7972 /* { dg-final { cleanup-saved-temps } } */
7973
7974=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c'
7975--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c 2010-07-29 15:38:15 +0000
7976+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c 2010-08-20 13:27:11 +0000
7977@@ -18,5 +18,5 @@
7978 out_uint64x2_t = vmlal_lane_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32x2_t, 1);
7979 }
7980
7981-/* { dg-final { scan-assembler "vmlal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7982+/* { dg-final { scan-assembler "vmlal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7983 /* { dg-final { cleanup-saved-temps } } */
7984
7985=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c'
7986--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c 2010-07-29 15:38:15 +0000
7987+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c 2010-08-20 13:27:11 +0000
7988@@ -18,5 +18,5 @@
7989 out_int32x4_t = vmlal_n_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16_t);
7990 }
7991
7992-/* { dg-final { scan-assembler "vmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
7993+/* { dg-final { scan-assembler "vmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
7994 /* { dg-final { cleanup-saved-temps } } */
7995
7996=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c'
7997--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c 2010-07-29 15:38:15 +0000
7998+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c 2010-08-20 13:27:11 +0000
7999@@ -18,5 +18,5 @@
8000 out_int64x2_t = vmlal_n_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32_t);
8001 }
8002
8003-/* { dg-final { scan-assembler "vmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8004+/* { dg-final { scan-assembler "vmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8005 /* { dg-final { cleanup-saved-temps } } */
8006
8007=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c'
8008--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c 2010-07-29 15:38:15 +0000
8009+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c 2010-08-20 13:27:11 +0000
8010@@ -18,5 +18,5 @@
8011 out_uint32x4_t = vmlal_n_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16_t);
8012 }
8013
8014-/* { dg-final { scan-assembler "vmlal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8015+/* { dg-final { scan-assembler "vmlal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8016 /* { dg-final { cleanup-saved-temps } } */
8017
8018=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c'
8019--- old/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c 2010-07-29 15:38:15 +0000
8020+++ new/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c 2010-08-20 13:27:11 +0000
8021@@ -18,5 +18,5 @@
8022 out_uint64x2_t = vmlal_n_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32_t);
8023 }
8024
8025-/* { dg-final { scan-assembler "vmlal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8026+/* { dg-final { scan-assembler "vmlal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8027 /* { dg-final { cleanup-saved-temps } } */
8028
8029=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlals16.c'
8030--- old/gcc/testsuite/gcc.target/arm/neon/vmlals16.c 2010-07-29 15:38:15 +0000
8031+++ new/gcc/testsuite/gcc.target/arm/neon/vmlals16.c 2010-08-20 13:27:11 +0000
8032@@ -18,5 +18,5 @@
8033 out_int32x4_t = vmlal_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t);
8034 }
8035
8036-/* { dg-final { scan-assembler "vmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8037+/* { dg-final { scan-assembler "vmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8038 /* { dg-final { cleanup-saved-temps } } */
8039
8040=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlals32.c'
8041--- old/gcc/testsuite/gcc.target/arm/neon/vmlals32.c 2010-07-29 15:38:15 +0000
8042+++ new/gcc/testsuite/gcc.target/arm/neon/vmlals32.c 2010-08-20 13:27:11 +0000
8043@@ -18,5 +18,5 @@
8044 out_int64x2_t = vmlal_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t);
8045 }
8046
8047-/* { dg-final { scan-assembler "vmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8048+/* { dg-final { scan-assembler "vmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8049 /* { dg-final { cleanup-saved-temps } } */
8050
8051=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlals8.c'
8052--- old/gcc/testsuite/gcc.target/arm/neon/vmlals8.c 2010-07-29 15:38:15 +0000
8053+++ new/gcc/testsuite/gcc.target/arm/neon/vmlals8.c 2010-08-20 13:27:11 +0000
8054@@ -18,5 +18,5 @@
8055 out_int16x8_t = vmlal_s8 (arg0_int16x8_t, arg1_int8x8_t, arg2_int8x8_t);
8056 }
8057
8058-/* { dg-final { scan-assembler "vmlal\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8059+/* { dg-final { scan-assembler "vmlal\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8060 /* { dg-final { cleanup-saved-temps } } */
8061
8062=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlalu16.c'
8063--- old/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c 2010-07-29 15:38:15 +0000
8064+++ new/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c 2010-08-20 13:27:11 +0000
8065@@ -18,5 +18,5 @@
8066 out_uint32x4_t = vmlal_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
8067 }
8068
8069-/* { dg-final { scan-assembler "vmlal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8070+/* { dg-final { scan-assembler "vmlal\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8071 /* { dg-final { cleanup-saved-temps } } */
8072
8073=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlalu32.c'
8074--- old/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c 2010-07-29 15:38:15 +0000
8075+++ new/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c 2010-08-20 13:27:11 +0000
8076@@ -18,5 +18,5 @@
8077 out_uint64x2_t = vmlal_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
8078 }
8079
8080-/* { dg-final { scan-assembler "vmlal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8081+/* { dg-final { scan-assembler "vmlal\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8082 /* { dg-final { cleanup-saved-temps } } */
8083
8084=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlalu8.c'
8085--- old/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c 2010-07-29 15:38:15 +0000
8086+++ new/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c 2010-08-20 13:27:11 +0000
8087@@ -18,5 +18,5 @@
8088 out_uint16x8_t = vmlal_u8 (arg0_uint16x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
8089 }
8090
8091-/* { dg-final { scan-assembler "vmlal\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8092+/* { dg-final { scan-assembler "vmlal\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8093 /* { dg-final { cleanup-saved-temps } } */
8094
8095=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlas16.c'
8096--- old/gcc/testsuite/gcc.target/arm/neon/vmlas16.c 2010-07-29 15:38:15 +0000
8097+++ new/gcc/testsuite/gcc.target/arm/neon/vmlas16.c 2010-08-20 13:27:11 +0000
8098@@ -18,5 +18,5 @@
8099 out_int16x4_t = vmla_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16x4_t);
8100 }
8101
8102-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8103+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8104 /* { dg-final { cleanup-saved-temps } } */
8105
8106=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlas32.c'
8107--- old/gcc/testsuite/gcc.target/arm/neon/vmlas32.c 2010-07-29 15:38:15 +0000
8108+++ new/gcc/testsuite/gcc.target/arm/neon/vmlas32.c 2010-08-20 13:27:11 +0000
8109@@ -18,5 +18,5 @@
8110 out_int32x2_t = vmla_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32x2_t);
8111 }
8112
8113-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8114+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8115 /* { dg-final { cleanup-saved-temps } } */
8116
8117=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlas8.c'
8118--- old/gcc/testsuite/gcc.target/arm/neon/vmlas8.c 2010-07-29 15:38:15 +0000
8119+++ new/gcc/testsuite/gcc.target/arm/neon/vmlas8.c 2010-08-20 13:27:11 +0000
8120@@ -18,5 +18,5 @@
8121 out_int8x8_t = vmla_s8 (arg0_int8x8_t, arg1_int8x8_t, arg2_int8x8_t);
8122 }
8123
8124-/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8125+/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8126 /* { dg-final { cleanup-saved-temps } } */
8127
8128=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlau16.c'
8129--- old/gcc/testsuite/gcc.target/arm/neon/vmlau16.c 2010-07-29 15:38:15 +0000
8130+++ new/gcc/testsuite/gcc.target/arm/neon/vmlau16.c 2010-08-20 13:27:11 +0000
8131@@ -18,5 +18,5 @@
8132 out_uint16x4_t = vmla_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
8133 }
8134
8135-/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8136+/* { dg-final { scan-assembler "vmla\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8137 /* { dg-final { cleanup-saved-temps } } */
8138
8139=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlau32.c'
8140--- old/gcc/testsuite/gcc.target/arm/neon/vmlau32.c 2010-07-29 15:38:15 +0000
8141+++ new/gcc/testsuite/gcc.target/arm/neon/vmlau32.c 2010-08-20 13:27:11 +0000
8142@@ -18,5 +18,5 @@
8143 out_uint32x2_t = vmla_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
8144 }
8145
8146-/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8147+/* { dg-final { scan-assembler "vmla\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8148 /* { dg-final { cleanup-saved-temps } } */
8149
8150=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlau8.c'
8151--- old/gcc/testsuite/gcc.target/arm/neon/vmlau8.c 2010-07-29 15:38:15 +0000
8152+++ new/gcc/testsuite/gcc.target/arm/neon/vmlau8.c 2010-08-20 13:27:11 +0000
8153@@ -18,5 +18,5 @@
8154 out_uint8x8_t = vmla_u8 (arg0_uint8x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
8155 }
8156
8157-/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8158+/* { dg-final { scan-assembler "vmla\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8159 /* { dg-final { cleanup-saved-temps } } */
8160
8161=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c'
8162--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c 2010-07-29 15:38:15 +0000
8163+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c 2010-08-20 13:27:11 +0000
8164@@ -18,5 +18,5 @@
8165 out_float32x4_t = vmlsq_lane_f32 (arg0_float32x4_t, arg1_float32x4_t, arg2_float32x2_t, 1);
8166 }
8167
8168-/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8169+/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8170 /* { dg-final { cleanup-saved-temps } } */
8171
8172=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c'
8173--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c 2010-07-29 15:38:15 +0000
8174+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c 2010-08-20 13:27:11 +0000
8175@@ -18,5 +18,5 @@
8176 out_int16x8_t = vmlsq_lane_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16x4_t, 1);
8177 }
8178
8179-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8180+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8181 /* { dg-final { cleanup-saved-temps } } */
8182
8183=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c'
8184--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c 2010-07-29 15:38:15 +0000
8185+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c 2010-08-20 13:27:11 +0000
8186@@ -18,5 +18,5 @@
8187 out_int32x4_t = vmlsq_lane_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32x2_t, 1);
8188 }
8189
8190-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8191+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8192 /* { dg-final { cleanup-saved-temps } } */
8193
8194=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c'
8195--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c 2010-07-29 15:38:15 +0000
8196+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c 2010-08-20 13:27:11 +0000
8197@@ -18,5 +18,5 @@
8198 out_uint16x8_t = vmlsq_lane_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16x4_t, 1);
8199 }
8200
8201-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8202+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8203 /* { dg-final { cleanup-saved-temps } } */
8204
8205=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c'
8206--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c 2010-07-29 15:38:15 +0000
8207+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c 2010-08-20 13:27:11 +0000
8208@@ -18,5 +18,5 @@
8209 out_uint32x4_t = vmlsq_lane_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32x2_t, 1);
8210 }
8211
8212-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8213+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8214 /* { dg-final { cleanup-saved-temps } } */
8215
8216=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c'
8217--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c 2010-07-29 15:38:15 +0000
8218+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c 2010-08-20 13:27:11 +0000
8219@@ -18,5 +18,5 @@
8220 out_float32x4_t = vmlsq_n_f32 (arg0_float32x4_t, arg1_float32x4_t, arg2_float32_t);
8221 }
8222
8223-/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8224+/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8225 /* { dg-final { cleanup-saved-temps } } */
8226
8227=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c'
8228--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c 2010-07-29 15:38:15 +0000
8229+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c 2010-08-20 13:27:11 +0000
8230@@ -18,5 +18,5 @@
8231 out_int16x8_t = vmlsq_n_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16_t);
8232 }
8233
8234-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8235+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8236 /* { dg-final { cleanup-saved-temps } } */
8237
8238=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c'
8239--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c 2010-07-29 15:38:15 +0000
8240+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c 2010-08-20 13:27:11 +0000
8241@@ -18,5 +18,5 @@
8242 out_int32x4_t = vmlsq_n_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32_t);
8243 }
8244
8245-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8246+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8247 /* { dg-final { cleanup-saved-temps } } */
8248
8249=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c'
8250--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c 2010-07-29 15:38:15 +0000
8251+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c 2010-08-20 13:27:11 +0000
8252@@ -18,5 +18,5 @@
8253 out_uint16x8_t = vmlsq_n_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16_t);
8254 }
8255
8256-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8257+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8258 /* { dg-final { cleanup-saved-temps } } */
8259
8260=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c'
8261--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c 2010-07-29 15:38:15 +0000
8262+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c 2010-08-20 13:27:11 +0000
8263@@ -18,5 +18,5 @@
8264 out_uint32x4_t = vmlsq_n_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32_t);
8265 }
8266
8267-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8268+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8269 /* { dg-final { cleanup-saved-temps } } */
8270
8271=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c'
8272--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c 2010-07-29 15:38:15 +0000
8273+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c 2010-08-20 13:27:11 +0000
8274@@ -18,5 +18,5 @@
8275 out_float32x4_t = vmlsq_f32 (arg0_float32x4_t, arg1_float32x4_t, arg2_float32x4_t);
8276 }
8277
8278-/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8279+/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8280 /* { dg-final { cleanup-saved-temps } } */
8281
8282=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c'
8283--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c 2010-07-29 15:38:15 +0000
8284+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c 2010-08-20 13:27:11 +0000
8285@@ -18,5 +18,5 @@
8286 out_int16x8_t = vmlsq_s16 (arg0_int16x8_t, arg1_int16x8_t, arg2_int16x8_t);
8287 }
8288
8289-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8290+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8291 /* { dg-final { cleanup-saved-temps } } */
8292
8293=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c'
8294--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c 2010-07-29 15:38:15 +0000
8295+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c 2010-08-20 13:27:11 +0000
8296@@ -18,5 +18,5 @@
8297 out_int32x4_t = vmlsq_s32 (arg0_int32x4_t, arg1_int32x4_t, arg2_int32x4_t);
8298 }
8299
8300-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8301+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8302 /* { dg-final { cleanup-saved-temps } } */
8303
8304=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c'
8305--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c 2010-07-29 15:38:15 +0000
8306+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c 2010-08-20 13:27:11 +0000
8307@@ -18,5 +18,5 @@
8308 out_int8x16_t = vmlsq_s8 (arg0_int8x16_t, arg1_int8x16_t, arg2_int8x16_t);
8309 }
8310
8311-/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8312+/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8313 /* { dg-final { cleanup-saved-temps } } */
8314
8315=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c'
8316--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c 2010-07-29 15:38:15 +0000
8317+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c 2010-08-20 13:27:11 +0000
8318@@ -18,5 +18,5 @@
8319 out_uint16x8_t = vmlsq_u16 (arg0_uint16x8_t, arg1_uint16x8_t, arg2_uint16x8_t);
8320 }
8321
8322-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8323+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8324 /* { dg-final { cleanup-saved-temps } } */
8325
8326=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c'
8327--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c 2010-07-29 15:38:15 +0000
8328+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c 2010-08-20 13:27:11 +0000
8329@@ -18,5 +18,5 @@
8330 out_uint32x4_t = vmlsq_u32 (arg0_uint32x4_t, arg1_uint32x4_t, arg2_uint32x4_t);
8331 }
8332
8333-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8334+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8335 /* { dg-final { cleanup-saved-temps } } */
8336
8337=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c'
8338--- old/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c 2010-07-29 15:38:15 +0000
8339+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c 2010-08-20 13:27:11 +0000
8340@@ -18,5 +18,5 @@
8341 out_uint8x16_t = vmlsq_u8 (arg0_uint8x16_t, arg1_uint8x16_t, arg2_uint8x16_t);
8342 }
8343
8344-/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8345+/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8346 /* { dg-final { cleanup-saved-temps } } */
8347
8348=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c'
8349--- old/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c 2010-07-29 15:38:15 +0000
8350+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c 2010-08-20 13:27:11 +0000
8351@@ -18,5 +18,5 @@
8352 out_float32x2_t = vmls_lane_f32 (arg0_float32x2_t, arg1_float32x2_t, arg2_float32x2_t, 1);
8353 }
8354
8355-/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8356+/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8357 /* { dg-final { cleanup-saved-temps } } */
8358
8359=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c'
8360--- old/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c 2010-07-29 15:38:15 +0000
8361+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c 2010-08-20 13:27:11 +0000
8362@@ -18,5 +18,5 @@
8363 out_int16x4_t = vmls_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16x4_t, 1);
8364 }
8365
8366-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8367+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8368 /* { dg-final { cleanup-saved-temps } } */
8369
8370=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c'
8371--- old/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c 2010-07-29 15:38:15 +0000
8372+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c 2010-08-20 13:27:11 +0000
8373@@ -18,5 +18,5 @@
8374 out_int32x2_t = vmls_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32x2_t, 1);
8375 }
8376
8377-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8378+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8379 /* { dg-final { cleanup-saved-temps } } */
8380
8381=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c'
8382--- old/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c 2010-07-29 15:38:15 +0000
8383+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c 2010-08-20 13:27:11 +0000
8384@@ -18,5 +18,5 @@
8385 out_uint16x4_t = vmls_lane_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16x4_t, 1);
8386 }
8387
8388-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8389+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8390 /* { dg-final { cleanup-saved-temps } } */
8391
8392=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c'
8393--- old/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c 2010-07-29 15:38:15 +0000
8394+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c 2010-08-20 13:27:11 +0000
8395@@ -18,5 +18,5 @@
8396 out_uint32x2_t = vmls_lane_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32x2_t, 1);
8397 }
8398
8399-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8400+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8401 /* { dg-final { cleanup-saved-temps } } */
8402
8403=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c'
8404--- old/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c 2010-07-29 15:38:15 +0000
8405+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c 2010-08-20 13:27:11 +0000
8406@@ -18,5 +18,5 @@
8407 out_float32x2_t = vmls_n_f32 (arg0_float32x2_t, arg1_float32x2_t, arg2_float32_t);
8408 }
8409
8410-/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8411+/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8412 /* { dg-final { cleanup-saved-temps } } */
8413
8414=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c'
8415--- old/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c 2010-07-29 15:38:15 +0000
8416+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c 2010-08-20 13:27:11 +0000
8417@@ -18,5 +18,5 @@
8418 out_int16x4_t = vmls_n_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16_t);
8419 }
8420
8421-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8422+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8423 /* { dg-final { cleanup-saved-temps } } */
8424
8425=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c'
8426--- old/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c 2010-07-29 15:38:15 +0000
8427+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c 2010-08-20 13:27:11 +0000
8428@@ -18,5 +18,5 @@
8429 out_int32x2_t = vmls_n_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32_t);
8430 }
8431
8432-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8433+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8434 /* { dg-final { cleanup-saved-temps } } */
8435
8436=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c'
8437--- old/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c 2010-07-29 15:38:15 +0000
8438+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c 2010-08-20 13:27:11 +0000
8439@@ -18,5 +18,5 @@
8440 out_uint16x4_t = vmls_n_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16_t);
8441 }
8442
8443-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8444+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8445 /* { dg-final { cleanup-saved-temps } } */
8446
8447=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c'
8448--- old/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c 2010-07-29 15:38:15 +0000
8449+++ new/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c 2010-08-20 13:27:11 +0000
8450@@ -18,5 +18,5 @@
8451 out_uint32x2_t = vmls_n_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32_t);
8452 }
8453
8454-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8455+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8456 /* { dg-final { cleanup-saved-temps } } */
8457
8458=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsf32.c'
8459--- old/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c 2010-07-29 15:38:15 +0000
8460+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c 2010-08-20 13:27:11 +0000
8461@@ -18,5 +18,5 @@
8462 out_float32x2_t = vmls_f32 (arg0_float32x2_t, arg1_float32x2_t, arg2_float32x2_t);
8463 }
8464
8465-/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8466+/* { dg-final { scan-assembler "vmls\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8467 /* { dg-final { cleanup-saved-temps } } */
8468
8469=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c'
8470--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c 2010-07-29 15:38:15 +0000
8471+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c 2010-08-20 13:27:11 +0000
8472@@ -18,5 +18,5 @@
8473 out_int32x4_t = vmlsl_lane_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t, 1);
8474 }
8475
8476-/* { dg-final { scan-assembler "vmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8477+/* { dg-final { scan-assembler "vmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8478 /* { dg-final { cleanup-saved-temps } } */
8479
8480=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c'
8481--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c 2010-07-29 15:38:15 +0000
8482+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c 2010-08-20 13:27:11 +0000
8483@@ -18,5 +18,5 @@
8484 out_int64x2_t = vmlsl_lane_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t, 1);
8485 }
8486
8487-/* { dg-final { scan-assembler "vmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8488+/* { dg-final { scan-assembler "vmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8489 /* { dg-final { cleanup-saved-temps } } */
8490
8491=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c'
8492--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c 2010-07-29 15:38:15 +0000
8493+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c 2010-08-20 13:27:11 +0000
8494@@ -18,5 +18,5 @@
8495 out_uint32x4_t = vmlsl_lane_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16x4_t, 1);
8496 }
8497
8498-/* { dg-final { scan-assembler "vmlsl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8499+/* { dg-final { scan-assembler "vmlsl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8500 /* { dg-final { cleanup-saved-temps } } */
8501
8502=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c'
8503--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c 2010-07-29 15:38:15 +0000
8504+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c 2010-08-20 13:27:11 +0000
8505@@ -18,5 +18,5 @@
8506 out_uint64x2_t = vmlsl_lane_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32x2_t, 1);
8507 }
8508
8509-/* { dg-final { scan-assembler "vmlsl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8510+/* { dg-final { scan-assembler "vmlsl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8511 /* { dg-final { cleanup-saved-temps } } */
8512
8513=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c'
8514--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c 2010-07-29 15:38:15 +0000
8515+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c 2010-08-20 13:27:11 +0000
8516@@ -18,5 +18,5 @@
8517 out_int32x4_t = vmlsl_n_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16_t);
8518 }
8519
8520-/* { dg-final { scan-assembler "vmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8521+/* { dg-final { scan-assembler "vmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8522 /* { dg-final { cleanup-saved-temps } } */
8523
8524=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c'
8525--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c 2010-07-29 15:38:15 +0000
8526+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c 2010-08-20 13:27:11 +0000
8527@@ -18,5 +18,5 @@
8528 out_int64x2_t = vmlsl_n_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32_t);
8529 }
8530
8531-/* { dg-final { scan-assembler "vmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8532+/* { dg-final { scan-assembler "vmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8533 /* { dg-final { cleanup-saved-temps } } */
8534
8535=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c'
8536--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c 2010-07-29 15:38:15 +0000
8537+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c 2010-08-20 13:27:11 +0000
8538@@ -18,5 +18,5 @@
8539 out_uint32x4_t = vmlsl_n_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16_t);
8540 }
8541
8542-/* { dg-final { scan-assembler "vmlsl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8543+/* { dg-final { scan-assembler "vmlsl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8544 /* { dg-final { cleanup-saved-temps } } */
8545
8546=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c'
8547--- old/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c 2010-07-29 15:38:15 +0000
8548+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c 2010-08-20 13:27:11 +0000
8549@@ -18,5 +18,5 @@
8550 out_uint64x2_t = vmlsl_n_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32_t);
8551 }
8552
8553-/* { dg-final { scan-assembler "vmlsl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8554+/* { dg-final { scan-assembler "vmlsl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
8555 /* { dg-final { cleanup-saved-temps } } */
8556
8557=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsls16.c'
8558--- old/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c 2010-07-29 15:38:15 +0000
8559+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c 2010-08-20 13:27:11 +0000
8560@@ -18,5 +18,5 @@
8561 out_int32x4_t = vmlsl_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t);
8562 }
8563
8564-/* { dg-final { scan-assembler "vmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8565+/* { dg-final { scan-assembler "vmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8566 /* { dg-final { cleanup-saved-temps } } */
8567
8568=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsls32.c'
8569--- old/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c 2010-07-29 15:38:15 +0000
8570+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c 2010-08-20 13:27:11 +0000
8571@@ -18,5 +18,5 @@
8572 out_int64x2_t = vmlsl_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t);
8573 }
8574
8575-/* { dg-final { scan-assembler "vmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8576+/* { dg-final { scan-assembler "vmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8577 /* { dg-final { cleanup-saved-temps } } */
8578
8579=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsls8.c'
8580--- old/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c 2010-07-29 15:38:15 +0000
8581+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c 2010-08-20 13:27:11 +0000
8582@@ -18,5 +18,5 @@
8583 out_int16x8_t = vmlsl_s8 (arg0_int16x8_t, arg1_int8x8_t, arg2_int8x8_t);
8584 }
8585
8586-/* { dg-final { scan-assembler "vmlsl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8587+/* { dg-final { scan-assembler "vmlsl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8588 /* { dg-final { cleanup-saved-temps } } */
8589
8590=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlslu16.c'
8591--- old/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c 2010-07-29 15:38:15 +0000
8592+++ new/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c 2010-08-20 13:27:11 +0000
8593@@ -18,5 +18,5 @@
8594 out_uint32x4_t = vmlsl_u16 (arg0_uint32x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
8595 }
8596
8597-/* { dg-final { scan-assembler "vmlsl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8598+/* { dg-final { scan-assembler "vmlsl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8599 /* { dg-final { cleanup-saved-temps } } */
8600
8601=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlslu32.c'
8602--- old/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c 2010-07-29 15:38:15 +0000
8603+++ new/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c 2010-08-20 13:27:11 +0000
8604@@ -18,5 +18,5 @@
8605 out_uint64x2_t = vmlsl_u32 (arg0_uint64x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
8606 }
8607
8608-/* { dg-final { scan-assembler "vmlsl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8609+/* { dg-final { scan-assembler "vmlsl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8610 /* { dg-final { cleanup-saved-temps } } */
8611
8612=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlslu8.c'
8613--- old/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c 2010-07-29 15:38:15 +0000
8614+++ new/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c 2010-08-20 13:27:11 +0000
8615@@ -18,5 +18,5 @@
8616 out_uint16x8_t = vmlsl_u8 (arg0_uint16x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
8617 }
8618
8619-/* { dg-final { scan-assembler "vmlsl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8620+/* { dg-final { scan-assembler "vmlsl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8621 /* { dg-final { cleanup-saved-temps } } */
8622
8623=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlss16.c'
8624--- old/gcc/testsuite/gcc.target/arm/neon/vmlss16.c 2010-07-29 15:38:15 +0000
8625+++ new/gcc/testsuite/gcc.target/arm/neon/vmlss16.c 2010-08-20 13:27:11 +0000
8626@@ -18,5 +18,5 @@
8627 out_int16x4_t = vmls_s16 (arg0_int16x4_t, arg1_int16x4_t, arg2_int16x4_t);
8628 }
8629
8630-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8631+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8632 /* { dg-final { cleanup-saved-temps } } */
8633
8634=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlss32.c'
8635--- old/gcc/testsuite/gcc.target/arm/neon/vmlss32.c 2010-07-29 15:38:15 +0000
8636+++ new/gcc/testsuite/gcc.target/arm/neon/vmlss32.c 2010-08-20 13:27:11 +0000
8637@@ -18,5 +18,5 @@
8638 out_int32x2_t = vmls_s32 (arg0_int32x2_t, arg1_int32x2_t, arg2_int32x2_t);
8639 }
8640
8641-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8642+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8643 /* { dg-final { cleanup-saved-temps } } */
8644
8645=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlss8.c'
8646--- old/gcc/testsuite/gcc.target/arm/neon/vmlss8.c 2010-07-29 15:38:15 +0000
8647+++ new/gcc/testsuite/gcc.target/arm/neon/vmlss8.c 2010-08-20 13:27:11 +0000
8648@@ -18,5 +18,5 @@
8649 out_int8x8_t = vmls_s8 (arg0_int8x8_t, arg1_int8x8_t, arg2_int8x8_t);
8650 }
8651
8652-/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8653+/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8654 /* { dg-final { cleanup-saved-temps } } */
8655
8656=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsu16.c'
8657--- old/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c 2010-07-29 15:38:15 +0000
8658+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c 2010-08-20 13:27:11 +0000
8659@@ -18,5 +18,5 @@
8660 out_uint16x4_t = vmls_u16 (arg0_uint16x4_t, arg1_uint16x4_t, arg2_uint16x4_t);
8661 }
8662
8663-/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8664+/* { dg-final { scan-assembler "vmls\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8665 /* { dg-final { cleanup-saved-temps } } */
8666
8667=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsu32.c'
8668--- old/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c 2010-07-29 15:38:15 +0000
8669+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c 2010-08-20 13:27:11 +0000
8670@@ -18,5 +18,5 @@
8671 out_uint32x2_t = vmls_u32 (arg0_uint32x2_t, arg1_uint32x2_t, arg2_uint32x2_t);
8672 }
8673
8674-/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8675+/* { dg-final { scan-assembler "vmls\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8676 /* { dg-final { cleanup-saved-temps } } */
8677
8678=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmlsu8.c'
8679--- old/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c 2010-07-29 15:38:15 +0000
8680+++ new/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c 2010-08-20 13:27:11 +0000
8681@@ -18,5 +18,5 @@
8682 out_uint8x8_t = vmls_u8 (arg0_uint8x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
8683 }
8684
8685-/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8686+/* { dg-final { scan-assembler "vmls\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8687 /* { dg-final { cleanup-saved-temps } } */
8688
8689=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c'
8690--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c 2010-07-29 15:38:15 +0000
8691+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c 2010-08-20 13:27:11 +0000
8692@@ -16,5 +16,5 @@
8693 out_float32x4_t = vmovq_n_f32 (arg0_float32_t);
8694 }
8695
8696-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8697+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8698 /* { dg-final { cleanup-saved-temps } } */
8699
8700=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c'
8701--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c 2010-07-29 15:38:15 +0000
8702+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c 2010-08-20 13:27:11 +0000
8703@@ -16,5 +16,5 @@
8704 out_poly16x8_t = vmovq_n_p16 (arg0_poly16_t);
8705 }
8706
8707-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8708+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8709 /* { dg-final { cleanup-saved-temps } } */
8710
8711=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c'
8712--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c 2010-07-29 15:38:15 +0000
8713+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c 2010-08-20 13:27:11 +0000
8714@@ -16,5 +16,5 @@
8715 out_poly8x16_t = vmovq_n_p8 (arg0_poly8_t);
8716 }
8717
8718-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8719+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8720 /* { dg-final { cleanup-saved-temps } } */
8721
8722=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c'
8723--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c 2010-07-29 15:38:15 +0000
8724+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c 2010-08-20 13:27:11 +0000
8725@@ -16,5 +16,5 @@
8726 out_int16x8_t = vmovq_n_s16 (arg0_int16_t);
8727 }
8728
8729-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8730+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8731 /* { dg-final { cleanup-saved-temps } } */
8732
8733=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c'
8734--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c 2010-07-29 15:38:15 +0000
8735+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c 2010-08-20 13:27:11 +0000
8736@@ -16,5 +16,5 @@
8737 out_int32x4_t = vmovq_n_s32 (arg0_int32_t);
8738 }
8739
8740-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8741+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8742 /* { dg-final { cleanup-saved-temps } } */
8743
8744=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c'
8745--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c 2010-07-29 15:38:15 +0000
8746+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c 2010-08-20 13:27:11 +0000
8747@@ -16,5 +16,5 @@
8748 out_int8x16_t = vmovq_n_s8 (arg0_int8_t);
8749 }
8750
8751-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8752+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8753 /* { dg-final { cleanup-saved-temps } } */
8754
8755=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c'
8756--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c 2010-07-29 15:38:15 +0000
8757+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c 2010-08-20 13:27:11 +0000
8758@@ -16,5 +16,5 @@
8759 out_uint16x8_t = vmovq_n_u16 (arg0_uint16_t);
8760 }
8761
8762-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8763+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8764 /* { dg-final { cleanup-saved-temps } } */
8765
8766=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c'
8767--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c 2010-07-29 15:38:15 +0000
8768+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c 2010-08-20 13:27:11 +0000
8769@@ -16,5 +16,5 @@
8770 out_uint32x4_t = vmovq_n_u32 (arg0_uint32_t);
8771 }
8772
8773-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8774+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8775 /* { dg-final { cleanup-saved-temps } } */
8776
8777=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c'
8778--- old/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c 2010-07-29 15:38:15 +0000
8779+++ new/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c 2010-08-20 13:27:11 +0000
8780@@ -16,5 +16,5 @@
8781 out_uint8x16_t = vmovq_n_u8 (arg0_uint8_t);
8782 }
8783
8784-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8785+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8786 /* { dg-final { cleanup-saved-temps } } */
8787
8788=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c'
8789--- old/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c 2010-07-29 15:38:15 +0000
8790+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c 2010-08-20 13:27:11 +0000
8791@@ -16,5 +16,5 @@
8792 out_float32x2_t = vmov_n_f32 (arg0_float32_t);
8793 }
8794
8795-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8796+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8797 /* { dg-final { cleanup-saved-temps } } */
8798
8799=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_np16.c'
8800--- old/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c 2010-07-29 15:38:15 +0000
8801+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c 2010-08-20 13:27:11 +0000
8802@@ -16,5 +16,5 @@
8803 out_poly16x4_t = vmov_n_p16 (arg0_poly16_t);
8804 }
8805
8806-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8807+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8808 /* { dg-final { cleanup-saved-temps } } */
8809
8810=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_np8.c'
8811--- old/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c 2010-07-29 15:38:15 +0000
8812+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c 2010-08-20 13:27:11 +0000
8813@@ -16,5 +16,5 @@
8814 out_poly8x8_t = vmov_n_p8 (arg0_poly8_t);
8815 }
8816
8817-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8818+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8819 /* { dg-final { cleanup-saved-temps } } */
8820
8821=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c'
8822--- old/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c 2010-07-29 15:38:15 +0000
8823+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c 2010-08-20 13:27:11 +0000
8824@@ -16,5 +16,5 @@
8825 out_int16x4_t = vmov_n_s16 (arg0_int16_t);
8826 }
8827
8828-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8829+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8830 /* { dg-final { cleanup-saved-temps } } */
8831
8832=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c'
8833--- old/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c 2010-07-29 15:38:15 +0000
8834+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c 2010-08-20 13:27:11 +0000
8835@@ -16,5 +16,5 @@
8836 out_int32x2_t = vmov_n_s32 (arg0_int32_t);
8837 }
8838
8839-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8840+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8841 /* { dg-final { cleanup-saved-temps } } */
8842
8843=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c'
8844--- old/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c 2010-07-29 15:38:15 +0000
8845+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c 2010-08-20 13:27:11 +0000
8846@@ -16,5 +16,5 @@
8847 out_int8x8_t = vmov_n_s8 (arg0_int8_t);
8848 }
8849
8850-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8851+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8852 /* { dg-final { cleanup-saved-temps } } */
8853
8854=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c'
8855--- old/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c 2010-07-29 15:38:15 +0000
8856+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c 2010-08-20 13:27:11 +0000
8857@@ -16,5 +16,5 @@
8858 out_uint16x4_t = vmov_n_u16 (arg0_uint16_t);
8859 }
8860
8861-/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8862+/* { dg-final { scan-assembler "vdup\.16\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8863 /* { dg-final { cleanup-saved-temps } } */
8864
8865=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c'
8866--- old/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c 2010-07-29 15:38:15 +0000
8867+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c 2010-08-20 13:27:11 +0000
8868@@ -16,5 +16,5 @@
8869 out_uint32x2_t = vmov_n_u32 (arg0_uint32_t);
8870 }
8871
8872-/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8873+/* { dg-final { scan-assembler "vdup\.32\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8874 /* { dg-final { cleanup-saved-temps } } */
8875
8876=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c'
8877--- old/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c 2010-07-29 15:38:15 +0000
8878+++ new/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c 2010-08-20 13:27:11 +0000
8879@@ -16,5 +16,5 @@
8880 out_uint8x8_t = vmov_n_u8 (arg0_uint8_t);
8881 }
8882
8883-/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8884+/* { dg-final { scan-assembler "vdup\.8\[ \]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ \]+@.*\)?\n" } } */
8885 /* { dg-final { cleanup-saved-temps } } */
8886
8887=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovls16.c'
8888--- old/gcc/testsuite/gcc.target/arm/neon/vmovls16.c 2010-07-29 15:38:15 +0000
8889+++ new/gcc/testsuite/gcc.target/arm/neon/vmovls16.c 2010-08-20 13:27:11 +0000
8890@@ -16,5 +16,5 @@
8891 out_int32x4_t = vmovl_s16 (arg0_int16x4_t);
8892 }
8893
8894-/* { dg-final { scan-assembler "vmovl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8895+/* { dg-final { scan-assembler "vmovl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8896 /* { dg-final { cleanup-saved-temps } } */
8897
8898=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovls32.c'
8899--- old/gcc/testsuite/gcc.target/arm/neon/vmovls32.c 2010-07-29 15:38:15 +0000
8900+++ new/gcc/testsuite/gcc.target/arm/neon/vmovls32.c 2010-08-20 13:27:11 +0000
8901@@ -16,5 +16,5 @@
8902 out_int64x2_t = vmovl_s32 (arg0_int32x2_t);
8903 }
8904
8905-/* { dg-final { scan-assembler "vmovl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8906+/* { dg-final { scan-assembler "vmovl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8907 /* { dg-final { cleanup-saved-temps } } */
8908
8909=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovls8.c'
8910--- old/gcc/testsuite/gcc.target/arm/neon/vmovls8.c 2010-07-29 15:38:15 +0000
8911+++ new/gcc/testsuite/gcc.target/arm/neon/vmovls8.c 2010-08-20 13:27:11 +0000
8912@@ -16,5 +16,5 @@
8913 out_int16x8_t = vmovl_s8 (arg0_int8x8_t);
8914 }
8915
8916-/* { dg-final { scan-assembler "vmovl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8917+/* { dg-final { scan-assembler "vmovl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8918 /* { dg-final { cleanup-saved-temps } } */
8919
8920=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovlu16.c'
8921--- old/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c 2010-07-29 15:38:15 +0000
8922+++ new/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c 2010-08-20 13:27:11 +0000
8923@@ -16,5 +16,5 @@
8924 out_uint32x4_t = vmovl_u16 (arg0_uint16x4_t);
8925 }
8926
8927-/* { dg-final { scan-assembler "vmovl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8928+/* { dg-final { scan-assembler "vmovl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8929 /* { dg-final { cleanup-saved-temps } } */
8930
8931=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovlu32.c'
8932--- old/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c 2010-07-29 15:38:15 +0000
8933+++ new/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c 2010-08-20 13:27:11 +0000
8934@@ -16,5 +16,5 @@
8935 out_uint64x2_t = vmovl_u32 (arg0_uint32x2_t);
8936 }
8937
8938-/* { dg-final { scan-assembler "vmovl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8939+/* { dg-final { scan-assembler "vmovl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8940 /* { dg-final { cleanup-saved-temps } } */
8941
8942=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovlu8.c'
8943--- old/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c 2010-07-29 15:38:15 +0000
8944+++ new/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c 2010-08-20 13:27:11 +0000
8945@@ -16,5 +16,5 @@
8946 out_uint16x8_t = vmovl_u8 (arg0_uint8x8_t);
8947 }
8948
8949-/* { dg-final { scan-assembler "vmovl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8950+/* { dg-final { scan-assembler "vmovl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8951 /* { dg-final { cleanup-saved-temps } } */
8952
8953=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovns16.c'
8954--- old/gcc/testsuite/gcc.target/arm/neon/vmovns16.c 2010-07-29 15:38:15 +0000
8955+++ new/gcc/testsuite/gcc.target/arm/neon/vmovns16.c 2010-08-20 13:27:11 +0000
8956@@ -16,5 +16,5 @@
8957 out_int8x8_t = vmovn_s16 (arg0_int16x8_t);
8958 }
8959
8960-/* { dg-final { scan-assembler "vmovn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8961+/* { dg-final { scan-assembler "vmovn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8962 /* { dg-final { cleanup-saved-temps } } */
8963
8964=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovns32.c'
8965--- old/gcc/testsuite/gcc.target/arm/neon/vmovns32.c 2010-07-29 15:38:15 +0000
8966+++ new/gcc/testsuite/gcc.target/arm/neon/vmovns32.c 2010-08-20 13:27:11 +0000
8967@@ -16,5 +16,5 @@
8968 out_int16x4_t = vmovn_s32 (arg0_int32x4_t);
8969 }
8970
8971-/* { dg-final { scan-assembler "vmovn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8972+/* { dg-final { scan-assembler "vmovn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8973 /* { dg-final { cleanup-saved-temps } } */
8974
8975=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovns64.c'
8976--- old/gcc/testsuite/gcc.target/arm/neon/vmovns64.c 2010-07-29 15:38:15 +0000
8977+++ new/gcc/testsuite/gcc.target/arm/neon/vmovns64.c 2010-08-20 13:27:11 +0000
8978@@ -16,5 +16,5 @@
8979 out_int32x2_t = vmovn_s64 (arg0_int64x2_t);
8980 }
8981
8982-/* { dg-final { scan-assembler "vmovn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8983+/* { dg-final { scan-assembler "vmovn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8984 /* { dg-final { cleanup-saved-temps } } */
8985
8986=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovnu16.c'
8987--- old/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c 2010-07-29 15:38:15 +0000
8988+++ new/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c 2010-08-20 13:27:11 +0000
8989@@ -16,5 +16,5 @@
8990 out_uint8x8_t = vmovn_u16 (arg0_uint16x8_t);
8991 }
8992
8993-/* { dg-final { scan-assembler "vmovn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
8994+/* { dg-final { scan-assembler "vmovn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
8995 /* { dg-final { cleanup-saved-temps } } */
8996
8997=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovnu32.c'
8998--- old/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c 2010-07-29 15:38:15 +0000
8999+++ new/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c 2010-08-20 13:27:11 +0000
9000@@ -16,5 +16,5 @@
9001 out_uint16x4_t = vmovn_u32 (arg0_uint32x4_t);
9002 }
9003
9004-/* { dg-final { scan-assembler "vmovn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9005+/* { dg-final { scan-assembler "vmovn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9006 /* { dg-final { cleanup-saved-temps } } */
9007
9008=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmovnu64.c'
9009--- old/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c 2010-07-29 15:38:15 +0000
9010+++ new/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c 2010-08-20 13:27:11 +0000
9011@@ -16,5 +16,5 @@
9012 out_uint32x2_t = vmovn_u64 (arg0_uint64x2_t);
9013 }
9014
9015-/* { dg-final { scan-assembler "vmovn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9016+/* { dg-final { scan-assembler "vmovn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9017 /* { dg-final { cleanup-saved-temps } } */
9018
9019=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c'
9020--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c 2010-07-29 15:38:15 +0000
9021+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c 2010-08-20 13:27:11 +0000
9022@@ -17,5 +17,5 @@
9023 out_float32x4_t = vmulq_lane_f32 (arg0_float32x4_t, arg1_float32x2_t, 1);
9024 }
9025
9026-/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9027+/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9028 /* { dg-final { cleanup-saved-temps } } */
9029
9030=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c'
9031--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c 2010-07-29 15:38:15 +0000
9032+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c 2010-08-20 13:27:11 +0000
9033@@ -17,5 +17,5 @@
9034 out_int16x8_t = vmulq_lane_s16 (arg0_int16x8_t, arg1_int16x4_t, 1);
9035 }
9036
9037-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9038+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9039 /* { dg-final { cleanup-saved-temps } } */
9040
9041=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c'
9042--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c 2010-07-29 15:38:15 +0000
9043+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c 2010-08-20 13:27:11 +0000
9044@@ -17,5 +17,5 @@
9045 out_int32x4_t = vmulq_lane_s32 (arg0_int32x4_t, arg1_int32x2_t, 1);
9046 }
9047
9048-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9049+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9050 /* { dg-final { cleanup-saved-temps } } */
9051
9052=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c'
9053--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c 2010-07-29 15:38:15 +0000
9054+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c 2010-08-20 13:27:11 +0000
9055@@ -17,5 +17,5 @@
9056 out_uint16x8_t = vmulq_lane_u16 (arg0_uint16x8_t, arg1_uint16x4_t, 1);
9057 }
9058
9059-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9060+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9061 /* { dg-final { cleanup-saved-temps } } */
9062
9063=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c'
9064--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c 2010-07-29 15:38:15 +0000
9065+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c 2010-08-20 13:27:11 +0000
9066@@ -17,5 +17,5 @@
9067 out_uint32x4_t = vmulq_lane_u32 (arg0_uint32x4_t, arg1_uint32x2_t, 1);
9068 }
9069
9070-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9071+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9072 /* { dg-final { cleanup-saved-temps } } */
9073
9074=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c'
9075--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c 2010-07-29 15:38:15 +0000
9076+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c 2010-08-20 13:27:11 +0000
9077@@ -17,5 +17,5 @@
9078 out_float32x4_t = vmulq_n_f32 (arg0_float32x4_t, arg1_float32_t);
9079 }
9080
9081-/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9082+/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9083 /* { dg-final { cleanup-saved-temps } } */
9084
9085=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c'
9086--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c 2010-07-29 15:38:15 +0000
9087+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c 2010-08-20 13:27:11 +0000
9088@@ -17,5 +17,5 @@
9089 out_int16x8_t = vmulq_n_s16 (arg0_int16x8_t, arg1_int16_t);
9090 }
9091
9092-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9093+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9094 /* { dg-final { cleanup-saved-temps } } */
9095
9096=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c'
9097--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c 2010-07-29 15:38:15 +0000
9098+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c 2010-08-20 13:27:11 +0000
9099@@ -17,5 +17,5 @@
9100 out_int32x4_t = vmulq_n_s32 (arg0_int32x4_t, arg1_int32_t);
9101 }
9102
9103-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9104+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9105 /* { dg-final { cleanup-saved-temps } } */
9106
9107=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c'
9108--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c 2010-07-29 15:38:15 +0000
9109+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c 2010-08-20 13:27:11 +0000
9110@@ -17,5 +17,5 @@
9111 out_uint16x8_t = vmulq_n_u16 (arg0_uint16x8_t, arg1_uint16_t);
9112 }
9113
9114-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9115+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9116 /* { dg-final { cleanup-saved-temps } } */
9117
9118=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c'
9119--- old/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c 2010-07-29 15:38:15 +0000
9120+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c 2010-08-20 13:27:11 +0000
9121@@ -17,5 +17,5 @@
9122 out_uint32x4_t = vmulq_n_u32 (arg0_uint32x4_t, arg1_uint32_t);
9123 }
9124
9125-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9126+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9127 /* { dg-final { cleanup-saved-temps } } */
9128
9129=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQf32.c'
9130--- old/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c 2010-07-29 15:38:15 +0000
9131+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c 2010-08-20 13:27:11 +0000
9132@@ -17,5 +17,5 @@
9133 out_float32x4_t = vmulq_f32 (arg0_float32x4_t, arg1_float32x4_t);
9134 }
9135
9136-/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9137+/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9138 /* { dg-final { cleanup-saved-temps } } */
9139
9140=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQp8.c'
9141--- old/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c 2010-07-29 15:38:15 +0000
9142+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c 2010-08-20 13:27:11 +0000
9143@@ -17,5 +17,5 @@
9144 out_poly8x16_t = vmulq_p8 (arg0_poly8x16_t, arg1_poly8x16_t);
9145 }
9146
9147-/* { dg-final { scan-assembler "vmul\.p8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9148+/* { dg-final { scan-assembler "vmul\.p8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9149 /* { dg-final { cleanup-saved-temps } } */
9150
9151=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQs16.c'
9152--- old/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c 2010-07-29 15:38:15 +0000
9153+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c 2010-08-20 13:27:11 +0000
9154@@ -17,5 +17,5 @@
9155 out_int16x8_t = vmulq_s16 (arg0_int16x8_t, arg1_int16x8_t);
9156 }
9157
9158-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9159+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9160 /* { dg-final { cleanup-saved-temps } } */
9161
9162=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQs32.c'
9163--- old/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c 2010-07-29 15:38:15 +0000
9164+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c 2010-08-20 13:27:11 +0000
9165@@ -17,5 +17,5 @@
9166 out_int32x4_t = vmulq_s32 (arg0_int32x4_t, arg1_int32x4_t);
9167 }
9168
9169-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9170+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9171 /* { dg-final { cleanup-saved-temps } } */
9172
9173=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQs8.c'
9174--- old/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c 2010-07-29 15:38:15 +0000
9175+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c 2010-08-20 13:27:11 +0000
9176@@ -17,5 +17,5 @@
9177 out_int8x16_t = vmulq_s8 (arg0_int8x16_t, arg1_int8x16_t);
9178 }
9179
9180-/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9181+/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9182 /* { dg-final { cleanup-saved-temps } } */
9183
9184=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQu16.c'
9185--- old/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c 2010-07-29 15:38:15 +0000
9186+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c 2010-08-20 13:27:11 +0000
9187@@ -17,5 +17,5 @@
9188 out_uint16x8_t = vmulq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
9189 }
9190
9191-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9192+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9193 /* { dg-final { cleanup-saved-temps } } */
9194
9195=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQu32.c'
9196--- old/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c 2010-07-29 15:38:15 +0000
9197+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c 2010-08-20 13:27:11 +0000
9198@@ -17,5 +17,5 @@
9199 out_uint32x4_t = vmulq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
9200 }
9201
9202-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9203+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9204 /* { dg-final { cleanup-saved-temps } } */
9205
9206=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulQu8.c'
9207--- old/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c 2010-07-29 15:38:15 +0000
9208+++ new/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c 2010-08-20 13:27:11 +0000
9209@@ -17,5 +17,5 @@
9210 out_uint8x16_t = vmulq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
9211 }
9212
9213-/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9214+/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9215 /* { dg-final { cleanup-saved-temps } } */
9216
9217=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c'
9218--- old/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c 2010-07-29 15:38:15 +0000
9219+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c 2010-08-20 13:27:11 +0000
9220@@ -17,5 +17,5 @@
9221 out_float32x2_t = vmul_lane_f32 (arg0_float32x2_t, arg1_float32x2_t, 1);
9222 }
9223
9224-/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9225+/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9226 /* { dg-final { cleanup-saved-temps } } */
9227
9228=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c'
9229--- old/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c 2010-07-29 15:38:15 +0000
9230+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c 2010-08-20 13:27:11 +0000
9231@@ -17,5 +17,5 @@
9232 out_int16x4_t = vmul_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
9233 }
9234
9235-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9236+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9237 /* { dg-final { cleanup-saved-temps } } */
9238
9239=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c'
9240--- old/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c 2010-07-29 15:38:15 +0000
9241+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c 2010-08-20 13:27:11 +0000
9242@@ -17,5 +17,5 @@
9243 out_int32x2_t = vmul_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
9244 }
9245
9246-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9247+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9248 /* { dg-final { cleanup-saved-temps } } */
9249
9250=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c'
9251--- old/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c 2010-07-29 15:38:15 +0000
9252+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c 2010-08-20 13:27:11 +0000
9253@@ -17,5 +17,5 @@
9254 out_uint16x4_t = vmul_lane_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 1);
9255 }
9256
9257-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9258+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9259 /* { dg-final { cleanup-saved-temps } } */
9260
9261=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c'
9262--- old/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c 2010-07-29 15:38:15 +0000
9263+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c 2010-08-20 13:27:11 +0000
9264@@ -17,5 +17,5 @@
9265 out_uint32x2_t = vmul_lane_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 1);
9266 }
9267
9268-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9269+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9270 /* { dg-final { cleanup-saved-temps } } */
9271
9272=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c'
9273--- old/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c 2010-07-29 15:38:15 +0000
9274+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c 2010-08-20 13:27:11 +0000
9275@@ -17,5 +17,5 @@
9276 out_float32x2_t = vmul_n_f32 (arg0_float32x2_t, arg1_float32_t);
9277 }
9278
9279-/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9280+/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9281 /* { dg-final { cleanup-saved-temps } } */
9282
9283=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c'
9284--- old/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c 2010-07-29 15:38:15 +0000
9285+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c 2010-08-20 13:27:11 +0000
9286@@ -17,5 +17,5 @@
9287 out_int16x4_t = vmul_n_s16 (arg0_int16x4_t, arg1_int16_t);
9288 }
9289
9290-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9291+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9292 /* { dg-final { cleanup-saved-temps } } */
9293
9294=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c'
9295--- old/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c 2010-07-29 15:38:15 +0000
9296+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c 2010-08-20 13:27:11 +0000
9297@@ -17,5 +17,5 @@
9298 out_int32x2_t = vmul_n_s32 (arg0_int32x2_t, arg1_int32_t);
9299 }
9300
9301-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9302+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9303 /* { dg-final { cleanup-saved-temps } } */
9304
9305=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c'
9306--- old/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c 2010-07-29 15:38:15 +0000
9307+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c 2010-08-20 13:27:11 +0000
9308@@ -17,5 +17,5 @@
9309 out_uint16x4_t = vmul_n_u16 (arg0_uint16x4_t, arg1_uint16_t);
9310 }
9311
9312-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9313+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9314 /* { dg-final { cleanup-saved-temps } } */
9315
9316=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c'
9317--- old/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c 2010-07-29 15:38:15 +0000
9318+++ new/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c 2010-08-20 13:27:11 +0000
9319@@ -17,5 +17,5 @@
9320 out_uint32x2_t = vmul_n_u32 (arg0_uint32x2_t, arg1_uint32_t);
9321 }
9322
9323-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9324+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9325 /* { dg-final { cleanup-saved-temps } } */
9326
9327=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulf32.c'
9328--- old/gcc/testsuite/gcc.target/arm/neon/vmulf32.c 2010-07-29 15:38:15 +0000
9329+++ new/gcc/testsuite/gcc.target/arm/neon/vmulf32.c 2010-08-20 13:27:11 +0000
9330@@ -17,5 +17,5 @@
9331 out_float32x2_t = vmul_f32 (arg0_float32x2_t, arg1_float32x2_t);
9332 }
9333
9334-/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9335+/* { dg-final { scan-assembler "vmul\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9336 /* { dg-final { cleanup-saved-temps } } */
9337
9338=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c'
9339--- old/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c 2010-07-29 15:38:15 +0000
9340+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c 2010-08-20 13:27:11 +0000
9341@@ -17,5 +17,5 @@
9342 out_int32x4_t = vmull_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
9343 }
9344
9345-/* { dg-final { scan-assembler "vmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9346+/* { dg-final { scan-assembler "vmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9347 /* { dg-final { cleanup-saved-temps } } */
9348
9349=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c'
9350--- old/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c 2010-07-29 15:38:15 +0000
9351+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c 2010-08-20 13:27:11 +0000
9352@@ -17,5 +17,5 @@
9353 out_int64x2_t = vmull_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
9354 }
9355
9356-/* { dg-final { scan-assembler "vmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9357+/* { dg-final { scan-assembler "vmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9358 /* { dg-final { cleanup-saved-temps } } */
9359
9360=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c'
9361--- old/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c 2010-07-29 15:38:15 +0000
9362+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c 2010-08-20 13:27:11 +0000
9363@@ -17,5 +17,5 @@
9364 out_uint32x4_t = vmull_lane_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 1);
9365 }
9366
9367-/* { dg-final { scan-assembler "vmull\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9368+/* { dg-final { scan-assembler "vmull\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9369 /* { dg-final { cleanup-saved-temps } } */
9370
9371=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c'
9372--- old/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c 2010-07-29 15:38:15 +0000
9373+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c 2010-08-20 13:27:11 +0000
9374@@ -17,5 +17,5 @@
9375 out_uint64x2_t = vmull_lane_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 1);
9376 }
9377
9378-/* { dg-final { scan-assembler "vmull\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9379+/* { dg-final { scan-assembler "vmull\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9380 /* { dg-final { cleanup-saved-temps } } */
9381
9382=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c'
9383--- old/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c 2010-07-29 15:38:15 +0000
9384+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c 2010-08-20 13:27:11 +0000
9385@@ -17,5 +17,5 @@
9386 out_int32x4_t = vmull_n_s16 (arg0_int16x4_t, arg1_int16_t);
9387 }
9388
9389-/* { dg-final { scan-assembler "vmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9390+/* { dg-final { scan-assembler "vmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9391 /* { dg-final { cleanup-saved-temps } } */
9392
9393=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c'
9394--- old/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c 2010-07-29 15:38:15 +0000
9395+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c 2010-08-20 13:27:11 +0000
9396@@ -17,5 +17,5 @@
9397 out_int64x2_t = vmull_n_s32 (arg0_int32x2_t, arg1_int32_t);
9398 }
9399
9400-/* { dg-final { scan-assembler "vmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9401+/* { dg-final { scan-assembler "vmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9402 /* { dg-final { cleanup-saved-temps } } */
9403
9404=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c'
9405--- old/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c 2010-07-29 15:38:15 +0000
9406+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c 2010-08-20 13:27:11 +0000
9407@@ -17,5 +17,5 @@
9408 out_uint32x4_t = vmull_n_u16 (arg0_uint16x4_t, arg1_uint16_t);
9409 }
9410
9411-/* { dg-final { scan-assembler "vmull\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9412+/* { dg-final { scan-assembler "vmull\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9413 /* { dg-final { cleanup-saved-temps } } */
9414
9415=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c'
9416--- old/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c 2010-07-29 15:38:15 +0000
9417+++ new/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c 2010-08-20 13:27:11 +0000
9418@@ -17,5 +17,5 @@
9419 out_uint64x2_t = vmull_n_u32 (arg0_uint32x2_t, arg1_uint32_t);
9420 }
9421
9422-/* { dg-final { scan-assembler "vmull\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9423+/* { dg-final { scan-assembler "vmull\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
9424 /* { dg-final { cleanup-saved-temps } } */
9425
9426=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmullp8.c'
9427--- old/gcc/testsuite/gcc.target/arm/neon/vmullp8.c 2010-07-29 15:38:15 +0000
9428+++ new/gcc/testsuite/gcc.target/arm/neon/vmullp8.c 2010-08-20 13:27:11 +0000
9429@@ -17,5 +17,5 @@
9430 out_poly16x8_t = vmull_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
9431 }
9432
9433-/* { dg-final { scan-assembler "vmull\.p8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9434+/* { dg-final { scan-assembler "vmull\.p8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9435 /* { dg-final { cleanup-saved-temps } } */
9436
9437=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulls16.c'
9438--- old/gcc/testsuite/gcc.target/arm/neon/vmulls16.c 2010-07-29 15:38:15 +0000
9439+++ new/gcc/testsuite/gcc.target/arm/neon/vmulls16.c 2010-08-20 13:27:11 +0000
9440@@ -17,5 +17,5 @@
9441 out_int32x4_t = vmull_s16 (arg0_int16x4_t, arg1_int16x4_t);
9442 }
9443
9444-/* { dg-final { scan-assembler "vmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9445+/* { dg-final { scan-assembler "vmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9446 /* { dg-final { cleanup-saved-temps } } */
9447
9448=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulls32.c'
9449--- old/gcc/testsuite/gcc.target/arm/neon/vmulls32.c 2010-07-29 15:38:15 +0000
9450+++ new/gcc/testsuite/gcc.target/arm/neon/vmulls32.c 2010-08-20 13:27:11 +0000
9451@@ -17,5 +17,5 @@
9452 out_int64x2_t = vmull_s32 (arg0_int32x2_t, arg1_int32x2_t);
9453 }
9454
9455-/* { dg-final { scan-assembler "vmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9456+/* { dg-final { scan-assembler "vmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9457 /* { dg-final { cleanup-saved-temps } } */
9458
9459=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulls8.c'
9460--- old/gcc/testsuite/gcc.target/arm/neon/vmulls8.c 2010-07-29 15:38:15 +0000
9461+++ new/gcc/testsuite/gcc.target/arm/neon/vmulls8.c 2010-08-20 13:27:11 +0000
9462@@ -17,5 +17,5 @@
9463 out_int16x8_t = vmull_s8 (arg0_int8x8_t, arg1_int8x8_t);
9464 }
9465
9466-/* { dg-final { scan-assembler "vmull\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9467+/* { dg-final { scan-assembler "vmull\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9468 /* { dg-final { cleanup-saved-temps } } */
9469
9470=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmullu16.c'
9471--- old/gcc/testsuite/gcc.target/arm/neon/vmullu16.c 2010-07-29 15:38:15 +0000
9472+++ new/gcc/testsuite/gcc.target/arm/neon/vmullu16.c 2010-08-20 13:27:11 +0000
9473@@ -17,5 +17,5 @@
9474 out_uint32x4_t = vmull_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
9475 }
9476
9477-/* { dg-final { scan-assembler "vmull\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9478+/* { dg-final { scan-assembler "vmull\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9479 /* { dg-final { cleanup-saved-temps } } */
9480
9481=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmullu32.c'
9482--- old/gcc/testsuite/gcc.target/arm/neon/vmullu32.c 2010-07-29 15:38:15 +0000
9483+++ new/gcc/testsuite/gcc.target/arm/neon/vmullu32.c 2010-08-20 13:27:11 +0000
9484@@ -17,5 +17,5 @@
9485 out_uint64x2_t = vmull_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
9486 }
9487
9488-/* { dg-final { scan-assembler "vmull\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9489+/* { dg-final { scan-assembler "vmull\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9490 /* { dg-final { cleanup-saved-temps } } */
9491
9492=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmullu8.c'
9493--- old/gcc/testsuite/gcc.target/arm/neon/vmullu8.c 2010-07-29 15:38:15 +0000
9494+++ new/gcc/testsuite/gcc.target/arm/neon/vmullu8.c 2010-08-20 13:27:11 +0000
9495@@ -17,5 +17,5 @@
9496 out_uint16x8_t = vmull_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
9497 }
9498
9499-/* { dg-final { scan-assembler "vmull\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9500+/* { dg-final { scan-assembler "vmull\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9501 /* { dg-final { cleanup-saved-temps } } */
9502
9503=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulp8.c'
9504--- old/gcc/testsuite/gcc.target/arm/neon/vmulp8.c 2010-07-29 15:38:15 +0000
9505+++ new/gcc/testsuite/gcc.target/arm/neon/vmulp8.c 2010-08-20 13:27:11 +0000
9506@@ -17,5 +17,5 @@
9507 out_poly8x8_t = vmul_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
9508 }
9509
9510-/* { dg-final { scan-assembler "vmul\.p8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9511+/* { dg-final { scan-assembler "vmul\.p8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9512 /* { dg-final { cleanup-saved-temps } } */
9513
9514=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmuls16.c'
9515--- old/gcc/testsuite/gcc.target/arm/neon/vmuls16.c 2010-07-29 15:38:15 +0000
9516+++ new/gcc/testsuite/gcc.target/arm/neon/vmuls16.c 2010-08-20 13:27:11 +0000
9517@@ -17,5 +17,5 @@
9518 out_int16x4_t = vmul_s16 (arg0_int16x4_t, arg1_int16x4_t);
9519 }
9520
9521-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9522+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9523 /* { dg-final { cleanup-saved-temps } } */
9524
9525=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmuls32.c'
9526--- old/gcc/testsuite/gcc.target/arm/neon/vmuls32.c 2010-07-29 15:38:15 +0000
9527+++ new/gcc/testsuite/gcc.target/arm/neon/vmuls32.c 2010-08-20 13:27:11 +0000
9528@@ -17,5 +17,5 @@
9529 out_int32x2_t = vmul_s32 (arg0_int32x2_t, arg1_int32x2_t);
9530 }
9531
9532-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9533+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9534 /* { dg-final { cleanup-saved-temps } } */
9535
9536=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmuls8.c'
9537--- old/gcc/testsuite/gcc.target/arm/neon/vmuls8.c 2010-07-29 15:38:15 +0000
9538+++ new/gcc/testsuite/gcc.target/arm/neon/vmuls8.c 2010-08-20 13:27:11 +0000
9539@@ -17,5 +17,5 @@
9540 out_int8x8_t = vmul_s8 (arg0_int8x8_t, arg1_int8x8_t);
9541 }
9542
9543-/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9544+/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9545 /* { dg-final { cleanup-saved-temps } } */
9546
9547=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulu16.c'
9548--- old/gcc/testsuite/gcc.target/arm/neon/vmulu16.c 2010-07-29 15:38:15 +0000
9549+++ new/gcc/testsuite/gcc.target/arm/neon/vmulu16.c 2010-08-20 13:27:11 +0000
9550@@ -17,5 +17,5 @@
9551 out_uint16x4_t = vmul_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
9552 }
9553
9554-/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9555+/* { dg-final { scan-assembler "vmul\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9556 /* { dg-final { cleanup-saved-temps } } */
9557
9558=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulu32.c'
9559--- old/gcc/testsuite/gcc.target/arm/neon/vmulu32.c 2010-07-29 15:38:15 +0000
9560+++ new/gcc/testsuite/gcc.target/arm/neon/vmulu32.c 2010-08-20 13:27:11 +0000
9561@@ -17,5 +17,5 @@
9562 out_uint32x2_t = vmul_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
9563 }
9564
9565-/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9566+/* { dg-final { scan-assembler "vmul\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9567 /* { dg-final { cleanup-saved-temps } } */
9568
9569=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmulu8.c'
9570--- old/gcc/testsuite/gcc.target/arm/neon/vmulu8.c 2010-07-29 15:38:15 +0000
9571+++ new/gcc/testsuite/gcc.target/arm/neon/vmulu8.c 2010-08-20 13:27:11 +0000
9572@@ -17,5 +17,5 @@
9573 out_uint8x8_t = vmul_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
9574 }
9575
9576-/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9577+/* { dg-final { scan-assembler "vmul\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9578 /* { dg-final { cleanup-saved-temps } } */
9579
9580=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c'
9581--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c 2010-07-29 15:38:15 +0000
9582+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c 2010-08-20 13:27:11 +0000
9583@@ -16,5 +16,5 @@
9584 out_poly8x16_t = vmvnq_p8 (arg0_poly8x16_t);
9585 }
9586
9587-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9588+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9589 /* { dg-final { cleanup-saved-temps } } */
9590
9591=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c'
9592--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c 2010-07-29 15:38:15 +0000
9593+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c 2010-08-20 13:27:11 +0000
9594@@ -16,5 +16,5 @@
9595 out_int16x8_t = vmvnq_s16 (arg0_int16x8_t);
9596 }
9597
9598-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9599+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9600 /* { dg-final { cleanup-saved-temps } } */
9601
9602=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c'
9603--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c 2010-07-29 15:38:15 +0000
9604+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c 2010-08-20 13:27:11 +0000
9605@@ -16,5 +16,5 @@
9606 out_int32x4_t = vmvnq_s32 (arg0_int32x4_t);
9607 }
9608
9609-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9610+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9611 /* { dg-final { cleanup-saved-temps } } */
9612
9613=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c'
9614--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c 2010-07-29 15:38:15 +0000
9615+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c 2010-08-20 13:27:11 +0000
9616@@ -16,5 +16,5 @@
9617 out_int8x16_t = vmvnq_s8 (arg0_int8x16_t);
9618 }
9619
9620-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9621+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9622 /* { dg-final { cleanup-saved-temps } } */
9623
9624=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c'
9625--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c 2010-07-29 15:38:15 +0000
9626+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c 2010-08-20 13:27:11 +0000
9627@@ -16,5 +16,5 @@
9628 out_uint16x8_t = vmvnq_u16 (arg0_uint16x8_t);
9629 }
9630
9631-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9632+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9633 /* { dg-final { cleanup-saved-temps } } */
9634
9635=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c'
9636--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c 2010-07-29 15:38:15 +0000
9637+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c 2010-08-20 13:27:11 +0000
9638@@ -16,5 +16,5 @@
9639 out_uint32x4_t = vmvnq_u32 (arg0_uint32x4_t);
9640 }
9641
9642-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9643+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9644 /* { dg-final { cleanup-saved-temps } } */
9645
9646=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c'
9647--- old/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c 2010-07-29 15:38:15 +0000
9648+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c 2010-08-20 13:27:11 +0000
9649@@ -16,5 +16,5 @@
9650 out_uint8x16_t = vmvnq_u8 (arg0_uint8x16_t);
9651 }
9652
9653-/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9654+/* { dg-final { scan-assembler "vmvn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9655 /* { dg-final { cleanup-saved-temps } } */
9656
9657=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnp8.c'
9658--- old/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c 2010-07-29 15:38:15 +0000
9659+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c 2010-08-20 13:27:11 +0000
9660@@ -16,5 +16,5 @@
9661 out_poly8x8_t = vmvn_p8 (arg0_poly8x8_t);
9662 }
9663
9664-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9665+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9666 /* { dg-final { cleanup-saved-temps } } */
9667
9668=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvns16.c'
9669--- old/gcc/testsuite/gcc.target/arm/neon/vmvns16.c 2010-07-29 15:38:15 +0000
9670+++ new/gcc/testsuite/gcc.target/arm/neon/vmvns16.c 2010-08-20 13:27:11 +0000
9671@@ -16,5 +16,5 @@
9672 out_int16x4_t = vmvn_s16 (arg0_int16x4_t);
9673 }
9674
9675-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9676+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9677 /* { dg-final { cleanup-saved-temps } } */
9678
9679=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvns32.c'
9680--- old/gcc/testsuite/gcc.target/arm/neon/vmvns32.c 2010-07-29 15:38:15 +0000
9681+++ new/gcc/testsuite/gcc.target/arm/neon/vmvns32.c 2010-08-20 13:27:11 +0000
9682@@ -16,5 +16,5 @@
9683 out_int32x2_t = vmvn_s32 (arg0_int32x2_t);
9684 }
9685
9686-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9687+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9688 /* { dg-final { cleanup-saved-temps } } */
9689
9690=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvns8.c'
9691--- old/gcc/testsuite/gcc.target/arm/neon/vmvns8.c 2010-07-29 15:38:15 +0000
9692+++ new/gcc/testsuite/gcc.target/arm/neon/vmvns8.c 2010-08-20 13:27:11 +0000
9693@@ -16,5 +16,5 @@
9694 out_int8x8_t = vmvn_s8 (arg0_int8x8_t);
9695 }
9696
9697-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9698+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9699 /* { dg-final { cleanup-saved-temps } } */
9700
9701=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnu16.c'
9702--- old/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c 2010-07-29 15:38:15 +0000
9703+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c 2010-08-20 13:27:11 +0000
9704@@ -16,5 +16,5 @@
9705 out_uint16x4_t = vmvn_u16 (arg0_uint16x4_t);
9706 }
9707
9708-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9709+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9710 /* { dg-final { cleanup-saved-temps } } */
9711
9712=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnu32.c'
9713--- old/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c 2010-07-29 15:38:15 +0000
9714+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c 2010-08-20 13:27:11 +0000
9715@@ -16,5 +16,5 @@
9716 out_uint32x2_t = vmvn_u32 (arg0_uint32x2_t);
9717 }
9718
9719-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9720+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9721 /* { dg-final { cleanup-saved-temps } } */
9722
9723=== modified file 'gcc/testsuite/gcc.target/arm/neon/vmvnu8.c'
9724--- old/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c 2010-07-29 15:38:15 +0000
9725+++ new/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c 2010-08-20 13:27:11 +0000
9726@@ -16,5 +16,5 @@
9727 out_uint8x8_t = vmvn_u8 (arg0_uint8x8_t);
9728 }
9729
9730-/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9731+/* { dg-final { scan-assembler "vmvn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9732 /* { dg-final { cleanup-saved-temps } } */
9733
9734=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegQf32.c'
9735--- old/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c 2010-07-29 15:38:15 +0000
9736+++ new/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c 2010-08-20 13:27:11 +0000
9737@@ -16,5 +16,5 @@
9738 out_float32x4_t = vnegq_f32 (arg0_float32x4_t);
9739 }
9740
9741-/* { dg-final { scan-assembler "vneg\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9742+/* { dg-final { scan-assembler "vneg\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9743 /* { dg-final { cleanup-saved-temps } } */
9744
9745=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegQs16.c'
9746--- old/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c 2010-07-29 15:38:15 +0000
9747+++ new/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c 2010-08-20 13:27:11 +0000
9748@@ -16,5 +16,5 @@
9749 out_int16x8_t = vnegq_s16 (arg0_int16x8_t);
9750 }
9751
9752-/* { dg-final { scan-assembler "vneg\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9753+/* { dg-final { scan-assembler "vneg\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9754 /* { dg-final { cleanup-saved-temps } } */
9755
9756=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegQs32.c'
9757--- old/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c 2010-07-29 15:38:15 +0000
9758+++ new/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c 2010-08-20 13:27:11 +0000
9759@@ -16,5 +16,5 @@
9760 out_int32x4_t = vnegq_s32 (arg0_int32x4_t);
9761 }
9762
9763-/* { dg-final { scan-assembler "vneg\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9764+/* { dg-final { scan-assembler "vneg\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9765 /* { dg-final { cleanup-saved-temps } } */
9766
9767=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegQs8.c'
9768--- old/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c 2010-07-29 15:38:15 +0000
9769+++ new/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c 2010-08-20 13:27:11 +0000
9770@@ -16,5 +16,5 @@
9771 out_int8x16_t = vnegq_s8 (arg0_int8x16_t);
9772 }
9773
9774-/* { dg-final { scan-assembler "vneg\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9775+/* { dg-final { scan-assembler "vneg\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9776 /* { dg-final { cleanup-saved-temps } } */
9777
9778=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegf32.c'
9779--- old/gcc/testsuite/gcc.target/arm/neon/vnegf32.c 2010-07-29 15:38:15 +0000
9780+++ new/gcc/testsuite/gcc.target/arm/neon/vnegf32.c 2010-08-20 13:27:11 +0000
9781@@ -16,5 +16,5 @@
9782 out_float32x2_t = vneg_f32 (arg0_float32x2_t);
9783 }
9784
9785-/* { dg-final { scan-assembler "vneg\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9786+/* { dg-final { scan-assembler "vneg\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9787 /* { dg-final { cleanup-saved-temps } } */
9788
9789=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegs16.c'
9790--- old/gcc/testsuite/gcc.target/arm/neon/vnegs16.c 2010-07-29 15:38:15 +0000
9791+++ new/gcc/testsuite/gcc.target/arm/neon/vnegs16.c 2010-08-20 13:27:11 +0000
9792@@ -16,5 +16,5 @@
9793 out_int16x4_t = vneg_s16 (arg0_int16x4_t);
9794 }
9795
9796-/* { dg-final { scan-assembler "vneg\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9797+/* { dg-final { scan-assembler "vneg\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9798 /* { dg-final { cleanup-saved-temps } } */
9799
9800=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegs32.c'
9801--- old/gcc/testsuite/gcc.target/arm/neon/vnegs32.c 2010-07-29 15:38:15 +0000
9802+++ new/gcc/testsuite/gcc.target/arm/neon/vnegs32.c 2010-08-20 13:27:11 +0000
9803@@ -16,5 +16,5 @@
9804 out_int32x2_t = vneg_s32 (arg0_int32x2_t);
9805 }
9806
9807-/* { dg-final { scan-assembler "vneg\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9808+/* { dg-final { scan-assembler "vneg\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9809 /* { dg-final { cleanup-saved-temps } } */
9810
9811=== modified file 'gcc/testsuite/gcc.target/arm/neon/vnegs8.c'
9812--- old/gcc/testsuite/gcc.target/arm/neon/vnegs8.c 2010-07-29 15:38:15 +0000
9813+++ new/gcc/testsuite/gcc.target/arm/neon/vnegs8.c 2010-08-20 13:27:11 +0000
9814@@ -16,5 +16,5 @@
9815 out_int8x8_t = vneg_s8 (arg0_int8x8_t);
9816 }
9817
9818-/* { dg-final { scan-assembler "vneg\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9819+/* { dg-final { scan-assembler "vneg\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9820 /* { dg-final { cleanup-saved-temps } } */
9821
9822=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQs16.c'
9823--- old/gcc/testsuite/gcc.target/arm/neon/vornQs16.c 2010-07-29 15:38:15 +0000
9824+++ new/gcc/testsuite/gcc.target/arm/neon/vornQs16.c 2010-08-20 13:27:11 +0000
9825@@ -17,5 +17,5 @@
9826 out_int16x8_t = vornq_s16 (arg0_int16x8_t, arg1_int16x8_t);
9827 }
9828
9829-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9830+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9831 /* { dg-final { cleanup-saved-temps } } */
9832
9833=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQs32.c'
9834--- old/gcc/testsuite/gcc.target/arm/neon/vornQs32.c 2010-07-29 15:38:15 +0000
9835+++ new/gcc/testsuite/gcc.target/arm/neon/vornQs32.c 2010-08-20 13:27:11 +0000
9836@@ -17,5 +17,5 @@
9837 out_int32x4_t = vornq_s32 (arg0_int32x4_t, arg1_int32x4_t);
9838 }
9839
9840-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9841+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9842 /* { dg-final { cleanup-saved-temps } } */
9843
9844=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQs64.c'
9845--- old/gcc/testsuite/gcc.target/arm/neon/vornQs64.c 2010-07-29 15:38:15 +0000
9846+++ new/gcc/testsuite/gcc.target/arm/neon/vornQs64.c 2010-08-20 13:27:11 +0000
9847@@ -17,5 +17,5 @@
9848 out_int64x2_t = vornq_s64 (arg0_int64x2_t, arg1_int64x2_t);
9849 }
9850
9851-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9852+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9853 /* { dg-final { cleanup-saved-temps } } */
9854
9855=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQs8.c'
9856--- old/gcc/testsuite/gcc.target/arm/neon/vornQs8.c 2010-07-29 15:38:15 +0000
9857+++ new/gcc/testsuite/gcc.target/arm/neon/vornQs8.c 2010-08-20 13:27:11 +0000
9858@@ -17,5 +17,5 @@
9859 out_int8x16_t = vornq_s8 (arg0_int8x16_t, arg1_int8x16_t);
9860 }
9861
9862-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9863+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9864 /* { dg-final { cleanup-saved-temps } } */
9865
9866=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQu16.c'
9867--- old/gcc/testsuite/gcc.target/arm/neon/vornQu16.c 2010-07-29 15:38:15 +0000
9868+++ new/gcc/testsuite/gcc.target/arm/neon/vornQu16.c 2010-08-20 13:27:11 +0000
9869@@ -17,5 +17,5 @@
9870 out_uint16x8_t = vornq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
9871 }
9872
9873-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9874+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9875 /* { dg-final { cleanup-saved-temps } } */
9876
9877=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQu32.c'
9878--- old/gcc/testsuite/gcc.target/arm/neon/vornQu32.c 2010-07-29 15:38:15 +0000
9879+++ new/gcc/testsuite/gcc.target/arm/neon/vornQu32.c 2010-08-20 13:27:11 +0000
9880@@ -17,5 +17,5 @@
9881 out_uint32x4_t = vornq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
9882 }
9883
9884-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9885+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9886 /* { dg-final { cleanup-saved-temps } } */
9887
9888=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQu64.c'
9889--- old/gcc/testsuite/gcc.target/arm/neon/vornQu64.c 2010-07-29 15:38:15 +0000
9890+++ new/gcc/testsuite/gcc.target/arm/neon/vornQu64.c 2010-08-20 13:27:11 +0000
9891@@ -17,5 +17,5 @@
9892 out_uint64x2_t = vornq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
9893 }
9894
9895-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9896+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9897 /* { dg-final { cleanup-saved-temps } } */
9898
9899=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornQu8.c'
9900--- old/gcc/testsuite/gcc.target/arm/neon/vornQu8.c 2010-07-29 15:38:15 +0000
9901+++ new/gcc/testsuite/gcc.target/arm/neon/vornQu8.c 2010-08-20 13:27:11 +0000
9902@@ -17,5 +17,5 @@
9903 out_uint8x16_t = vornq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
9904 }
9905
9906-/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9907+/* { dg-final { scan-assembler "vorn\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9908 /* { dg-final { cleanup-saved-temps } } */
9909
9910=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorns16.c'
9911--- old/gcc/testsuite/gcc.target/arm/neon/vorns16.c 2010-07-29 15:38:15 +0000
9912+++ new/gcc/testsuite/gcc.target/arm/neon/vorns16.c 2010-08-20 13:27:11 +0000
9913@@ -17,5 +17,5 @@
9914 out_int16x4_t = vorn_s16 (arg0_int16x4_t, arg1_int16x4_t);
9915 }
9916
9917-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9918+/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9919 /* { dg-final { cleanup-saved-temps } } */
9920
9921=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorns32.c'
9922--- old/gcc/testsuite/gcc.target/arm/neon/vorns32.c 2010-07-29 15:38:15 +0000
9923+++ new/gcc/testsuite/gcc.target/arm/neon/vorns32.c 2010-08-20 13:27:11 +0000
9924@@ -17,5 +17,5 @@
9925 out_int32x2_t = vorn_s32 (arg0_int32x2_t, arg1_int32x2_t);
9926 }
9927
9928-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9929+/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9930 /* { dg-final { cleanup-saved-temps } } */
9931
9932=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorns8.c'
9933--- old/gcc/testsuite/gcc.target/arm/neon/vorns8.c 2010-07-29 15:38:15 +0000
9934+++ new/gcc/testsuite/gcc.target/arm/neon/vorns8.c 2010-08-20 13:27:11 +0000
9935@@ -17,5 +17,5 @@
9936 out_int8x8_t = vorn_s8 (arg0_int8x8_t, arg1_int8x8_t);
9937 }
9938
9939-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9940+/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9941 /* { dg-final { cleanup-saved-temps } } */
9942
9943=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornu16.c'
9944--- old/gcc/testsuite/gcc.target/arm/neon/vornu16.c 2010-07-29 15:38:15 +0000
9945+++ new/gcc/testsuite/gcc.target/arm/neon/vornu16.c 2010-08-20 13:27:11 +0000
9946@@ -17,5 +17,5 @@
9947 out_uint16x4_t = vorn_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
9948 }
9949
9950-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9951+/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9952 /* { dg-final { cleanup-saved-temps } } */
9953
9954=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornu32.c'
9955--- old/gcc/testsuite/gcc.target/arm/neon/vornu32.c 2010-07-29 15:38:15 +0000
9956+++ new/gcc/testsuite/gcc.target/arm/neon/vornu32.c 2010-08-20 13:27:11 +0000
9957@@ -17,5 +17,5 @@
9958 out_uint32x2_t = vorn_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
9959 }
9960
9961-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9962+/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9963 /* { dg-final { cleanup-saved-temps } } */
9964
9965=== modified file 'gcc/testsuite/gcc.target/arm/neon/vornu8.c'
9966--- old/gcc/testsuite/gcc.target/arm/neon/vornu8.c 2010-07-29 15:38:15 +0000
9967+++ new/gcc/testsuite/gcc.target/arm/neon/vornu8.c 2010-08-20 13:27:11 +0000
9968@@ -17,5 +17,5 @@
9969 out_uint8x8_t = vorn_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
9970 }
9971
9972-/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9973+/* { dg-final { scan-assembler "vorn\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9974 /* { dg-final { cleanup-saved-temps } } */
9975
9976=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQs16.c'
9977--- old/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c 2010-07-29 15:38:15 +0000
9978+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c 2010-08-20 13:27:11 +0000
9979@@ -17,5 +17,5 @@
9980 out_int16x8_t = vorrq_s16 (arg0_int16x8_t, arg1_int16x8_t);
9981 }
9982
9983-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9984+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9985 /* { dg-final { cleanup-saved-temps } } */
9986
9987=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQs32.c'
9988--- old/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c 2010-07-29 15:38:15 +0000
9989+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c 2010-08-20 13:27:11 +0000
9990@@ -17,5 +17,5 @@
9991 out_int32x4_t = vorrq_s32 (arg0_int32x4_t, arg1_int32x4_t);
9992 }
9993
9994-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
9995+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
9996 /* { dg-final { cleanup-saved-temps } } */
9997
9998=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQs64.c'
9999--- old/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c 2010-07-29 15:38:15 +0000
10000+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c 2010-08-20 13:27:11 +0000
10001@@ -17,5 +17,5 @@
10002 out_int64x2_t = vorrq_s64 (arg0_int64x2_t, arg1_int64x2_t);
10003 }
10004
10005-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10006+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10007 /* { dg-final { cleanup-saved-temps } } */
10008
10009=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQs8.c'
10010--- old/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c 2010-07-29 15:38:15 +0000
10011+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c 2010-08-20 13:27:11 +0000
10012@@ -17,5 +17,5 @@
10013 out_int8x16_t = vorrq_s8 (arg0_int8x16_t, arg1_int8x16_t);
10014 }
10015
10016-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10017+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10018 /* { dg-final { cleanup-saved-temps } } */
10019
10020=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQu16.c'
10021--- old/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c 2010-07-29 15:38:15 +0000
10022+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c 2010-08-20 13:27:11 +0000
10023@@ -17,5 +17,5 @@
10024 out_uint16x8_t = vorrq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
10025 }
10026
10027-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10028+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10029 /* { dg-final { cleanup-saved-temps } } */
10030
10031=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQu32.c'
10032--- old/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c 2010-07-29 15:38:15 +0000
10033+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c 2010-08-20 13:27:11 +0000
10034@@ -17,5 +17,5 @@
10035 out_uint32x4_t = vorrq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
10036 }
10037
10038-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10039+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10040 /* { dg-final { cleanup-saved-temps } } */
10041
10042=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQu64.c'
10043--- old/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c 2010-07-29 15:38:15 +0000
10044+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c 2010-08-20 13:27:11 +0000
10045@@ -17,5 +17,5 @@
10046 out_uint64x2_t = vorrq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
10047 }
10048
10049-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10050+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10051 /* { dg-final { cleanup-saved-temps } } */
10052
10053=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrQu8.c'
10054--- old/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c 2010-07-29 15:38:15 +0000
10055+++ new/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c 2010-08-20 13:27:11 +0000
10056@@ -17,5 +17,5 @@
10057 out_uint8x16_t = vorrq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
10058 }
10059
10060-/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10061+/* { dg-final { scan-assembler "vorr\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10062 /* { dg-final { cleanup-saved-temps } } */
10063
10064=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrs16.c'
10065--- old/gcc/testsuite/gcc.target/arm/neon/vorrs16.c 2010-07-29 15:38:15 +0000
10066+++ new/gcc/testsuite/gcc.target/arm/neon/vorrs16.c 2010-08-20 13:27:11 +0000
10067@@ -17,5 +17,5 @@
10068 out_int16x4_t = vorr_s16 (arg0_int16x4_t, arg1_int16x4_t);
10069 }
10070
10071-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10072+/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10073 /* { dg-final { cleanup-saved-temps } } */
10074
10075=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrs32.c'
10076--- old/gcc/testsuite/gcc.target/arm/neon/vorrs32.c 2010-07-29 15:38:15 +0000
10077+++ new/gcc/testsuite/gcc.target/arm/neon/vorrs32.c 2010-08-20 13:27:11 +0000
10078@@ -17,5 +17,5 @@
10079 out_int32x2_t = vorr_s32 (arg0_int32x2_t, arg1_int32x2_t);
10080 }
10081
10082-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10083+/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10084 /* { dg-final { cleanup-saved-temps } } */
10085
10086=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorrs8.c'
10087--- old/gcc/testsuite/gcc.target/arm/neon/vorrs8.c 2010-07-29 15:38:15 +0000
10088+++ new/gcc/testsuite/gcc.target/arm/neon/vorrs8.c 2010-08-20 13:27:11 +0000
10089@@ -17,5 +17,5 @@
10090 out_int8x8_t = vorr_s8 (arg0_int8x8_t, arg1_int8x8_t);
10091 }
10092
10093-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10094+/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10095 /* { dg-final { cleanup-saved-temps } } */
10096
10097=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorru16.c'
10098--- old/gcc/testsuite/gcc.target/arm/neon/vorru16.c 2010-07-29 15:38:15 +0000
10099+++ new/gcc/testsuite/gcc.target/arm/neon/vorru16.c 2010-08-20 13:27:11 +0000
10100@@ -17,5 +17,5 @@
10101 out_uint16x4_t = vorr_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
10102 }
10103
10104-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10105+/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10106 /* { dg-final { cleanup-saved-temps } } */
10107
10108=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorru32.c'
10109--- old/gcc/testsuite/gcc.target/arm/neon/vorru32.c 2010-07-29 15:38:15 +0000
10110+++ new/gcc/testsuite/gcc.target/arm/neon/vorru32.c 2010-08-20 13:27:11 +0000
10111@@ -17,5 +17,5 @@
10112 out_uint32x2_t = vorr_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
10113 }
10114
10115-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10116+/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10117 /* { dg-final { cleanup-saved-temps } } */
10118
10119=== modified file 'gcc/testsuite/gcc.target/arm/neon/vorru8.c'
10120--- old/gcc/testsuite/gcc.target/arm/neon/vorru8.c 2010-07-29 15:38:15 +0000
10121+++ new/gcc/testsuite/gcc.target/arm/neon/vorru8.c 2010-08-20 13:27:11 +0000
10122@@ -17,5 +17,5 @@
10123 out_uint8x8_t = vorr_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
10124 }
10125
10126-/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10127+/* { dg-final { scan-assembler "vorr\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10128 /* { dg-final { cleanup-saved-temps } } */
10129
10130=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c'
10131--- old/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c 2010-07-29 15:38:15 +0000
10132+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c 2010-08-20 13:27:11 +0000
10133@@ -17,5 +17,5 @@
10134 out_int32x4_t = vpadalq_s16 (arg0_int32x4_t, arg1_int16x8_t);
10135 }
10136
10137-/* { dg-final { scan-assembler "vpadal\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10138+/* { dg-final { scan-assembler "vpadal\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10139 /* { dg-final { cleanup-saved-temps } } */
10140
10141=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c'
10142--- old/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c 2010-07-29 15:38:15 +0000
10143+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c 2010-08-20 13:27:11 +0000
10144@@ -17,5 +17,5 @@
10145 out_int64x2_t = vpadalq_s32 (arg0_int64x2_t, arg1_int32x4_t);
10146 }
10147
10148-/* { dg-final { scan-assembler "vpadal\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10149+/* { dg-final { scan-assembler "vpadal\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10150 /* { dg-final { cleanup-saved-temps } } */
10151
10152=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c'
10153--- old/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c 2010-07-29 15:38:15 +0000
10154+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c 2010-08-20 13:27:11 +0000
10155@@ -17,5 +17,5 @@
10156 out_int16x8_t = vpadalq_s8 (arg0_int16x8_t, arg1_int8x16_t);
10157 }
10158
10159-/* { dg-final { scan-assembler "vpadal\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10160+/* { dg-final { scan-assembler "vpadal\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10161 /* { dg-final { cleanup-saved-temps } } */
10162
10163=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c'
10164--- old/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c 2010-07-29 15:38:15 +0000
10165+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c 2010-08-20 13:27:11 +0000
10166@@ -17,5 +17,5 @@
10167 out_uint32x4_t = vpadalq_u16 (arg0_uint32x4_t, arg1_uint16x8_t);
10168 }
10169
10170-/* { dg-final { scan-assembler "vpadal\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10171+/* { dg-final { scan-assembler "vpadal\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10172 /* { dg-final { cleanup-saved-temps } } */
10173
10174=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c'
10175--- old/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c 2010-07-29 15:38:15 +0000
10176+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c 2010-08-20 13:27:11 +0000
10177@@ -17,5 +17,5 @@
10178 out_uint64x2_t = vpadalq_u32 (arg0_uint64x2_t, arg1_uint32x4_t);
10179 }
10180
10181-/* { dg-final { scan-assembler "vpadal\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10182+/* { dg-final { scan-assembler "vpadal\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10183 /* { dg-final { cleanup-saved-temps } } */
10184
10185=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c'
10186--- old/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c 2010-07-29 15:38:15 +0000
10187+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c 2010-08-20 13:27:11 +0000
10188@@ -17,5 +17,5 @@
10189 out_uint16x8_t = vpadalq_u8 (arg0_uint16x8_t, arg1_uint8x16_t);
10190 }
10191
10192-/* { dg-final { scan-assembler "vpadal\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10193+/* { dg-final { scan-assembler "vpadal\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10194 /* { dg-final { cleanup-saved-temps } } */
10195
10196=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadals16.c'
10197--- old/gcc/testsuite/gcc.target/arm/neon/vpadals16.c 2010-07-29 15:38:15 +0000
10198+++ new/gcc/testsuite/gcc.target/arm/neon/vpadals16.c 2010-08-20 13:27:11 +0000
10199@@ -17,5 +17,5 @@
10200 out_int32x2_t = vpadal_s16 (arg0_int32x2_t, arg1_int16x4_t);
10201 }
10202
10203-/* { dg-final { scan-assembler "vpadal\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10204+/* { dg-final { scan-assembler "vpadal\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10205 /* { dg-final { cleanup-saved-temps } } */
10206
10207=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadals32.c'
10208--- old/gcc/testsuite/gcc.target/arm/neon/vpadals32.c 2010-07-29 15:38:15 +0000
10209+++ new/gcc/testsuite/gcc.target/arm/neon/vpadals32.c 2010-08-20 13:27:11 +0000
10210@@ -17,5 +17,5 @@
10211 out_int64x1_t = vpadal_s32 (arg0_int64x1_t, arg1_int32x2_t);
10212 }
10213
10214-/* { dg-final { scan-assembler "vpadal\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10215+/* { dg-final { scan-assembler "vpadal\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10216 /* { dg-final { cleanup-saved-temps } } */
10217
10218=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadals8.c'
10219--- old/gcc/testsuite/gcc.target/arm/neon/vpadals8.c 2010-07-29 15:38:15 +0000
10220+++ new/gcc/testsuite/gcc.target/arm/neon/vpadals8.c 2010-08-20 13:27:11 +0000
10221@@ -17,5 +17,5 @@
10222 out_int16x4_t = vpadal_s8 (arg0_int16x4_t, arg1_int8x8_t);
10223 }
10224
10225-/* { dg-final { scan-assembler "vpadal\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10226+/* { dg-final { scan-assembler "vpadal\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10227 /* { dg-final { cleanup-saved-temps } } */
10228
10229=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalu16.c'
10230--- old/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c 2010-07-29 15:38:15 +0000
10231+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c 2010-08-20 13:27:11 +0000
10232@@ -17,5 +17,5 @@
10233 out_uint32x2_t = vpadal_u16 (arg0_uint32x2_t, arg1_uint16x4_t);
10234 }
10235
10236-/* { dg-final { scan-assembler "vpadal\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10237+/* { dg-final { scan-assembler "vpadal\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10238 /* { dg-final { cleanup-saved-temps } } */
10239
10240=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalu32.c'
10241--- old/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c 2010-07-29 15:38:15 +0000
10242+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c 2010-08-20 13:27:11 +0000
10243@@ -17,5 +17,5 @@
10244 out_uint64x1_t = vpadal_u32 (arg0_uint64x1_t, arg1_uint32x2_t);
10245 }
10246
10247-/* { dg-final { scan-assembler "vpadal\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10248+/* { dg-final { scan-assembler "vpadal\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10249 /* { dg-final { cleanup-saved-temps } } */
10250
10251=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadalu8.c'
10252--- old/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c 2010-07-29 15:38:15 +0000
10253+++ new/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c 2010-08-20 13:27:11 +0000
10254@@ -17,5 +17,5 @@
10255 out_uint16x4_t = vpadal_u8 (arg0_uint16x4_t, arg1_uint8x8_t);
10256 }
10257
10258-/* { dg-final { scan-assembler "vpadal\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10259+/* { dg-final { scan-assembler "vpadal\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10260 /* { dg-final { cleanup-saved-temps } } */
10261
10262=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddf32.c'
10263--- old/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c 2010-07-29 15:38:15 +0000
10264+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c 2010-08-20 13:27:11 +0000
10265@@ -17,5 +17,5 @@
10266 out_float32x2_t = vpadd_f32 (arg0_float32x2_t, arg1_float32x2_t);
10267 }
10268
10269-/* { dg-final { scan-assembler "vpadd\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10270+/* { dg-final { scan-assembler "vpadd\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10271 /* { dg-final { cleanup-saved-temps } } */
10272
10273=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c'
10274--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c 2010-07-29 15:38:15 +0000
10275+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c 2010-08-20 13:27:11 +0000
10276@@ -16,5 +16,5 @@
10277 out_int32x4_t = vpaddlq_s16 (arg0_int16x8_t);
10278 }
10279
10280-/* { dg-final { scan-assembler "vpaddl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10281+/* { dg-final { scan-assembler "vpaddl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10282 /* { dg-final { cleanup-saved-temps } } */
10283
10284=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c'
10285--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c 2010-07-29 15:38:15 +0000
10286+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c 2010-08-20 13:27:11 +0000
10287@@ -16,5 +16,5 @@
10288 out_int64x2_t = vpaddlq_s32 (arg0_int32x4_t);
10289 }
10290
10291-/* { dg-final { scan-assembler "vpaddl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10292+/* { dg-final { scan-assembler "vpaddl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10293 /* { dg-final { cleanup-saved-temps } } */
10294
10295=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c'
10296--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c 2010-07-29 15:38:15 +0000
10297+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c 2010-08-20 13:27:11 +0000
10298@@ -16,5 +16,5 @@
10299 out_int16x8_t = vpaddlq_s8 (arg0_int8x16_t);
10300 }
10301
10302-/* { dg-final { scan-assembler "vpaddl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10303+/* { dg-final { scan-assembler "vpaddl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10304 /* { dg-final { cleanup-saved-temps } } */
10305
10306=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c'
10307--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c 2010-07-29 15:38:15 +0000
10308+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c 2010-08-20 13:27:11 +0000
10309@@ -16,5 +16,5 @@
10310 out_uint32x4_t = vpaddlq_u16 (arg0_uint16x8_t);
10311 }
10312
10313-/* { dg-final { scan-assembler "vpaddl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10314+/* { dg-final { scan-assembler "vpaddl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10315 /* { dg-final { cleanup-saved-temps } } */
10316
10317=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c'
10318--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c 2010-07-29 15:38:15 +0000
10319+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c 2010-08-20 13:27:11 +0000
10320@@ -16,5 +16,5 @@
10321 out_uint64x2_t = vpaddlq_u32 (arg0_uint32x4_t);
10322 }
10323
10324-/* { dg-final { scan-assembler "vpaddl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10325+/* { dg-final { scan-assembler "vpaddl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10326 /* { dg-final { cleanup-saved-temps } } */
10327
10328=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c'
10329--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c 2010-07-29 15:38:15 +0000
10330+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c 2010-08-20 13:27:11 +0000
10331@@ -16,5 +16,5 @@
10332 out_uint16x8_t = vpaddlq_u8 (arg0_uint8x16_t);
10333 }
10334
10335-/* { dg-final { scan-assembler "vpaddl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10336+/* { dg-final { scan-assembler "vpaddl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10337 /* { dg-final { cleanup-saved-temps } } */
10338
10339=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddls16.c'
10340--- old/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c 2010-07-29 15:38:15 +0000
10341+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c 2010-08-20 13:27:11 +0000
10342@@ -16,5 +16,5 @@
10343 out_int32x2_t = vpaddl_s16 (arg0_int16x4_t);
10344 }
10345
10346-/* { dg-final { scan-assembler "vpaddl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10347+/* { dg-final { scan-assembler "vpaddl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10348 /* { dg-final { cleanup-saved-temps } } */
10349
10350=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddls32.c'
10351--- old/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c 2010-07-29 15:38:15 +0000
10352+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c 2010-08-20 13:27:11 +0000
10353@@ -16,5 +16,5 @@
10354 out_int64x1_t = vpaddl_s32 (arg0_int32x2_t);
10355 }
10356
10357-/* { dg-final { scan-assembler "vpaddl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10358+/* { dg-final { scan-assembler "vpaddl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10359 /* { dg-final { cleanup-saved-temps } } */
10360
10361=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddls8.c'
10362--- old/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c 2010-07-29 15:38:15 +0000
10363+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c 2010-08-20 13:27:11 +0000
10364@@ -16,5 +16,5 @@
10365 out_int16x4_t = vpaddl_s8 (arg0_int8x8_t);
10366 }
10367
10368-/* { dg-final { scan-assembler "vpaddl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10369+/* { dg-final { scan-assembler "vpaddl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10370 /* { dg-final { cleanup-saved-temps } } */
10371
10372=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c'
10373--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c 2010-07-29 15:38:15 +0000
10374+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c 2010-08-20 13:27:11 +0000
10375@@ -16,5 +16,5 @@
10376 out_uint32x2_t = vpaddl_u16 (arg0_uint16x4_t);
10377 }
10378
10379-/* { dg-final { scan-assembler "vpaddl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10380+/* { dg-final { scan-assembler "vpaddl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10381 /* { dg-final { cleanup-saved-temps } } */
10382
10383=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c'
10384--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c 2010-07-29 15:38:15 +0000
10385+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c 2010-08-20 13:27:11 +0000
10386@@ -16,5 +16,5 @@
10387 out_uint64x1_t = vpaddl_u32 (arg0_uint32x2_t);
10388 }
10389
10390-/* { dg-final { scan-assembler "vpaddl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10391+/* { dg-final { scan-assembler "vpaddl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10392 /* { dg-final { cleanup-saved-temps } } */
10393
10394=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c'
10395--- old/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c 2010-07-29 15:38:15 +0000
10396+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c 2010-08-20 13:27:11 +0000
10397@@ -16,5 +16,5 @@
10398 out_uint16x4_t = vpaddl_u8 (arg0_uint8x8_t);
10399 }
10400
10401-/* { dg-final { scan-assembler "vpaddl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10402+/* { dg-final { scan-assembler "vpaddl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10403 /* { dg-final { cleanup-saved-temps } } */
10404
10405=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadds16.c'
10406--- old/gcc/testsuite/gcc.target/arm/neon/vpadds16.c 2010-07-29 15:38:15 +0000
10407+++ new/gcc/testsuite/gcc.target/arm/neon/vpadds16.c 2010-08-20 13:27:11 +0000
10408@@ -17,5 +17,5 @@
10409 out_int16x4_t = vpadd_s16 (arg0_int16x4_t, arg1_int16x4_t);
10410 }
10411
10412-/* { dg-final { scan-assembler "vpadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10413+/* { dg-final { scan-assembler "vpadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10414 /* { dg-final { cleanup-saved-temps } } */
10415
10416=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadds32.c'
10417--- old/gcc/testsuite/gcc.target/arm/neon/vpadds32.c 2010-07-29 15:38:15 +0000
10418+++ new/gcc/testsuite/gcc.target/arm/neon/vpadds32.c 2010-08-20 13:27:11 +0000
10419@@ -17,5 +17,5 @@
10420 out_int32x2_t = vpadd_s32 (arg0_int32x2_t, arg1_int32x2_t);
10421 }
10422
10423-/* { dg-final { scan-assembler "vpadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10424+/* { dg-final { scan-assembler "vpadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10425 /* { dg-final { cleanup-saved-temps } } */
10426
10427=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpadds8.c'
10428--- old/gcc/testsuite/gcc.target/arm/neon/vpadds8.c 2010-07-29 15:38:15 +0000
10429+++ new/gcc/testsuite/gcc.target/arm/neon/vpadds8.c 2010-08-20 13:27:11 +0000
10430@@ -17,5 +17,5 @@
10431 out_int8x8_t = vpadd_s8 (arg0_int8x8_t, arg1_int8x8_t);
10432 }
10433
10434-/* { dg-final { scan-assembler "vpadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10435+/* { dg-final { scan-assembler "vpadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10436 /* { dg-final { cleanup-saved-temps } } */
10437
10438=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddu16.c'
10439--- old/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c 2010-07-29 15:38:15 +0000
10440+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c 2010-08-20 13:27:11 +0000
10441@@ -17,5 +17,5 @@
10442 out_uint16x4_t = vpadd_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
10443 }
10444
10445-/* { dg-final { scan-assembler "vpadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10446+/* { dg-final { scan-assembler "vpadd\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10447 /* { dg-final { cleanup-saved-temps } } */
10448
10449=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddu32.c'
10450--- old/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c 2010-07-29 15:38:15 +0000
10451+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c 2010-08-20 13:27:11 +0000
10452@@ -17,5 +17,5 @@
10453 out_uint32x2_t = vpadd_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
10454 }
10455
10456-/* { dg-final { scan-assembler "vpadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10457+/* { dg-final { scan-assembler "vpadd\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10458 /* { dg-final { cleanup-saved-temps } } */
10459
10460=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpaddu8.c'
10461--- old/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c 2010-07-29 15:38:15 +0000
10462+++ new/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c 2010-08-20 13:27:11 +0000
10463@@ -17,5 +17,5 @@
10464 out_uint8x8_t = vpadd_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
10465 }
10466
10467-/* { dg-final { scan-assembler "vpadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10468+/* { dg-final { scan-assembler "vpadd\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10469 /* { dg-final { cleanup-saved-temps } } */
10470
10471=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c'
10472--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c 2010-07-29 15:38:15 +0000
10473+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c 2010-08-20 13:27:11 +0000
10474@@ -17,5 +17,5 @@
10475 out_float32x2_t = vpmax_f32 (arg0_float32x2_t, arg1_float32x2_t);
10476 }
10477
10478-/* { dg-final { scan-assembler "vpmax\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10479+/* { dg-final { scan-assembler "vpmax\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10480 /* { dg-final { cleanup-saved-temps } } */
10481
10482=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c'
10483--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c 2010-07-29 15:38:15 +0000
10484+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c 2010-08-20 13:27:11 +0000
10485@@ -17,5 +17,5 @@
10486 out_int16x4_t = vpmax_s16 (arg0_int16x4_t, arg1_int16x4_t);
10487 }
10488
10489-/* { dg-final { scan-assembler "vpmax\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10490+/* { dg-final { scan-assembler "vpmax\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10491 /* { dg-final { cleanup-saved-temps } } */
10492
10493=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c'
10494--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c 2010-07-29 15:38:15 +0000
10495+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c 2010-08-20 13:27:11 +0000
10496@@ -17,5 +17,5 @@
10497 out_int32x2_t = vpmax_s32 (arg0_int32x2_t, arg1_int32x2_t);
10498 }
10499
10500-/* { dg-final { scan-assembler "vpmax\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10501+/* { dg-final { scan-assembler "vpmax\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10502 /* { dg-final { cleanup-saved-temps } } */
10503
10504=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c'
10505--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c 2010-07-29 15:38:15 +0000
10506+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c 2010-08-20 13:27:11 +0000
10507@@ -17,5 +17,5 @@
10508 out_int8x8_t = vpmax_s8 (arg0_int8x8_t, arg1_int8x8_t);
10509 }
10510
10511-/* { dg-final { scan-assembler "vpmax\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10512+/* { dg-final { scan-assembler "vpmax\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10513 /* { dg-final { cleanup-saved-temps } } */
10514
10515=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c'
10516--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c 2010-07-29 15:38:15 +0000
10517+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c 2010-08-20 13:27:11 +0000
10518@@ -17,5 +17,5 @@
10519 out_uint16x4_t = vpmax_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
10520 }
10521
10522-/* { dg-final { scan-assembler "vpmax\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10523+/* { dg-final { scan-assembler "vpmax\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10524 /* { dg-final { cleanup-saved-temps } } */
10525
10526=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c'
10527--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c 2010-07-29 15:38:15 +0000
10528+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c 2010-08-20 13:27:11 +0000
10529@@ -17,5 +17,5 @@
10530 out_uint32x2_t = vpmax_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
10531 }
10532
10533-/* { dg-final { scan-assembler "vpmax\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10534+/* { dg-final { scan-assembler "vpmax\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10535 /* { dg-final { cleanup-saved-temps } } */
10536
10537=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c'
10538--- old/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c 2010-07-29 15:38:15 +0000
10539+++ new/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c 2010-08-20 13:27:11 +0000
10540@@ -17,5 +17,5 @@
10541 out_uint8x8_t = vpmax_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
10542 }
10543
10544-/* { dg-final { scan-assembler "vpmax\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10545+/* { dg-final { scan-assembler "vpmax\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10546 /* { dg-final { cleanup-saved-temps } } */
10547
10548=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpminf32.c'
10549--- old/gcc/testsuite/gcc.target/arm/neon/vpminf32.c 2010-07-29 15:38:15 +0000
10550+++ new/gcc/testsuite/gcc.target/arm/neon/vpminf32.c 2010-08-20 13:27:11 +0000
10551@@ -17,5 +17,5 @@
10552 out_float32x2_t = vpmin_f32 (arg0_float32x2_t, arg1_float32x2_t);
10553 }
10554
10555-/* { dg-final { scan-assembler "vpmin\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10556+/* { dg-final { scan-assembler "vpmin\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10557 /* { dg-final { cleanup-saved-temps } } */
10558
10559=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmins16.c'
10560--- old/gcc/testsuite/gcc.target/arm/neon/vpmins16.c 2010-07-29 15:38:15 +0000
10561+++ new/gcc/testsuite/gcc.target/arm/neon/vpmins16.c 2010-08-20 13:27:11 +0000
10562@@ -17,5 +17,5 @@
10563 out_int16x4_t = vpmin_s16 (arg0_int16x4_t, arg1_int16x4_t);
10564 }
10565
10566-/* { dg-final { scan-assembler "vpmin\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10567+/* { dg-final { scan-assembler "vpmin\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10568 /* { dg-final { cleanup-saved-temps } } */
10569
10570=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmins32.c'
10571--- old/gcc/testsuite/gcc.target/arm/neon/vpmins32.c 2010-07-29 15:38:15 +0000
10572+++ new/gcc/testsuite/gcc.target/arm/neon/vpmins32.c 2010-08-20 13:27:11 +0000
10573@@ -17,5 +17,5 @@
10574 out_int32x2_t = vpmin_s32 (arg0_int32x2_t, arg1_int32x2_t);
10575 }
10576
10577-/* { dg-final { scan-assembler "vpmin\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10578+/* { dg-final { scan-assembler "vpmin\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10579 /* { dg-final { cleanup-saved-temps } } */
10580
10581=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpmins8.c'
10582--- old/gcc/testsuite/gcc.target/arm/neon/vpmins8.c 2010-07-29 15:38:15 +0000
10583+++ new/gcc/testsuite/gcc.target/arm/neon/vpmins8.c 2010-08-20 13:27:11 +0000
10584@@ -17,5 +17,5 @@
10585 out_int8x8_t = vpmin_s8 (arg0_int8x8_t, arg1_int8x8_t);
10586 }
10587
10588-/* { dg-final { scan-assembler "vpmin\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10589+/* { dg-final { scan-assembler "vpmin\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10590 /* { dg-final { cleanup-saved-temps } } */
10591
10592=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpminu16.c'
10593--- old/gcc/testsuite/gcc.target/arm/neon/vpminu16.c 2010-07-29 15:38:15 +0000
10594+++ new/gcc/testsuite/gcc.target/arm/neon/vpminu16.c 2010-08-20 13:27:11 +0000
10595@@ -17,5 +17,5 @@
10596 out_uint16x4_t = vpmin_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
10597 }
10598
10599-/* { dg-final { scan-assembler "vpmin\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10600+/* { dg-final { scan-assembler "vpmin\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10601 /* { dg-final { cleanup-saved-temps } } */
10602
10603=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpminu32.c'
10604--- old/gcc/testsuite/gcc.target/arm/neon/vpminu32.c 2010-07-29 15:38:15 +0000
10605+++ new/gcc/testsuite/gcc.target/arm/neon/vpminu32.c 2010-08-20 13:27:11 +0000
10606@@ -17,5 +17,5 @@
10607 out_uint32x2_t = vpmin_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
10608 }
10609
10610-/* { dg-final { scan-assembler "vpmin\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10611+/* { dg-final { scan-assembler "vpmin\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10612 /* { dg-final { cleanup-saved-temps } } */
10613
10614=== modified file 'gcc/testsuite/gcc.target/arm/neon/vpminu8.c'
10615--- old/gcc/testsuite/gcc.target/arm/neon/vpminu8.c 2010-07-29 15:38:15 +0000
10616+++ new/gcc/testsuite/gcc.target/arm/neon/vpminu8.c 2010-08-20 13:27:11 +0000
10617@@ -17,5 +17,5 @@
10618 out_uint8x8_t = vpmin_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
10619 }
10620
10621-/* { dg-final { scan-assembler "vpmin\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10622+/* { dg-final { scan-assembler "vpmin\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10623 /* { dg-final { cleanup-saved-temps } } */
10624
10625=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c'
10626--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c 2010-07-29 15:38:15 +0000
10627+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c 2010-08-20 13:27:11 +0000
10628@@ -17,5 +17,5 @@
10629 out_int16x8_t = vqrdmulhq_lane_s16 (arg0_int16x8_t, arg1_int16x4_t, 1);
10630 }
10631
10632-/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10633+/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10634 /* { dg-final { cleanup-saved-temps } } */
10635
10636=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c'
10637--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c 2010-07-29 15:38:15 +0000
10638+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c 2010-08-20 13:27:11 +0000
10639@@ -17,5 +17,5 @@
10640 out_int32x4_t = vqrdmulhq_lane_s32 (arg0_int32x4_t, arg1_int32x2_t, 1);
10641 }
10642
10643-/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10644+/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10645 /* { dg-final { cleanup-saved-temps } } */
10646
10647=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c'
10648--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c 2010-07-29 15:38:15 +0000
10649+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c 2010-08-20 13:27:11 +0000
10650@@ -17,5 +17,5 @@
10651 out_int16x8_t = vqrdmulhq_n_s16 (arg0_int16x8_t, arg1_int16_t);
10652 }
10653
10654-/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10655+/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10656 /* { dg-final { cleanup-saved-temps } } */
10657
10658=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c'
10659--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c 2010-07-29 15:38:15 +0000
10660+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c 2010-08-20 13:27:11 +0000
10661@@ -17,5 +17,5 @@
10662 out_int32x4_t = vqrdmulhq_n_s32 (arg0_int32x4_t, arg1_int32_t);
10663 }
10664
10665-/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10666+/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10667 /* { dg-final { cleanup-saved-temps } } */
10668
10669=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c'
10670--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c 2010-07-29 15:38:15 +0000
10671+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c 2010-08-20 13:27:11 +0000
10672@@ -17,5 +17,5 @@
10673 out_int16x8_t = vqrdmulhq_s16 (arg0_int16x8_t, arg1_int16x8_t);
10674 }
10675
10676-/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10677+/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10678 /* { dg-final { cleanup-saved-temps } } */
10679
10680=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c'
10681--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c 2010-07-29 15:38:15 +0000
10682+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c 2010-08-20 13:27:11 +0000
10683@@ -17,5 +17,5 @@
10684 out_int32x4_t = vqrdmulhq_s32 (arg0_int32x4_t, arg1_int32x4_t);
10685 }
10686
10687-/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10688+/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10689 /* { dg-final { cleanup-saved-temps } } */
10690
10691=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c'
10692--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c 2010-07-29 15:38:15 +0000
10693+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c 2010-08-20 13:27:11 +0000
10694@@ -17,5 +17,5 @@
10695 out_int16x4_t = vqrdmulh_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
10696 }
10697
10698-/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10699+/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10700 /* { dg-final { cleanup-saved-temps } } */
10701
10702=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c'
10703--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c 2010-07-29 15:38:15 +0000
10704+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c 2010-08-20 13:27:11 +0000
10705@@ -17,5 +17,5 @@
10706 out_int32x2_t = vqrdmulh_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
10707 }
10708
10709-/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10710+/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10711 /* { dg-final { cleanup-saved-temps } } */
10712
10713=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c'
10714--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c 2010-07-29 15:38:15 +0000
10715+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c 2010-08-20 13:27:11 +0000
10716@@ -17,5 +17,5 @@
10717 out_int16x4_t = vqrdmulh_n_s16 (arg0_int16x4_t, arg1_int16_t);
10718 }
10719
10720-/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10721+/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10722 /* { dg-final { cleanup-saved-temps } } */
10723
10724=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c'
10725--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c 2010-07-29 15:38:15 +0000
10726+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c 2010-08-20 13:27:11 +0000
10727@@ -17,5 +17,5 @@
10728 out_int32x2_t = vqrdmulh_n_s32 (arg0_int32x2_t, arg1_int32_t);
10729 }
10730
10731-/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10732+/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
10733 /* { dg-final { cleanup-saved-temps } } */
10734
10735=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c'
10736--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c 2010-07-29 15:38:15 +0000
10737+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c 2010-08-20 13:27:11 +0000
10738@@ -17,5 +17,5 @@
10739 out_int16x4_t = vqrdmulh_s16 (arg0_int16x4_t, arg1_int16x4_t);
10740 }
10741
10742-/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10743+/* { dg-final { scan-assembler "vqrdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10744 /* { dg-final { cleanup-saved-temps } } */
10745
10746=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c'
10747--- old/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c 2010-07-29 15:38:15 +0000
10748+++ new/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c 2010-08-20 13:27:11 +0000
10749@@ -17,5 +17,5 @@
10750 out_int32x2_t = vqrdmulh_s32 (arg0_int32x2_t, arg1_int32x2_t);
10751 }
10752
10753-/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10754+/* { dg-final { scan-assembler "vqrdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10755 /* { dg-final { cleanup-saved-temps } } */
10756
10757=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c'
10758--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c 2010-07-29 15:38:15 +0000
10759+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c 2010-08-20 13:27:11 +0000
10760@@ -17,5 +17,5 @@
10761 out_int16x8_t = vqrshlq_s16 (arg0_int16x8_t, arg1_int16x8_t);
10762 }
10763
10764-/* { dg-final { scan-assembler "vqrshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10765+/* { dg-final { scan-assembler "vqrshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10766 /* { dg-final { cleanup-saved-temps } } */
10767
10768=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c'
10769--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c 2010-07-29 15:38:15 +0000
10770+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c 2010-08-20 13:27:11 +0000
10771@@ -17,5 +17,5 @@
10772 out_int32x4_t = vqrshlq_s32 (arg0_int32x4_t, arg1_int32x4_t);
10773 }
10774
10775-/* { dg-final { scan-assembler "vqrshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10776+/* { dg-final { scan-assembler "vqrshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10777 /* { dg-final { cleanup-saved-temps } } */
10778
10779=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c'
10780--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c 2010-07-29 15:38:15 +0000
10781+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c 2010-08-20 13:27:11 +0000
10782@@ -17,5 +17,5 @@
10783 out_int64x2_t = vqrshlq_s64 (arg0_int64x2_t, arg1_int64x2_t);
10784 }
10785
10786-/* { dg-final { scan-assembler "vqrshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10787+/* { dg-final { scan-assembler "vqrshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10788 /* { dg-final { cleanup-saved-temps } } */
10789
10790=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c'
10791--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c 2010-07-29 15:38:15 +0000
10792+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c 2010-08-20 13:27:11 +0000
10793@@ -17,5 +17,5 @@
10794 out_int8x16_t = vqrshlq_s8 (arg0_int8x16_t, arg1_int8x16_t);
10795 }
10796
10797-/* { dg-final { scan-assembler "vqrshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10798+/* { dg-final { scan-assembler "vqrshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10799 /* { dg-final { cleanup-saved-temps } } */
10800
10801=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c'
10802--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c 2010-07-29 15:38:15 +0000
10803+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c 2010-08-20 13:27:11 +0000
10804@@ -17,5 +17,5 @@
10805 out_uint16x8_t = vqrshlq_u16 (arg0_uint16x8_t, arg1_int16x8_t);
10806 }
10807
10808-/* { dg-final { scan-assembler "vqrshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10809+/* { dg-final { scan-assembler "vqrshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10810 /* { dg-final { cleanup-saved-temps } } */
10811
10812=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c'
10813--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c 2010-07-29 15:38:15 +0000
10814+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c 2010-08-20 13:27:11 +0000
10815@@ -17,5 +17,5 @@
10816 out_uint32x4_t = vqrshlq_u32 (arg0_uint32x4_t, arg1_int32x4_t);
10817 }
10818
10819-/* { dg-final { scan-assembler "vqrshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10820+/* { dg-final { scan-assembler "vqrshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10821 /* { dg-final { cleanup-saved-temps } } */
10822
10823=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c'
10824--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c 2010-07-29 15:38:15 +0000
10825+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c 2010-08-20 13:27:11 +0000
10826@@ -17,5 +17,5 @@
10827 out_uint64x2_t = vqrshlq_u64 (arg0_uint64x2_t, arg1_int64x2_t);
10828 }
10829
10830-/* { dg-final { scan-assembler "vqrshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10831+/* { dg-final { scan-assembler "vqrshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10832 /* { dg-final { cleanup-saved-temps } } */
10833
10834=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c'
10835--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c 2010-07-29 15:38:15 +0000
10836+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c 2010-08-20 13:27:11 +0000
10837@@ -17,5 +17,5 @@
10838 out_uint8x16_t = vqrshlq_u8 (arg0_uint8x16_t, arg1_int8x16_t);
10839 }
10840
10841-/* { dg-final { scan-assembler "vqrshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10842+/* { dg-final { scan-assembler "vqrshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10843 /* { dg-final { cleanup-saved-temps } } */
10844
10845=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshls16.c'
10846--- old/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c 2010-07-29 15:38:15 +0000
10847+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c 2010-08-20 13:27:11 +0000
10848@@ -17,5 +17,5 @@
10849 out_int16x4_t = vqrshl_s16 (arg0_int16x4_t, arg1_int16x4_t);
10850 }
10851
10852-/* { dg-final { scan-assembler "vqrshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10853+/* { dg-final { scan-assembler "vqrshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10854 /* { dg-final { cleanup-saved-temps } } */
10855
10856=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshls32.c'
10857--- old/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c 2010-07-29 15:38:15 +0000
10858+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c 2010-08-20 13:27:11 +0000
10859@@ -17,5 +17,5 @@
10860 out_int32x2_t = vqrshl_s32 (arg0_int32x2_t, arg1_int32x2_t);
10861 }
10862
10863-/* { dg-final { scan-assembler "vqrshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10864+/* { dg-final { scan-assembler "vqrshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10865 /* { dg-final { cleanup-saved-temps } } */
10866
10867=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshls64.c'
10868--- old/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c 2010-07-29 15:38:15 +0000
10869+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c 2010-08-20 13:27:11 +0000
10870@@ -17,5 +17,5 @@
10871 out_int64x1_t = vqrshl_s64 (arg0_int64x1_t, arg1_int64x1_t);
10872 }
10873
10874-/* { dg-final { scan-assembler "vqrshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10875+/* { dg-final { scan-assembler "vqrshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10876 /* { dg-final { cleanup-saved-temps } } */
10877
10878=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshls8.c'
10879--- old/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c 2010-07-29 15:38:15 +0000
10880+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c 2010-08-20 13:27:11 +0000
10881@@ -17,5 +17,5 @@
10882 out_int8x8_t = vqrshl_s8 (arg0_int8x8_t, arg1_int8x8_t);
10883 }
10884
10885-/* { dg-final { scan-assembler "vqrshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10886+/* { dg-final { scan-assembler "vqrshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10887 /* { dg-final { cleanup-saved-temps } } */
10888
10889=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c'
10890--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c 2010-07-29 15:38:15 +0000
10891+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c 2010-08-20 13:27:11 +0000
10892@@ -17,5 +17,5 @@
10893 out_uint16x4_t = vqrshl_u16 (arg0_uint16x4_t, arg1_int16x4_t);
10894 }
10895
10896-/* { dg-final { scan-assembler "vqrshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10897+/* { dg-final { scan-assembler "vqrshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10898 /* { dg-final { cleanup-saved-temps } } */
10899
10900=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c'
10901--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c 2010-07-29 15:38:15 +0000
10902+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c 2010-08-20 13:27:11 +0000
10903@@ -17,5 +17,5 @@
10904 out_uint32x2_t = vqrshl_u32 (arg0_uint32x2_t, arg1_int32x2_t);
10905 }
10906
10907-/* { dg-final { scan-assembler "vqrshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10908+/* { dg-final { scan-assembler "vqrshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10909 /* { dg-final { cleanup-saved-temps } } */
10910
10911=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c'
10912--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c 2010-07-29 15:38:15 +0000
10913+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c 2010-08-20 13:27:11 +0000
10914@@ -17,5 +17,5 @@
10915 out_uint64x1_t = vqrshl_u64 (arg0_uint64x1_t, arg1_int64x1_t);
10916 }
10917
10918-/* { dg-final { scan-assembler "vqrshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10919+/* { dg-final { scan-assembler "vqrshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10920 /* { dg-final { cleanup-saved-temps } } */
10921
10922=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c'
10923--- old/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c 2010-07-29 15:38:15 +0000
10924+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c 2010-08-20 13:27:11 +0000
10925@@ -17,5 +17,5 @@
10926 out_uint8x8_t = vqrshl_u8 (arg0_uint8x8_t, arg1_int8x8_t);
10927 }
10928
10929-/* { dg-final { scan-assembler "vqrshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10930+/* { dg-final { scan-assembler "vqrshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10931 /* { dg-final { cleanup-saved-temps } } */
10932
10933=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c'
10934--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c 2010-07-29 15:38:15 +0000
10935+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c 2010-08-20 13:27:11 +0000
10936@@ -16,5 +16,5 @@
10937 out_int8x8_t = vqrshrn_n_s16 (arg0_int16x8_t, 1);
10938 }
10939
10940-/* { dg-final { scan-assembler "vqrshrn\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10941+/* { dg-final { scan-assembler "vqrshrn\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10942 /* { dg-final { cleanup-saved-temps } } */
10943
10944=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c'
10945--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c 2010-07-29 15:38:15 +0000
10946+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c 2010-08-20 13:27:11 +0000
10947@@ -16,5 +16,5 @@
10948 out_int16x4_t = vqrshrn_n_s32 (arg0_int32x4_t, 1);
10949 }
10950
10951-/* { dg-final { scan-assembler "vqrshrn\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10952+/* { dg-final { scan-assembler "vqrshrn\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10953 /* { dg-final { cleanup-saved-temps } } */
10954
10955=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c'
10956--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c 2010-07-29 15:38:15 +0000
10957+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c 2010-08-20 13:27:11 +0000
10958@@ -16,5 +16,5 @@
10959 out_int32x2_t = vqrshrn_n_s64 (arg0_int64x2_t, 1);
10960 }
10961
10962-/* { dg-final { scan-assembler "vqrshrn\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10963+/* { dg-final { scan-assembler "vqrshrn\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10964 /* { dg-final { cleanup-saved-temps } } */
10965
10966=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c'
10967--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c 2010-07-29 15:38:15 +0000
10968+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c 2010-08-20 13:27:11 +0000
10969@@ -16,5 +16,5 @@
10970 out_uint8x8_t = vqrshrn_n_u16 (arg0_uint16x8_t, 1);
10971 }
10972
10973-/* { dg-final { scan-assembler "vqrshrn\.u16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10974+/* { dg-final { scan-assembler "vqrshrn\.u16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10975 /* { dg-final { cleanup-saved-temps } } */
10976
10977=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c'
10978--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c 2010-07-29 15:38:15 +0000
10979+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c 2010-08-20 13:27:11 +0000
10980@@ -16,5 +16,5 @@
10981 out_uint16x4_t = vqrshrn_n_u32 (arg0_uint32x4_t, 1);
10982 }
10983
10984-/* { dg-final { scan-assembler "vqrshrn\.u32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10985+/* { dg-final { scan-assembler "vqrshrn\.u32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10986 /* { dg-final { cleanup-saved-temps } } */
10987
10988=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c'
10989--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c 2010-07-29 15:38:15 +0000
10990+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c 2010-08-20 13:27:11 +0000
10991@@ -16,5 +16,5 @@
10992 out_uint32x2_t = vqrshrn_n_u64 (arg0_uint64x2_t, 1);
10993 }
10994
10995-/* { dg-final { scan-assembler "vqrshrn\.u64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
10996+/* { dg-final { scan-assembler "vqrshrn\.u64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
10997 /* { dg-final { cleanup-saved-temps } } */
10998
10999=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c'
11000--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c 2010-07-29 15:38:15 +0000
11001+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c 2010-08-20 13:27:11 +0000
11002@@ -16,5 +16,5 @@
11003 out_uint8x8_t = vqrshrun_n_s16 (arg0_int16x8_t, 1);
11004 }
11005
11006-/* { dg-final { scan-assembler "vqrshrun\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11007+/* { dg-final { scan-assembler "vqrshrun\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11008 /* { dg-final { cleanup-saved-temps } } */
11009
11010=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c'
11011--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c 2010-07-29 15:38:15 +0000
11012+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c 2010-08-20 13:27:11 +0000
11013@@ -16,5 +16,5 @@
11014 out_uint16x4_t = vqrshrun_n_s32 (arg0_int32x4_t, 1);
11015 }
11016
11017-/* { dg-final { scan-assembler "vqrshrun\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11018+/* { dg-final { scan-assembler "vqrshrun\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11019 /* { dg-final { cleanup-saved-temps } } */
11020
11021=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c'
11022--- old/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c 2010-07-29 15:38:15 +0000
11023+++ new/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c 2010-08-20 13:27:11 +0000
11024@@ -16,5 +16,5 @@
11025 out_uint32x2_t = vqrshrun_n_s64 (arg0_int64x2_t, 1);
11026 }
11027
11028-/* { dg-final { scan-assembler "vqrshrun\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11029+/* { dg-final { scan-assembler "vqrshrun\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11030 /* { dg-final { cleanup-saved-temps } } */
11031
11032=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c'
11033--- old/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c 2010-07-29 15:38:15 +0000
11034+++ new/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c 2010-08-20 13:27:11 +0000
11035@@ -16,5 +16,5 @@
11036 out_int16x8_t = vqabsq_s16 (arg0_int16x8_t);
11037 }
11038
11039-/* { dg-final { scan-assembler "vqabs\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11040+/* { dg-final { scan-assembler "vqabs\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11041 /* { dg-final { cleanup-saved-temps } } */
11042
11043=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c'
11044--- old/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c 2010-07-29 15:38:15 +0000
11045+++ new/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c 2010-08-20 13:27:11 +0000
11046@@ -16,5 +16,5 @@
11047 out_int32x4_t = vqabsq_s32 (arg0_int32x4_t);
11048 }
11049
11050-/* { dg-final { scan-assembler "vqabs\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11051+/* { dg-final { scan-assembler "vqabs\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11052 /* { dg-final { cleanup-saved-temps } } */
11053
11054=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c'
11055--- old/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c 2010-07-29 15:38:15 +0000
11056+++ new/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c 2010-08-20 13:27:11 +0000
11057@@ -16,5 +16,5 @@
11058 out_int8x16_t = vqabsq_s8 (arg0_int8x16_t);
11059 }
11060
11061-/* { dg-final { scan-assembler "vqabs\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11062+/* { dg-final { scan-assembler "vqabs\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11063 /* { dg-final { cleanup-saved-temps } } */
11064
11065=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqabss16.c'
11066--- old/gcc/testsuite/gcc.target/arm/neon/vqabss16.c 2010-07-29 15:38:15 +0000
11067+++ new/gcc/testsuite/gcc.target/arm/neon/vqabss16.c 2010-08-20 13:27:11 +0000
11068@@ -16,5 +16,5 @@
11069 out_int16x4_t = vqabs_s16 (arg0_int16x4_t);
11070 }
11071
11072-/* { dg-final { scan-assembler "vqabs\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11073+/* { dg-final { scan-assembler "vqabs\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11074 /* { dg-final { cleanup-saved-temps } } */
11075
11076=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqabss32.c'
11077--- old/gcc/testsuite/gcc.target/arm/neon/vqabss32.c 2010-07-29 15:38:15 +0000
11078+++ new/gcc/testsuite/gcc.target/arm/neon/vqabss32.c 2010-08-20 13:27:11 +0000
11079@@ -16,5 +16,5 @@
11080 out_int32x2_t = vqabs_s32 (arg0_int32x2_t);
11081 }
11082
11083-/* { dg-final { scan-assembler "vqabs\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11084+/* { dg-final { scan-assembler "vqabs\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11085 /* { dg-final { cleanup-saved-temps } } */
11086
11087=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqabss8.c'
11088--- old/gcc/testsuite/gcc.target/arm/neon/vqabss8.c 2010-07-29 15:38:15 +0000
11089+++ new/gcc/testsuite/gcc.target/arm/neon/vqabss8.c 2010-08-20 13:27:11 +0000
11090@@ -16,5 +16,5 @@
11091 out_int8x8_t = vqabs_s8 (arg0_int8x8_t);
11092 }
11093
11094-/* { dg-final { scan-assembler "vqabs\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11095+/* { dg-final { scan-assembler "vqabs\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11096 /* { dg-final { cleanup-saved-temps } } */
11097
11098=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c'
11099--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c 2010-07-29 15:38:15 +0000
11100+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c 2010-08-20 13:27:11 +0000
11101@@ -17,5 +17,5 @@
11102 out_int16x8_t = vqaddq_s16 (arg0_int16x8_t, arg1_int16x8_t);
11103 }
11104
11105-/* { dg-final { scan-assembler "vqadd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11106+/* { dg-final { scan-assembler "vqadd\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11107 /* { dg-final { cleanup-saved-temps } } */
11108
11109=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c'
11110--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c 2010-07-29 15:38:15 +0000
11111+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c 2010-08-20 13:27:11 +0000
11112@@ -17,5 +17,5 @@
11113 out_int32x4_t = vqaddq_s32 (arg0_int32x4_t, arg1_int32x4_t);
11114 }
11115
11116-/* { dg-final { scan-assembler "vqadd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11117+/* { dg-final { scan-assembler "vqadd\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11118 /* { dg-final { cleanup-saved-temps } } */
11119
11120=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c'
11121--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c 2010-07-29 15:38:15 +0000
11122+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c 2010-08-20 13:27:11 +0000
11123@@ -17,5 +17,5 @@
11124 out_int64x2_t = vqaddq_s64 (arg0_int64x2_t, arg1_int64x2_t);
11125 }
11126
11127-/* { dg-final { scan-assembler "vqadd\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11128+/* { dg-final { scan-assembler "vqadd\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11129 /* { dg-final { cleanup-saved-temps } } */
11130
11131=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c'
11132--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c 2010-07-29 15:38:15 +0000
11133+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c 2010-08-20 13:27:11 +0000
11134@@ -17,5 +17,5 @@
11135 out_int8x16_t = vqaddq_s8 (arg0_int8x16_t, arg1_int8x16_t);
11136 }
11137
11138-/* { dg-final { scan-assembler "vqadd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11139+/* { dg-final { scan-assembler "vqadd\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11140 /* { dg-final { cleanup-saved-temps } } */
11141
11142=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c'
11143--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c 2010-07-29 15:38:15 +0000
11144+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c 2010-08-20 13:27:11 +0000
11145@@ -17,5 +17,5 @@
11146 out_uint16x8_t = vqaddq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
11147 }
11148
11149-/* { dg-final { scan-assembler "vqadd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11150+/* { dg-final { scan-assembler "vqadd\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11151 /* { dg-final { cleanup-saved-temps } } */
11152
11153=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c'
11154--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c 2010-07-29 15:38:15 +0000
11155+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c 2010-08-20 13:27:11 +0000
11156@@ -17,5 +17,5 @@
11157 out_uint32x4_t = vqaddq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
11158 }
11159
11160-/* { dg-final { scan-assembler "vqadd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11161+/* { dg-final { scan-assembler "vqadd\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11162 /* { dg-final { cleanup-saved-temps } } */
11163
11164=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c'
11165--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c 2010-07-29 15:38:15 +0000
11166+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c 2010-08-20 13:27:11 +0000
11167@@ -17,5 +17,5 @@
11168 out_uint64x2_t = vqaddq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
11169 }
11170
11171-/* { dg-final { scan-assembler "vqadd\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11172+/* { dg-final { scan-assembler "vqadd\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11173 /* { dg-final { cleanup-saved-temps } } */
11174
11175=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c'
11176--- old/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c 2010-07-29 15:38:15 +0000
11177+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c 2010-08-20 13:27:11 +0000
11178@@ -17,5 +17,5 @@
11179 out_uint8x16_t = vqaddq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
11180 }
11181
11182-/* { dg-final { scan-assembler "vqadd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11183+/* { dg-final { scan-assembler "vqadd\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11184 /* { dg-final { cleanup-saved-temps } } */
11185
11186=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqadds16.c'
11187--- old/gcc/testsuite/gcc.target/arm/neon/vqadds16.c 2010-07-29 15:38:15 +0000
11188+++ new/gcc/testsuite/gcc.target/arm/neon/vqadds16.c 2010-08-20 13:27:11 +0000
11189@@ -17,5 +17,5 @@
11190 out_int16x4_t = vqadd_s16 (arg0_int16x4_t, arg1_int16x4_t);
11191 }
11192
11193-/* { dg-final { scan-assembler "vqadd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11194+/* { dg-final { scan-assembler "vqadd\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11195 /* { dg-final { cleanup-saved-temps } } */
11196
11197=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqadds32.c'
11198--- old/gcc/testsuite/gcc.target/arm/neon/vqadds32.c 2010-07-29 15:38:15 +0000
11199+++ new/gcc/testsuite/gcc.target/arm/neon/vqadds32.c 2010-08-20 13:27:11 +0000
11200@@ -17,5 +17,5 @@
11201 out_int32x2_t = vqadd_s32 (arg0_int32x2_t, arg1_int32x2_t);
11202 }
11203
11204-/* { dg-final { scan-assembler "vqadd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11205+/* { dg-final { scan-assembler "vqadd\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11206 /* { dg-final { cleanup-saved-temps } } */
11207
11208=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqadds64.c'
11209--- old/gcc/testsuite/gcc.target/arm/neon/vqadds64.c 2010-07-29 15:38:15 +0000
11210+++ new/gcc/testsuite/gcc.target/arm/neon/vqadds64.c 2010-08-20 13:27:11 +0000
11211@@ -17,5 +17,5 @@
11212 out_int64x1_t = vqadd_s64 (arg0_int64x1_t, arg1_int64x1_t);
11213 }
11214
11215-/* { dg-final { scan-assembler "vqadd\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11216+/* { dg-final { scan-assembler "vqadd\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11217 /* { dg-final { cleanup-saved-temps } } */
11218
11219=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqadds8.c'
11220--- old/gcc/testsuite/gcc.target/arm/neon/vqadds8.c 2010-07-29 15:38:15 +0000
11221+++ new/gcc/testsuite/gcc.target/arm/neon/vqadds8.c 2010-08-20 13:27:11 +0000
11222@@ -17,5 +17,5 @@
11223 out_int8x8_t = vqadd_s8 (arg0_int8x8_t, arg1_int8x8_t);
11224 }
11225
11226-/* { dg-final { scan-assembler "vqadd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11227+/* { dg-final { scan-assembler "vqadd\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11228 /* { dg-final { cleanup-saved-temps } } */
11229
11230=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddu16.c'
11231--- old/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c 2010-07-29 15:38:15 +0000
11232+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c 2010-08-20 13:27:11 +0000
11233@@ -17,5 +17,5 @@
11234 out_uint16x4_t = vqadd_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
11235 }
11236
11237-/* { dg-final { scan-assembler "vqadd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11238+/* { dg-final { scan-assembler "vqadd\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11239 /* { dg-final { cleanup-saved-temps } } */
11240
11241=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddu32.c'
11242--- old/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c 2010-07-29 15:38:15 +0000
11243+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c 2010-08-20 13:27:11 +0000
11244@@ -17,5 +17,5 @@
11245 out_uint32x2_t = vqadd_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
11246 }
11247
11248-/* { dg-final { scan-assembler "vqadd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11249+/* { dg-final { scan-assembler "vqadd\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11250 /* { dg-final { cleanup-saved-temps } } */
11251
11252=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddu64.c'
11253--- old/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c 2010-07-29 15:38:15 +0000
11254+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c 2010-08-20 13:27:11 +0000
11255@@ -17,5 +17,5 @@
11256 out_uint64x1_t = vqadd_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
11257 }
11258
11259-/* { dg-final { scan-assembler "vqadd\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11260+/* { dg-final { scan-assembler "vqadd\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11261 /* { dg-final { cleanup-saved-temps } } */
11262
11263=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqaddu8.c'
11264--- old/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c 2010-07-29 15:38:15 +0000
11265+++ new/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c 2010-08-20 13:27:11 +0000
11266@@ -17,5 +17,5 @@
11267 out_uint8x8_t = vqadd_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
11268 }
11269
11270-/* { dg-final { scan-assembler "vqadd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11271+/* { dg-final { scan-assembler "vqadd\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11272 /* { dg-final { cleanup-saved-temps } } */
11273
11274=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c'
11275--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c 2010-07-29 15:38:15 +0000
11276+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c 2010-08-20 13:27:11 +0000
11277@@ -18,5 +18,5 @@
11278 out_int32x4_t = vqdmlal_lane_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t, 1);
11279 }
11280
11281-/* { dg-final { scan-assembler "vqdmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11282+/* { dg-final { scan-assembler "vqdmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11283 /* { dg-final { cleanup-saved-temps } } */
11284
11285=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c'
11286--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c 2010-07-29 15:38:15 +0000
11287+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c 2010-08-20 13:27:11 +0000
11288@@ -18,5 +18,5 @@
11289 out_int64x2_t = vqdmlal_lane_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t, 1);
11290 }
11291
11292-/* { dg-final { scan-assembler "vqdmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11293+/* { dg-final { scan-assembler "vqdmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11294 /* { dg-final { cleanup-saved-temps } } */
11295
11296=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c'
11297--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c 2010-07-29 15:38:15 +0000
11298+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c 2010-08-20 13:27:11 +0000
11299@@ -18,5 +18,5 @@
11300 out_int32x4_t = vqdmlal_n_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16_t);
11301 }
11302
11303-/* { dg-final { scan-assembler "vqdmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11304+/* { dg-final { scan-assembler "vqdmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11305 /* { dg-final { cleanup-saved-temps } } */
11306
11307=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c'
11308--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c 2010-07-29 15:38:15 +0000
11309+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c 2010-08-20 13:27:11 +0000
11310@@ -18,5 +18,5 @@
11311 out_int64x2_t = vqdmlal_n_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32_t);
11312 }
11313
11314-/* { dg-final { scan-assembler "vqdmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11315+/* { dg-final { scan-assembler "vqdmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11316 /* { dg-final { cleanup-saved-temps } } */
11317
11318=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c'
11319--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c 2010-07-29 15:38:15 +0000
11320+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c 2010-08-20 13:27:11 +0000
11321@@ -18,5 +18,5 @@
11322 out_int32x4_t = vqdmlal_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t);
11323 }
11324
11325-/* { dg-final { scan-assembler "vqdmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11326+/* { dg-final { scan-assembler "vqdmlal\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11327 /* { dg-final { cleanup-saved-temps } } */
11328
11329=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c'
11330--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c 2010-07-29 15:38:15 +0000
11331+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c 2010-08-20 13:27:11 +0000
11332@@ -18,5 +18,5 @@
11333 out_int64x2_t = vqdmlal_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t);
11334 }
11335
11336-/* { dg-final { scan-assembler "vqdmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11337+/* { dg-final { scan-assembler "vqdmlal\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11338 /* { dg-final { cleanup-saved-temps } } */
11339
11340=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c'
11341--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c 2010-07-29 15:38:15 +0000
11342+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c 2010-08-20 13:27:11 +0000
11343@@ -18,5 +18,5 @@
11344 out_int32x4_t = vqdmlsl_lane_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t, 1);
11345 }
11346
11347-/* { dg-final { scan-assembler "vqdmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11348+/* { dg-final { scan-assembler "vqdmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11349 /* { dg-final { cleanup-saved-temps } } */
11350
11351=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c'
11352--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c 2010-07-29 15:38:15 +0000
11353+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c 2010-08-20 13:27:11 +0000
11354@@ -18,5 +18,5 @@
11355 out_int64x2_t = vqdmlsl_lane_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t, 1);
11356 }
11357
11358-/* { dg-final { scan-assembler "vqdmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11359+/* { dg-final { scan-assembler "vqdmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11360 /* { dg-final { cleanup-saved-temps } } */
11361
11362=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c'
11363--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c 2010-07-29 15:38:15 +0000
11364+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c 2010-08-20 13:27:11 +0000
11365@@ -18,5 +18,5 @@
11366 out_int32x4_t = vqdmlsl_n_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16_t);
11367 }
11368
11369-/* { dg-final { scan-assembler "vqdmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11370+/* { dg-final { scan-assembler "vqdmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11371 /* { dg-final { cleanup-saved-temps } } */
11372
11373=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c'
11374--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c 2010-07-29 15:38:15 +0000
11375+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c 2010-08-20 13:27:11 +0000
11376@@ -18,5 +18,5 @@
11377 out_int64x2_t = vqdmlsl_n_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32_t);
11378 }
11379
11380-/* { dg-final { scan-assembler "vqdmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11381+/* { dg-final { scan-assembler "vqdmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11382 /* { dg-final { cleanup-saved-temps } } */
11383
11384=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c'
11385--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c 2010-07-29 15:38:15 +0000
11386+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c 2010-08-20 13:27:11 +0000
11387@@ -18,5 +18,5 @@
11388 out_int32x4_t = vqdmlsl_s16 (arg0_int32x4_t, arg1_int16x4_t, arg2_int16x4_t);
11389 }
11390
11391-/* { dg-final { scan-assembler "vqdmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11392+/* { dg-final { scan-assembler "vqdmlsl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11393 /* { dg-final { cleanup-saved-temps } } */
11394
11395=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c'
11396--- old/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c 2010-07-29 15:38:15 +0000
11397+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c 2010-08-20 13:27:11 +0000
11398@@ -18,5 +18,5 @@
11399 out_int64x2_t = vqdmlsl_s32 (arg0_int64x2_t, arg1_int32x2_t, arg2_int32x2_t);
11400 }
11401
11402-/* { dg-final { scan-assembler "vqdmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11403+/* { dg-final { scan-assembler "vqdmlsl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11404 /* { dg-final { cleanup-saved-temps } } */
11405
11406=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c'
11407--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c 2010-07-29 15:38:15 +0000
11408+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c 2010-08-20 13:27:11 +0000
11409@@ -17,5 +17,5 @@
11410 out_int16x8_t = vqdmulhq_lane_s16 (arg0_int16x8_t, arg1_int16x4_t, 1);
11411 }
11412
11413-/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11414+/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11415 /* { dg-final { cleanup-saved-temps } } */
11416
11417=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c'
11418--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c 2010-07-29 15:38:15 +0000
11419+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c 2010-08-20 13:27:11 +0000
11420@@ -17,5 +17,5 @@
11421 out_int32x4_t = vqdmulhq_lane_s32 (arg0_int32x4_t, arg1_int32x2_t, 1);
11422 }
11423
11424-/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11425+/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11426 /* { dg-final { cleanup-saved-temps } } */
11427
11428=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c'
11429--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c 2010-07-29 15:38:15 +0000
11430+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c 2010-08-20 13:27:11 +0000
11431@@ -17,5 +17,5 @@
11432 out_int16x8_t = vqdmulhq_n_s16 (arg0_int16x8_t, arg1_int16_t);
11433 }
11434
11435-/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11436+/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11437 /* { dg-final { cleanup-saved-temps } } */
11438
11439=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c'
11440--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c 2010-07-29 15:38:15 +0000
11441+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c 2010-08-20 13:27:11 +0000
11442@@ -17,5 +17,5 @@
11443 out_int32x4_t = vqdmulhq_n_s32 (arg0_int32x4_t, arg1_int32_t);
11444 }
11445
11446-/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11447+/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11448 /* { dg-final { cleanup-saved-temps } } */
11449
11450=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c'
11451--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c 2010-07-29 15:38:15 +0000
11452+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c 2010-08-20 13:27:11 +0000
11453@@ -17,5 +17,5 @@
11454 out_int16x8_t = vqdmulhq_s16 (arg0_int16x8_t, arg1_int16x8_t);
11455 }
11456
11457-/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11458+/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11459 /* { dg-final { cleanup-saved-temps } } */
11460
11461=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c'
11462--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c 2010-07-29 15:38:15 +0000
11463+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c 2010-08-20 13:27:11 +0000
11464@@ -17,5 +17,5 @@
11465 out_int32x4_t = vqdmulhq_s32 (arg0_int32x4_t, arg1_int32x4_t);
11466 }
11467
11468-/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11469+/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11470 /* { dg-final { cleanup-saved-temps } } */
11471
11472=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c'
11473--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c 2010-07-29 15:38:15 +0000
11474+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c 2010-08-20 13:27:11 +0000
11475@@ -17,5 +17,5 @@
11476 out_int16x4_t = vqdmulh_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
11477 }
11478
11479-/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11480+/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11481 /* { dg-final { cleanup-saved-temps } } */
11482
11483=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c'
11484--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c 2010-07-29 15:38:15 +0000
11485+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c 2010-08-20 13:27:11 +0000
11486@@ -17,5 +17,5 @@
11487 out_int32x2_t = vqdmulh_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
11488 }
11489
11490-/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11491+/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11492 /* { dg-final { cleanup-saved-temps } } */
11493
11494=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c'
11495--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c 2010-07-29 15:38:15 +0000
11496+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c 2010-08-20 13:27:11 +0000
11497@@ -17,5 +17,5 @@
11498 out_int16x4_t = vqdmulh_n_s16 (arg0_int16x4_t, arg1_int16_t);
11499 }
11500
11501-/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11502+/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11503 /* { dg-final { cleanup-saved-temps } } */
11504
11505=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c'
11506--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c 2010-07-29 15:38:15 +0000
11507+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c 2010-08-20 13:27:11 +0000
11508@@ -17,5 +17,5 @@
11509 out_int32x2_t = vqdmulh_n_s32 (arg0_int32x2_t, arg1_int32_t);
11510 }
11511
11512-/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11513+/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11514 /* { dg-final { cleanup-saved-temps } } */
11515
11516=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c'
11517--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c 2010-07-29 15:38:15 +0000
11518+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c 2010-08-20 13:27:11 +0000
11519@@ -17,5 +17,5 @@
11520 out_int16x4_t = vqdmulh_s16 (arg0_int16x4_t, arg1_int16x4_t);
11521 }
11522
11523-/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11524+/* { dg-final { scan-assembler "vqdmulh\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11525 /* { dg-final { cleanup-saved-temps } } */
11526
11527=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c'
11528--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c 2010-07-29 15:38:15 +0000
11529+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c 2010-08-20 13:27:11 +0000
11530@@ -17,5 +17,5 @@
11531 out_int32x2_t = vqdmulh_s32 (arg0_int32x2_t, arg1_int32x2_t);
11532 }
11533
11534-/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11535+/* { dg-final { scan-assembler "vqdmulh\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11536 /* { dg-final { cleanup-saved-temps } } */
11537
11538=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c'
11539--- old/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c 2010-07-29 15:38:15 +0000
11540+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c 2010-08-20 13:27:11 +0000
11541@@ -17,5 +17,5 @@
11542 out_int32x4_t = vqdmull_lane_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
11543 }
11544
11545-/* { dg-final { scan-assembler "vqdmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11546+/* { dg-final { scan-assembler "vqdmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11547 /* { dg-final { cleanup-saved-temps } } */
11548
11549=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c'
11550--- old/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c 2010-07-29 15:38:15 +0000
11551+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c 2010-08-20 13:27:11 +0000
11552@@ -17,5 +17,5 @@
11553 out_int64x2_t = vqdmull_lane_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
11554 }
11555
11556-/* { dg-final { scan-assembler "vqdmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11557+/* { dg-final { scan-assembler "vqdmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11558 /* { dg-final { cleanup-saved-temps } } */
11559
11560=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c'
11561--- old/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c 2010-07-29 15:38:15 +0000
11562+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c 2010-08-20 13:27:11 +0000
11563@@ -17,5 +17,5 @@
11564 out_int32x4_t = vqdmull_n_s16 (arg0_int16x4_t, arg1_int16_t);
11565 }
11566
11567-/* { dg-final { scan-assembler "vqdmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11568+/* { dg-final { scan-assembler "vqdmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11569 /* { dg-final { cleanup-saved-temps } } */
11570
11571=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c'
11572--- old/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c 2010-07-29 15:38:15 +0000
11573+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c 2010-08-20 13:27:11 +0000
11574@@ -17,5 +17,5 @@
11575 out_int64x2_t = vqdmull_n_s32 (arg0_int32x2_t, arg1_int32_t);
11576 }
11577
11578-/* { dg-final { scan-assembler "vqdmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11579+/* { dg-final { scan-assembler "vqdmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
11580 /* { dg-final { cleanup-saved-temps } } */
11581
11582=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c'
11583--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c 2010-07-29 15:38:15 +0000
11584+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c 2010-08-20 13:27:11 +0000
11585@@ -17,5 +17,5 @@
11586 out_int32x4_t = vqdmull_s16 (arg0_int16x4_t, arg1_int16x4_t);
11587 }
11588
11589-/* { dg-final { scan-assembler "vqdmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11590+/* { dg-final { scan-assembler "vqdmull\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11591 /* { dg-final { cleanup-saved-temps } } */
11592
11593=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c'
11594--- old/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c 2010-07-29 15:38:15 +0000
11595+++ new/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c 2010-08-20 13:27:11 +0000
11596@@ -17,5 +17,5 @@
11597 out_int64x2_t = vqdmull_s32 (arg0_int32x2_t, arg1_int32x2_t);
11598 }
11599
11600-/* { dg-final { scan-assembler "vqdmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11601+/* { dg-final { scan-assembler "vqdmull\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11602 /* { dg-final { cleanup-saved-temps } } */
11603
11604=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovns16.c'
11605--- old/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c 2010-07-29 15:38:15 +0000
11606+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c 2010-08-20 13:27:11 +0000
11607@@ -16,5 +16,5 @@
11608 out_int8x8_t = vqmovn_s16 (arg0_int16x8_t);
11609 }
11610
11611-/* { dg-final { scan-assembler "vqmovn\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11612+/* { dg-final { scan-assembler "vqmovn\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11613 /* { dg-final { cleanup-saved-temps } } */
11614
11615=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovns32.c'
11616--- old/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c 2010-07-29 15:38:15 +0000
11617+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c 2010-08-20 13:27:11 +0000
11618@@ -16,5 +16,5 @@
11619 out_int16x4_t = vqmovn_s32 (arg0_int32x4_t);
11620 }
11621
11622-/* { dg-final { scan-assembler "vqmovn\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11623+/* { dg-final { scan-assembler "vqmovn\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11624 /* { dg-final { cleanup-saved-temps } } */
11625
11626=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovns64.c'
11627--- old/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c 2010-07-29 15:38:15 +0000
11628+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c 2010-08-20 13:27:11 +0000
11629@@ -16,5 +16,5 @@
11630 out_int32x2_t = vqmovn_s64 (arg0_int64x2_t);
11631 }
11632
11633-/* { dg-final { scan-assembler "vqmovn\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11634+/* { dg-final { scan-assembler "vqmovn\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11635 /* { dg-final { cleanup-saved-temps } } */
11636
11637=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c'
11638--- old/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c 2010-07-29 15:38:15 +0000
11639+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c 2010-08-20 13:27:11 +0000
11640@@ -16,5 +16,5 @@
11641 out_uint8x8_t = vqmovn_u16 (arg0_uint16x8_t);
11642 }
11643
11644-/* { dg-final { scan-assembler "vqmovn\.u16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11645+/* { dg-final { scan-assembler "vqmovn\.u16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11646 /* { dg-final { cleanup-saved-temps } } */
11647
11648=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c'
11649--- old/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c 2010-07-29 15:38:15 +0000
11650+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c 2010-08-20 13:27:11 +0000
11651@@ -16,5 +16,5 @@
11652 out_uint16x4_t = vqmovn_u32 (arg0_uint32x4_t);
11653 }
11654
11655-/* { dg-final { scan-assembler "vqmovn\.u32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11656+/* { dg-final { scan-assembler "vqmovn\.u32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11657 /* { dg-final { cleanup-saved-temps } } */
11658
11659=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c'
11660--- old/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c 2010-07-29 15:38:15 +0000
11661+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c 2010-08-20 13:27:11 +0000
11662@@ -16,5 +16,5 @@
11663 out_uint32x2_t = vqmovn_u64 (arg0_uint64x2_t);
11664 }
11665
11666-/* { dg-final { scan-assembler "vqmovn\.u64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11667+/* { dg-final { scan-assembler "vqmovn\.u64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11668 /* { dg-final { cleanup-saved-temps } } */
11669
11670=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c'
11671--- old/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c 2010-07-29 15:38:15 +0000
11672+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c 2010-08-20 13:27:11 +0000
11673@@ -16,5 +16,5 @@
11674 out_uint8x8_t = vqmovun_s16 (arg0_int16x8_t);
11675 }
11676
11677-/* { dg-final { scan-assembler "vqmovun\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11678+/* { dg-final { scan-assembler "vqmovun\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11679 /* { dg-final { cleanup-saved-temps } } */
11680
11681=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c'
11682--- old/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c 2010-07-29 15:38:15 +0000
11683+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c 2010-08-20 13:27:11 +0000
11684@@ -16,5 +16,5 @@
11685 out_uint16x4_t = vqmovun_s32 (arg0_int32x4_t);
11686 }
11687
11688-/* { dg-final { scan-assembler "vqmovun\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11689+/* { dg-final { scan-assembler "vqmovun\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11690 /* { dg-final { cleanup-saved-temps } } */
11691
11692=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c'
11693--- old/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c 2010-07-29 15:38:15 +0000
11694+++ new/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c 2010-08-20 13:27:11 +0000
11695@@ -16,5 +16,5 @@
11696 out_uint32x2_t = vqmovun_s64 (arg0_int64x2_t);
11697 }
11698
11699-/* { dg-final { scan-assembler "vqmovun\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11700+/* { dg-final { scan-assembler "vqmovun\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11701 /* { dg-final { cleanup-saved-temps } } */
11702
11703=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c'
11704--- old/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c 2010-07-29 15:38:15 +0000
11705+++ new/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c 2010-08-20 13:27:11 +0000
11706@@ -16,5 +16,5 @@
11707 out_int16x8_t = vqnegq_s16 (arg0_int16x8_t);
11708 }
11709
11710-/* { dg-final { scan-assembler "vqneg\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11711+/* { dg-final { scan-assembler "vqneg\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11712 /* { dg-final { cleanup-saved-temps } } */
11713
11714=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c'
11715--- old/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c 2010-07-29 15:38:15 +0000
11716+++ new/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c 2010-08-20 13:27:11 +0000
11717@@ -16,5 +16,5 @@
11718 out_int32x4_t = vqnegq_s32 (arg0_int32x4_t);
11719 }
11720
11721-/* { dg-final { scan-assembler "vqneg\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11722+/* { dg-final { scan-assembler "vqneg\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11723 /* { dg-final { cleanup-saved-temps } } */
11724
11725=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c'
11726--- old/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c 2010-07-29 15:38:15 +0000
11727+++ new/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c 2010-08-20 13:27:11 +0000
11728@@ -16,5 +16,5 @@
11729 out_int8x16_t = vqnegq_s8 (arg0_int8x16_t);
11730 }
11731
11732-/* { dg-final { scan-assembler "vqneg\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11733+/* { dg-final { scan-assembler "vqneg\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11734 /* { dg-final { cleanup-saved-temps } } */
11735
11736=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqnegs16.c'
11737--- old/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c 2010-07-29 15:38:15 +0000
11738+++ new/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c 2010-08-20 13:27:11 +0000
11739@@ -16,5 +16,5 @@
11740 out_int16x4_t = vqneg_s16 (arg0_int16x4_t);
11741 }
11742
11743-/* { dg-final { scan-assembler "vqneg\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11744+/* { dg-final { scan-assembler "vqneg\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11745 /* { dg-final { cleanup-saved-temps } } */
11746
11747=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqnegs32.c'
11748--- old/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c 2010-07-29 15:38:15 +0000
11749+++ new/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c 2010-08-20 13:27:11 +0000
11750@@ -16,5 +16,5 @@
11751 out_int32x2_t = vqneg_s32 (arg0_int32x2_t);
11752 }
11753
11754-/* { dg-final { scan-assembler "vqneg\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11755+/* { dg-final { scan-assembler "vqneg\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11756 /* { dg-final { cleanup-saved-temps } } */
11757
11758=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqnegs8.c'
11759--- old/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c 2010-07-29 15:38:15 +0000
11760+++ new/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c 2010-08-20 13:27:11 +0000
11761@@ -16,5 +16,5 @@
11762 out_int8x8_t = vqneg_s8 (arg0_int8x8_t);
11763 }
11764
11765-/* { dg-final { scan-assembler "vqneg\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11766+/* { dg-final { scan-assembler "vqneg\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11767 /* { dg-final { cleanup-saved-temps } } */
11768
11769=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c'
11770--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c 2010-07-29 15:38:15 +0000
11771+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c 2010-08-20 13:27:11 +0000
11772@@ -16,5 +16,5 @@
11773 out_int16x8_t = vqshlq_n_s16 (arg0_int16x8_t, 1);
11774 }
11775
11776-/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11777+/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11778 /* { dg-final { cleanup-saved-temps } } */
11779
11780=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c'
11781--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c 2010-07-29 15:38:15 +0000
11782+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c 2010-08-20 13:27:11 +0000
11783@@ -16,5 +16,5 @@
11784 out_int32x4_t = vqshlq_n_s32 (arg0_int32x4_t, 1);
11785 }
11786
11787-/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11788+/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11789 /* { dg-final { cleanup-saved-temps } } */
11790
11791=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c'
11792--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c 2010-07-29 15:38:15 +0000
11793+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c 2010-08-20 13:27:11 +0000
11794@@ -16,5 +16,5 @@
11795 out_int64x2_t = vqshlq_n_s64 (arg0_int64x2_t, 1);
11796 }
11797
11798-/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11799+/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11800 /* { dg-final { cleanup-saved-temps } } */
11801
11802=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c'
11803--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c 2010-07-29 15:38:15 +0000
11804+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c 2010-08-20 13:27:11 +0000
11805@@ -16,5 +16,5 @@
11806 out_int8x16_t = vqshlq_n_s8 (arg0_int8x16_t, 1);
11807 }
11808
11809-/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11810+/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11811 /* { dg-final { cleanup-saved-temps } } */
11812
11813=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c'
11814--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c 2010-07-29 15:38:15 +0000
11815+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c 2010-08-20 13:27:11 +0000
11816@@ -16,5 +16,5 @@
11817 out_uint16x8_t = vqshlq_n_u16 (arg0_uint16x8_t, 1);
11818 }
11819
11820-/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11821+/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11822 /* { dg-final { cleanup-saved-temps } } */
11823
11824=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c'
11825--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c 2010-07-29 15:38:15 +0000
11826+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c 2010-08-20 13:27:11 +0000
11827@@ -16,5 +16,5 @@
11828 out_uint32x4_t = vqshlq_n_u32 (arg0_uint32x4_t, 1);
11829 }
11830
11831-/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11832+/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11833 /* { dg-final { cleanup-saved-temps } } */
11834
11835=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c'
11836--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c 2010-07-29 15:38:15 +0000
11837+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c 2010-08-20 13:27:11 +0000
11838@@ -16,5 +16,5 @@
11839 out_uint64x2_t = vqshlq_n_u64 (arg0_uint64x2_t, 1);
11840 }
11841
11842-/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11843+/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11844 /* { dg-final { cleanup-saved-temps } } */
11845
11846=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c'
11847--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c 2010-07-29 15:38:15 +0000
11848+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c 2010-08-20 13:27:11 +0000
11849@@ -16,5 +16,5 @@
11850 out_uint8x16_t = vqshlq_n_u8 (arg0_uint8x16_t, 1);
11851 }
11852
11853-/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11854+/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11855 /* { dg-final { cleanup-saved-temps } } */
11856
11857=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c'
11858--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c 2010-07-29 15:38:15 +0000
11859+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c 2010-08-20 13:27:11 +0000
11860@@ -17,5 +17,5 @@
11861 out_int16x8_t = vqshlq_s16 (arg0_int16x8_t, arg1_int16x8_t);
11862 }
11863
11864-/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11865+/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11866 /* { dg-final { cleanup-saved-temps } } */
11867
11868=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c'
11869--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c 2010-07-29 15:38:15 +0000
11870+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c 2010-08-20 13:27:11 +0000
11871@@ -17,5 +17,5 @@
11872 out_int32x4_t = vqshlq_s32 (arg0_int32x4_t, arg1_int32x4_t);
11873 }
11874
11875-/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11876+/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11877 /* { dg-final { cleanup-saved-temps } } */
11878
11879=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c'
11880--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c 2010-07-29 15:38:15 +0000
11881+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c 2010-08-20 13:27:11 +0000
11882@@ -17,5 +17,5 @@
11883 out_int64x2_t = vqshlq_s64 (arg0_int64x2_t, arg1_int64x2_t);
11884 }
11885
11886-/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11887+/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11888 /* { dg-final { cleanup-saved-temps } } */
11889
11890=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c'
11891--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c 2010-07-29 15:38:15 +0000
11892+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c 2010-08-20 13:27:11 +0000
11893@@ -17,5 +17,5 @@
11894 out_int8x16_t = vqshlq_s8 (arg0_int8x16_t, arg1_int8x16_t);
11895 }
11896
11897-/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11898+/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11899 /* { dg-final { cleanup-saved-temps } } */
11900
11901=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c'
11902--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c 2010-07-29 15:38:15 +0000
11903+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c 2010-08-20 13:27:11 +0000
11904@@ -17,5 +17,5 @@
11905 out_uint16x8_t = vqshlq_u16 (arg0_uint16x8_t, arg1_int16x8_t);
11906 }
11907
11908-/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11909+/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11910 /* { dg-final { cleanup-saved-temps } } */
11911
11912=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c'
11913--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c 2010-07-29 15:38:15 +0000
11914+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c 2010-08-20 13:27:11 +0000
11915@@ -17,5 +17,5 @@
11916 out_uint32x4_t = vqshlq_u32 (arg0_uint32x4_t, arg1_int32x4_t);
11917 }
11918
11919-/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11920+/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11921 /* { dg-final { cleanup-saved-temps } } */
11922
11923=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c'
11924--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c 2010-07-29 15:38:15 +0000
11925+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c 2010-08-20 13:27:11 +0000
11926@@ -17,5 +17,5 @@
11927 out_uint64x2_t = vqshlq_u64 (arg0_uint64x2_t, arg1_int64x2_t);
11928 }
11929
11930-/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11931+/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11932 /* { dg-final { cleanup-saved-temps } } */
11933
11934=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c'
11935--- old/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c 2010-07-29 15:38:15 +0000
11936+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c 2010-08-20 13:27:11 +0000
11937@@ -17,5 +17,5 @@
11938 out_uint8x16_t = vqshlq_u8 (arg0_uint8x16_t, arg1_int8x16_t);
11939 }
11940
11941-/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11942+/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11943 /* { dg-final { cleanup-saved-temps } } */
11944
11945=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c'
11946--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c 2010-07-29 15:38:15 +0000
11947+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c 2010-08-20 13:27:11 +0000
11948@@ -16,5 +16,5 @@
11949 out_int16x4_t = vqshl_n_s16 (arg0_int16x4_t, 1);
11950 }
11951
11952-/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11953+/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11954 /* { dg-final { cleanup-saved-temps } } */
11955
11956=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c'
11957--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c 2010-07-29 15:38:15 +0000
11958+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c 2010-08-20 13:27:11 +0000
11959@@ -16,5 +16,5 @@
11960 out_int32x2_t = vqshl_n_s32 (arg0_int32x2_t, 1);
11961 }
11962
11963-/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11964+/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11965 /* { dg-final { cleanup-saved-temps } } */
11966
11967=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c'
11968--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c 2010-07-29 15:38:15 +0000
11969+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c 2010-08-20 13:27:11 +0000
11970@@ -16,5 +16,5 @@
11971 out_int64x1_t = vqshl_n_s64 (arg0_int64x1_t, 1);
11972 }
11973
11974-/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11975+/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11976 /* { dg-final { cleanup-saved-temps } } */
11977
11978=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c'
11979--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c 2010-07-29 15:38:15 +0000
11980+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c 2010-08-20 13:27:11 +0000
11981@@ -16,5 +16,5 @@
11982 out_int8x8_t = vqshl_n_s8 (arg0_int8x8_t, 1);
11983 }
11984
11985-/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11986+/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11987 /* { dg-final { cleanup-saved-temps } } */
11988
11989=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c'
11990--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c 2010-07-29 15:38:15 +0000
11991+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c 2010-08-20 13:27:11 +0000
11992@@ -16,5 +16,5 @@
11993 out_uint16x4_t = vqshl_n_u16 (arg0_uint16x4_t, 1);
11994 }
11995
11996-/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
11997+/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
11998 /* { dg-final { cleanup-saved-temps } } */
11999
12000=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c'
12001--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c 2010-07-29 15:38:15 +0000
12002+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c 2010-08-20 13:27:11 +0000
12003@@ -16,5 +16,5 @@
12004 out_uint32x2_t = vqshl_n_u32 (arg0_uint32x2_t, 1);
12005 }
12006
12007-/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12008+/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12009 /* { dg-final { cleanup-saved-temps } } */
12010
12011=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c'
12012--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c 2010-07-29 15:38:15 +0000
12013+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c 2010-08-20 13:27:11 +0000
12014@@ -16,5 +16,5 @@
12015 out_uint64x1_t = vqshl_n_u64 (arg0_uint64x1_t, 1);
12016 }
12017
12018-/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12019+/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12020 /* { dg-final { cleanup-saved-temps } } */
12021
12022=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c'
12023--- old/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c 2010-07-29 15:38:15 +0000
12024+++ new/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c 2010-08-20 13:27:11 +0000
12025@@ -16,5 +16,5 @@
12026 out_uint8x8_t = vqshl_n_u8 (arg0_uint8x8_t, 1);
12027 }
12028
12029-/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12030+/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12031 /* { dg-final { cleanup-saved-temps } } */
12032
12033=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshls16.c'
12034--- old/gcc/testsuite/gcc.target/arm/neon/vqshls16.c 2010-07-29 15:38:15 +0000
12035+++ new/gcc/testsuite/gcc.target/arm/neon/vqshls16.c 2010-08-20 13:27:11 +0000
12036@@ -17,5 +17,5 @@
12037 out_int16x4_t = vqshl_s16 (arg0_int16x4_t, arg1_int16x4_t);
12038 }
12039
12040-/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12041+/* { dg-final { scan-assembler "vqshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12042 /* { dg-final { cleanup-saved-temps } } */
12043
12044=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshls32.c'
12045--- old/gcc/testsuite/gcc.target/arm/neon/vqshls32.c 2010-07-29 15:38:15 +0000
12046+++ new/gcc/testsuite/gcc.target/arm/neon/vqshls32.c 2010-08-20 13:27:11 +0000
12047@@ -17,5 +17,5 @@
12048 out_int32x2_t = vqshl_s32 (arg0_int32x2_t, arg1_int32x2_t);
12049 }
12050
12051-/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12052+/* { dg-final { scan-assembler "vqshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12053 /* { dg-final { cleanup-saved-temps } } */
12054
12055=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshls64.c'
12056--- old/gcc/testsuite/gcc.target/arm/neon/vqshls64.c 2010-07-29 15:38:15 +0000
12057+++ new/gcc/testsuite/gcc.target/arm/neon/vqshls64.c 2010-08-20 13:27:11 +0000
12058@@ -17,5 +17,5 @@
12059 out_int64x1_t = vqshl_s64 (arg0_int64x1_t, arg1_int64x1_t);
12060 }
12061
12062-/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12063+/* { dg-final { scan-assembler "vqshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12064 /* { dg-final { cleanup-saved-temps } } */
12065
12066=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshls8.c'
12067--- old/gcc/testsuite/gcc.target/arm/neon/vqshls8.c 2010-07-29 15:38:15 +0000
12068+++ new/gcc/testsuite/gcc.target/arm/neon/vqshls8.c 2010-08-20 13:27:11 +0000
12069@@ -17,5 +17,5 @@
12070 out_int8x8_t = vqshl_s8 (arg0_int8x8_t, arg1_int8x8_t);
12071 }
12072
12073-/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12074+/* { dg-final { scan-assembler "vqshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12075 /* { dg-final { cleanup-saved-temps } } */
12076
12077=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu16.c'
12078--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c 2010-07-29 15:38:15 +0000
12079+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c 2010-08-20 13:27:11 +0000
12080@@ -17,5 +17,5 @@
12081 out_uint16x4_t = vqshl_u16 (arg0_uint16x4_t, arg1_int16x4_t);
12082 }
12083
12084-/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12085+/* { dg-final { scan-assembler "vqshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12086 /* { dg-final { cleanup-saved-temps } } */
12087
12088=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu32.c'
12089--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c 2010-07-29 15:38:15 +0000
12090+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c 2010-08-20 13:27:11 +0000
12091@@ -17,5 +17,5 @@
12092 out_uint32x2_t = vqshl_u32 (arg0_uint32x2_t, arg1_int32x2_t);
12093 }
12094
12095-/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12096+/* { dg-final { scan-assembler "vqshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12097 /* { dg-final { cleanup-saved-temps } } */
12098
12099=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu64.c'
12100--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c 2010-07-29 15:38:15 +0000
12101+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c 2010-08-20 13:27:11 +0000
12102@@ -17,5 +17,5 @@
12103 out_uint64x1_t = vqshl_u64 (arg0_uint64x1_t, arg1_int64x1_t);
12104 }
12105
12106-/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12107+/* { dg-final { scan-assembler "vqshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12108 /* { dg-final { cleanup-saved-temps } } */
12109
12110=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu8.c'
12111--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c 2010-07-29 15:38:15 +0000
12112+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c 2010-08-20 13:27:11 +0000
12113@@ -17,5 +17,5 @@
12114 out_uint8x8_t = vqshl_u8 (arg0_uint8x8_t, arg1_int8x8_t);
12115 }
12116
12117-/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12118+/* { dg-final { scan-assembler "vqshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12119 /* { dg-final { cleanup-saved-temps } } */
12120
12121=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c'
12122--- old/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c 2010-07-29 15:38:15 +0000
12123+++ new/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c 2010-08-20 13:27:11 +0000
12124@@ -16,5 +16,5 @@
12125 out_uint16x8_t = vqshluq_n_s16 (arg0_int16x8_t, 1);
12126 }
12127
12128-/* { dg-final { scan-assembler "vqshlu\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12129+/* { dg-final { scan-assembler "vqshlu\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12130 /* { dg-final { cleanup-saved-temps } } */
12131
12132=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c'
12133--- old/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c 2010-07-29 15:38:15 +0000
12134+++ new/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c 2010-08-20 13:27:11 +0000
12135@@ -16,5 +16,5 @@
12136 out_uint32x4_t = vqshluq_n_s32 (arg0_int32x4_t, 1);
12137 }
12138
12139-/* { dg-final { scan-assembler "vqshlu\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12140+/* { dg-final { scan-assembler "vqshlu\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12141 /* { dg-final { cleanup-saved-temps } } */
12142
12143=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c'
12144--- old/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c 2010-07-29 15:38:15 +0000
12145+++ new/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c 2010-08-20 13:27:11 +0000
12146@@ -16,5 +16,5 @@
12147 out_uint64x2_t = vqshluq_n_s64 (arg0_int64x2_t, 1);
12148 }
12149
12150-/* { dg-final { scan-assembler "vqshlu\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12151+/* { dg-final { scan-assembler "vqshlu\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12152 /* { dg-final { cleanup-saved-temps } } */
12153
12154=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c'
12155--- old/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c 2010-07-29 15:38:15 +0000
12156+++ new/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c 2010-08-20 13:27:11 +0000
12157@@ -16,5 +16,5 @@
12158 out_uint8x16_t = vqshluq_n_s8 (arg0_int8x16_t, 1);
12159 }
12160
12161-/* { dg-final { scan-assembler "vqshlu\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12162+/* { dg-final { scan-assembler "vqshlu\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12163 /* { dg-final { cleanup-saved-temps } } */
12164
12165=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c'
12166--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c 2010-07-29 15:38:15 +0000
12167+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c 2010-08-20 13:27:11 +0000
12168@@ -16,5 +16,5 @@
12169 out_uint16x4_t = vqshlu_n_s16 (arg0_int16x4_t, 1);
12170 }
12171
12172-/* { dg-final { scan-assembler "vqshlu\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12173+/* { dg-final { scan-assembler "vqshlu\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12174 /* { dg-final { cleanup-saved-temps } } */
12175
12176=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c'
12177--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c 2010-07-29 15:38:15 +0000
12178+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c 2010-08-20 13:27:11 +0000
12179@@ -16,5 +16,5 @@
12180 out_uint32x2_t = vqshlu_n_s32 (arg0_int32x2_t, 1);
12181 }
12182
12183-/* { dg-final { scan-assembler "vqshlu\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12184+/* { dg-final { scan-assembler "vqshlu\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12185 /* { dg-final { cleanup-saved-temps } } */
12186
12187=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c'
12188--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c 2010-07-29 15:38:15 +0000
12189+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c 2010-08-20 13:27:11 +0000
12190@@ -16,5 +16,5 @@
12191 out_uint64x1_t = vqshlu_n_s64 (arg0_int64x1_t, 1);
12192 }
12193
12194-/* { dg-final { scan-assembler "vqshlu\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12195+/* { dg-final { scan-assembler "vqshlu\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12196 /* { dg-final { cleanup-saved-temps } } */
12197
12198=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c'
12199--- old/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c 2010-07-29 15:38:15 +0000
12200+++ new/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c 2010-08-20 13:27:11 +0000
12201@@ -16,5 +16,5 @@
12202 out_uint8x8_t = vqshlu_n_s8 (arg0_int8x8_t, 1);
12203 }
12204
12205-/* { dg-final { scan-assembler "vqshlu\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12206+/* { dg-final { scan-assembler "vqshlu\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12207 /* { dg-final { cleanup-saved-temps } } */
12208
12209=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c'
12210--- old/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c 2010-07-29 15:38:15 +0000
12211+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c 2010-08-20 13:27:11 +0000
12212@@ -16,5 +16,5 @@
12213 out_int8x8_t = vqshrn_n_s16 (arg0_int16x8_t, 1);
12214 }
12215
12216-/* { dg-final { scan-assembler "vqshrn\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12217+/* { dg-final { scan-assembler "vqshrn\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12218 /* { dg-final { cleanup-saved-temps } } */
12219
12220=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c'
12221--- old/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c 2010-07-29 15:38:15 +0000
12222+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c 2010-08-20 13:27:11 +0000
12223@@ -16,5 +16,5 @@
12224 out_int16x4_t = vqshrn_n_s32 (arg0_int32x4_t, 1);
12225 }
12226
12227-/* { dg-final { scan-assembler "vqshrn\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12228+/* { dg-final { scan-assembler "vqshrn\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12229 /* { dg-final { cleanup-saved-temps } } */
12230
12231=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c'
12232--- old/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c 2010-07-29 15:38:15 +0000
12233+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c 2010-08-20 13:27:11 +0000
12234@@ -16,5 +16,5 @@
12235 out_int32x2_t = vqshrn_n_s64 (arg0_int64x2_t, 1);
12236 }
12237
12238-/* { dg-final { scan-assembler "vqshrn\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12239+/* { dg-final { scan-assembler "vqshrn\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12240 /* { dg-final { cleanup-saved-temps } } */
12241
12242=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c'
12243--- old/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c 2010-07-29 15:38:15 +0000
12244+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c 2010-08-20 13:27:11 +0000
12245@@ -16,5 +16,5 @@
12246 out_uint8x8_t = vqshrn_n_u16 (arg0_uint16x8_t, 1);
12247 }
12248
12249-/* { dg-final { scan-assembler "vqshrn\.u16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12250+/* { dg-final { scan-assembler "vqshrn\.u16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12251 /* { dg-final { cleanup-saved-temps } } */
12252
12253=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c'
12254--- old/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c 2010-07-29 15:38:15 +0000
12255+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c 2010-08-20 13:27:11 +0000
12256@@ -16,5 +16,5 @@
12257 out_uint16x4_t = vqshrn_n_u32 (arg0_uint32x4_t, 1);
12258 }
12259
12260-/* { dg-final { scan-assembler "vqshrn\.u32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12261+/* { dg-final { scan-assembler "vqshrn\.u32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12262 /* { dg-final { cleanup-saved-temps } } */
12263
12264=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c'
12265--- old/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c 2010-07-29 15:38:15 +0000
12266+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c 2010-08-20 13:27:11 +0000
12267@@ -16,5 +16,5 @@
12268 out_uint32x2_t = vqshrn_n_u64 (arg0_uint64x2_t, 1);
12269 }
12270
12271-/* { dg-final { scan-assembler "vqshrn\.u64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12272+/* { dg-final { scan-assembler "vqshrn\.u64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12273 /* { dg-final { cleanup-saved-temps } } */
12274
12275=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c'
12276--- old/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c 2010-07-29 15:38:15 +0000
12277+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c 2010-08-20 13:27:11 +0000
12278@@ -16,5 +16,5 @@
12279 out_uint8x8_t = vqshrun_n_s16 (arg0_int16x8_t, 1);
12280 }
12281
12282-/* { dg-final { scan-assembler "vqshrun\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12283+/* { dg-final { scan-assembler "vqshrun\.s16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12284 /* { dg-final { cleanup-saved-temps } } */
12285
12286=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c'
12287--- old/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c 2010-07-29 15:38:15 +0000
12288+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c 2010-08-20 13:27:11 +0000
12289@@ -16,5 +16,5 @@
12290 out_uint16x4_t = vqshrun_n_s32 (arg0_int32x4_t, 1);
12291 }
12292
12293-/* { dg-final { scan-assembler "vqshrun\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12294+/* { dg-final { scan-assembler "vqshrun\.s32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12295 /* { dg-final { cleanup-saved-temps } } */
12296
12297=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c'
12298--- old/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c 2010-07-29 15:38:15 +0000
12299+++ new/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c 2010-08-20 13:27:11 +0000
12300@@ -16,5 +16,5 @@
12301 out_uint32x2_t = vqshrun_n_s64 (arg0_int64x2_t, 1);
12302 }
12303
12304-/* { dg-final { scan-assembler "vqshrun\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12305+/* { dg-final { scan-assembler "vqshrun\.s64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12306 /* { dg-final { cleanup-saved-temps } } */
12307
12308=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c'
12309--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c 2010-07-29 15:38:15 +0000
12310+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c 2010-08-20 13:27:11 +0000
12311@@ -17,5 +17,5 @@
12312 out_int16x8_t = vqsubq_s16 (arg0_int16x8_t, arg1_int16x8_t);
12313 }
12314
12315-/* { dg-final { scan-assembler "vqsub\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12316+/* { dg-final { scan-assembler "vqsub\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12317 /* { dg-final { cleanup-saved-temps } } */
12318
12319=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c'
12320--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c 2010-07-29 15:38:15 +0000
12321+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c 2010-08-20 13:27:11 +0000
12322@@ -17,5 +17,5 @@
12323 out_int32x4_t = vqsubq_s32 (arg0_int32x4_t, arg1_int32x4_t);
12324 }
12325
12326-/* { dg-final { scan-assembler "vqsub\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12327+/* { dg-final { scan-assembler "vqsub\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12328 /* { dg-final { cleanup-saved-temps } } */
12329
12330=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c'
12331--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c 2010-07-29 15:38:15 +0000
12332+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c 2010-08-20 13:27:11 +0000
12333@@ -17,5 +17,5 @@
12334 out_int64x2_t = vqsubq_s64 (arg0_int64x2_t, arg1_int64x2_t);
12335 }
12336
12337-/* { dg-final { scan-assembler "vqsub\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12338+/* { dg-final { scan-assembler "vqsub\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12339 /* { dg-final { cleanup-saved-temps } } */
12340
12341=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c'
12342--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c 2010-07-29 15:38:15 +0000
12343+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c 2010-08-20 13:27:11 +0000
12344@@ -17,5 +17,5 @@
12345 out_int8x16_t = vqsubq_s8 (arg0_int8x16_t, arg1_int8x16_t);
12346 }
12347
12348-/* { dg-final { scan-assembler "vqsub\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12349+/* { dg-final { scan-assembler "vqsub\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12350 /* { dg-final { cleanup-saved-temps } } */
12351
12352=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c'
12353--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c 2010-07-29 15:38:15 +0000
12354+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c 2010-08-20 13:27:11 +0000
12355@@ -17,5 +17,5 @@
12356 out_uint16x8_t = vqsubq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
12357 }
12358
12359-/* { dg-final { scan-assembler "vqsub\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12360+/* { dg-final { scan-assembler "vqsub\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12361 /* { dg-final { cleanup-saved-temps } } */
12362
12363=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c'
12364--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c 2010-07-29 15:38:15 +0000
12365+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c 2010-08-20 13:27:11 +0000
12366@@ -17,5 +17,5 @@
12367 out_uint32x4_t = vqsubq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
12368 }
12369
12370-/* { dg-final { scan-assembler "vqsub\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12371+/* { dg-final { scan-assembler "vqsub\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12372 /* { dg-final { cleanup-saved-temps } } */
12373
12374=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c'
12375--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c 2010-07-29 15:38:15 +0000
12376+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c 2010-08-20 13:27:11 +0000
12377@@ -17,5 +17,5 @@
12378 out_uint64x2_t = vqsubq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
12379 }
12380
12381-/* { dg-final { scan-assembler "vqsub\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12382+/* { dg-final { scan-assembler "vqsub\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12383 /* { dg-final { cleanup-saved-temps } } */
12384
12385=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c'
12386--- old/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c 2010-07-29 15:38:15 +0000
12387+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c 2010-08-20 13:27:11 +0000
12388@@ -17,5 +17,5 @@
12389 out_uint8x16_t = vqsubq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
12390 }
12391
12392-/* { dg-final { scan-assembler "vqsub\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12393+/* { dg-final { scan-assembler "vqsub\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12394 /* { dg-final { cleanup-saved-temps } } */
12395
12396=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubs16.c'
12397--- old/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c 2010-07-29 15:38:15 +0000
12398+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c 2010-08-20 13:27:11 +0000
12399@@ -17,5 +17,5 @@
12400 out_int16x4_t = vqsub_s16 (arg0_int16x4_t, arg1_int16x4_t);
12401 }
12402
12403-/* { dg-final { scan-assembler "vqsub\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12404+/* { dg-final { scan-assembler "vqsub\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12405 /* { dg-final { cleanup-saved-temps } } */
12406
12407=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubs32.c'
12408--- old/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c 2010-07-29 15:38:15 +0000
12409+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c 2010-08-20 13:27:11 +0000
12410@@ -17,5 +17,5 @@
12411 out_int32x2_t = vqsub_s32 (arg0_int32x2_t, arg1_int32x2_t);
12412 }
12413
12414-/* { dg-final { scan-assembler "vqsub\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12415+/* { dg-final { scan-assembler "vqsub\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12416 /* { dg-final { cleanup-saved-temps } } */
12417
12418=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubs64.c'
12419--- old/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c 2010-07-29 15:38:15 +0000
12420+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c 2010-08-20 13:27:11 +0000
12421@@ -17,5 +17,5 @@
12422 out_int64x1_t = vqsub_s64 (arg0_int64x1_t, arg1_int64x1_t);
12423 }
12424
12425-/* { dg-final { scan-assembler "vqsub\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12426+/* { dg-final { scan-assembler "vqsub\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12427 /* { dg-final { cleanup-saved-temps } } */
12428
12429=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubs8.c'
12430--- old/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c 2010-07-29 15:38:15 +0000
12431+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c 2010-08-20 13:27:11 +0000
12432@@ -17,5 +17,5 @@
12433 out_int8x8_t = vqsub_s8 (arg0_int8x8_t, arg1_int8x8_t);
12434 }
12435
12436-/* { dg-final { scan-assembler "vqsub\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12437+/* { dg-final { scan-assembler "vqsub\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12438 /* { dg-final { cleanup-saved-temps } } */
12439
12440=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubu16.c'
12441--- old/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c 2010-07-29 15:38:15 +0000
12442+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c 2010-08-20 13:27:11 +0000
12443@@ -17,5 +17,5 @@
12444 out_uint16x4_t = vqsub_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
12445 }
12446
12447-/* { dg-final { scan-assembler "vqsub\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12448+/* { dg-final { scan-assembler "vqsub\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12449 /* { dg-final { cleanup-saved-temps } } */
12450
12451=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubu32.c'
12452--- old/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c 2010-07-29 15:38:15 +0000
12453+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c 2010-08-20 13:27:11 +0000
12454@@ -17,5 +17,5 @@
12455 out_uint32x2_t = vqsub_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
12456 }
12457
12458-/* { dg-final { scan-assembler "vqsub\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12459+/* { dg-final { scan-assembler "vqsub\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12460 /* { dg-final { cleanup-saved-temps } } */
12461
12462=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubu64.c'
12463--- old/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c 2010-07-29 15:38:15 +0000
12464+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c 2010-08-20 13:27:11 +0000
12465@@ -17,5 +17,5 @@
12466 out_uint64x1_t = vqsub_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
12467 }
12468
12469-/* { dg-final { scan-assembler "vqsub\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12470+/* { dg-final { scan-assembler "vqsub\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12471 /* { dg-final { cleanup-saved-temps } } */
12472
12473=== modified file 'gcc/testsuite/gcc.target/arm/neon/vqsubu8.c'
12474--- old/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c 2010-07-29 15:38:15 +0000
12475+++ new/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c 2010-08-20 13:27:11 +0000
12476@@ -17,5 +17,5 @@
12477 out_uint8x8_t = vqsub_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
12478 }
12479
12480-/* { dg-final { scan-assembler "vqsub\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12481+/* { dg-final { scan-assembler "vqsub\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12482 /* { dg-final { cleanup-saved-temps } } */
12483
12484=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c'
12485--- old/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c 2010-07-29 15:38:15 +0000
12486+++ new/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c 2010-08-20 13:27:11 +0000
12487@@ -16,5 +16,5 @@
12488 out_float32x4_t = vrecpeq_f32 (arg0_float32x4_t);
12489 }
12490
12491-/* { dg-final { scan-assembler "vrecpe\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12492+/* { dg-final { scan-assembler "vrecpe\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12493 /* { dg-final { cleanup-saved-temps } } */
12494
12495=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c'
12496--- old/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c 2010-07-29 15:38:15 +0000
12497+++ new/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c 2010-08-20 13:27:11 +0000
12498@@ -16,5 +16,5 @@
12499 out_uint32x4_t = vrecpeq_u32 (arg0_uint32x4_t);
12500 }
12501
12502-/* { dg-final { scan-assembler "vrecpe\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12503+/* { dg-final { scan-assembler "vrecpe\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12504 /* { dg-final { cleanup-saved-temps } } */
12505
12506=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrecpef32.c'
12507--- old/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c 2010-07-29 15:38:15 +0000
12508+++ new/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c 2010-08-20 13:27:11 +0000
12509@@ -16,5 +16,5 @@
12510 out_float32x2_t = vrecpe_f32 (arg0_float32x2_t);
12511 }
12512
12513-/* { dg-final { scan-assembler "vrecpe\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12514+/* { dg-final { scan-assembler "vrecpe\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12515 /* { dg-final { cleanup-saved-temps } } */
12516
12517=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c'
12518--- old/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c 2010-07-29 15:38:15 +0000
12519+++ new/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c 2010-08-20 13:27:11 +0000
12520@@ -16,5 +16,5 @@
12521 out_uint32x2_t = vrecpe_u32 (arg0_uint32x2_t);
12522 }
12523
12524-/* { dg-final { scan-assembler "vrecpe\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12525+/* { dg-final { scan-assembler "vrecpe\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12526 /* { dg-final { cleanup-saved-temps } } */
12527
12528=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c'
12529--- old/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c 2010-07-29 15:38:15 +0000
12530+++ new/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c 2010-08-20 13:27:11 +0000
12531@@ -17,5 +17,5 @@
12532 out_float32x4_t = vrecpsq_f32 (arg0_float32x4_t, arg1_float32x4_t);
12533 }
12534
12535-/* { dg-final { scan-assembler "vrecps\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12536+/* { dg-final { scan-assembler "vrecps\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12537 /* { dg-final { cleanup-saved-temps } } */
12538
12539=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c'
12540--- old/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c 2010-07-29 15:38:15 +0000
12541+++ new/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c 2010-08-20 13:27:11 +0000
12542@@ -17,5 +17,5 @@
12543 out_float32x2_t = vrecps_f32 (arg0_float32x2_t, arg1_float32x2_t);
12544 }
12545
12546-/* { dg-final { scan-assembler "vrecps\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12547+/* { dg-final { scan-assembler "vrecps\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12548 /* { dg-final { cleanup-saved-temps } } */
12549
12550=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c'
12551--- old/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c 2010-07-29 15:38:15 +0000
12552+++ new/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c 2010-08-20 13:27:11 +0000
12553@@ -16,5 +16,5 @@
12554 out_poly8x16_t = vrev16q_p8 (arg0_poly8x16_t);
12555 }
12556
12557-/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12558+/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12559 /* { dg-final { cleanup-saved-temps } } */
12560
12561=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c'
12562--- old/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c 2010-07-29 15:38:15 +0000
12563+++ new/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c 2010-08-20 13:27:11 +0000
12564@@ -16,5 +16,5 @@
12565 out_int8x16_t = vrev16q_s8 (arg0_int8x16_t);
12566 }
12567
12568-/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12569+/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12570 /* { dg-final { cleanup-saved-temps } } */
12571
12572=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c'
12573--- old/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c 2010-07-29 15:38:15 +0000
12574+++ new/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c 2010-08-20 13:27:11 +0000
12575@@ -16,5 +16,5 @@
12576 out_uint8x16_t = vrev16q_u8 (arg0_uint8x16_t);
12577 }
12578
12579-/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12580+/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12581 /* { dg-final { cleanup-saved-temps } } */
12582
12583=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev16p8.c'
12584--- old/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c 2010-07-29 15:38:15 +0000
12585+++ new/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c 2010-08-20 13:27:11 +0000
12586@@ -16,5 +16,5 @@
12587 out_poly8x8_t = vrev16_p8 (arg0_poly8x8_t);
12588 }
12589
12590-/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12591+/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12592 /* { dg-final { cleanup-saved-temps } } */
12593
12594=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev16s8.c'
12595--- old/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c 2010-07-29 15:38:15 +0000
12596+++ new/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c 2010-08-20 13:27:11 +0000
12597@@ -16,5 +16,5 @@
12598 out_int8x8_t = vrev16_s8 (arg0_int8x8_t);
12599 }
12600
12601-/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12602+/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12603 /* { dg-final { cleanup-saved-temps } } */
12604
12605=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev16u8.c'
12606--- old/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c 2010-07-29 15:38:15 +0000
12607+++ new/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c 2010-08-20 13:27:11 +0000
12608@@ -16,5 +16,5 @@
12609 out_uint8x8_t = vrev16_u8 (arg0_uint8x8_t);
12610 }
12611
12612-/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12613+/* { dg-final { scan-assembler "vrev16\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12614 /* { dg-final { cleanup-saved-temps } } */
12615
12616=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c'
12617--- old/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c 2010-07-29 15:38:15 +0000
12618+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c 2010-08-20 13:27:11 +0000
12619@@ -16,5 +16,5 @@
12620 out_poly16x8_t = vrev32q_p16 (arg0_poly16x8_t);
12621 }
12622
12623-/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12624+/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12625 /* { dg-final { cleanup-saved-temps } } */
12626
12627=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c'
12628--- old/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c 2010-07-29 15:38:15 +0000
12629+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c 2010-08-20 13:27:11 +0000
12630@@ -16,5 +16,5 @@
12631 out_poly8x16_t = vrev32q_p8 (arg0_poly8x16_t);
12632 }
12633
12634-/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12635+/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12636 /* { dg-final { cleanup-saved-temps } } */
12637
12638=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c'
12639--- old/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c 2010-07-29 15:38:15 +0000
12640+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c 2010-08-20 13:27:11 +0000
12641@@ -16,5 +16,5 @@
12642 out_int16x8_t = vrev32q_s16 (arg0_int16x8_t);
12643 }
12644
12645-/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12646+/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12647 /* { dg-final { cleanup-saved-temps } } */
12648
12649=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c'
12650--- old/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c 2010-07-29 15:38:15 +0000
12651+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c 2010-08-20 13:27:11 +0000
12652@@ -16,5 +16,5 @@
12653 out_int8x16_t = vrev32q_s8 (arg0_int8x16_t);
12654 }
12655
12656-/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12657+/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12658 /* { dg-final { cleanup-saved-temps } } */
12659
12660=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c'
12661--- old/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c 2010-07-29 15:38:15 +0000
12662+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c 2010-08-20 13:27:11 +0000
12663@@ -16,5 +16,5 @@
12664 out_uint16x8_t = vrev32q_u16 (arg0_uint16x8_t);
12665 }
12666
12667-/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12668+/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12669 /* { dg-final { cleanup-saved-temps } } */
12670
12671=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c'
12672--- old/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c 2010-07-29 15:38:15 +0000
12673+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c 2010-08-20 13:27:11 +0000
12674@@ -16,5 +16,5 @@
12675 out_uint8x16_t = vrev32q_u8 (arg0_uint8x16_t);
12676 }
12677
12678-/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12679+/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12680 /* { dg-final { cleanup-saved-temps } } */
12681
12682=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32p16.c'
12683--- old/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c 2010-07-29 15:38:15 +0000
12684+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c 2010-08-20 13:27:11 +0000
12685@@ -16,5 +16,5 @@
12686 out_poly16x4_t = vrev32_p16 (arg0_poly16x4_t);
12687 }
12688
12689-/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12690+/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12691 /* { dg-final { cleanup-saved-temps } } */
12692
12693=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32p8.c'
12694--- old/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c 2010-07-29 15:38:15 +0000
12695+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c 2010-08-20 13:27:11 +0000
12696@@ -16,5 +16,5 @@
12697 out_poly8x8_t = vrev32_p8 (arg0_poly8x8_t);
12698 }
12699
12700-/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12701+/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12702 /* { dg-final { cleanup-saved-temps } } */
12703
12704=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32s16.c'
12705--- old/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c 2010-07-29 15:38:15 +0000
12706+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c 2010-08-20 13:27:11 +0000
12707@@ -16,5 +16,5 @@
12708 out_int16x4_t = vrev32_s16 (arg0_int16x4_t);
12709 }
12710
12711-/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12712+/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12713 /* { dg-final { cleanup-saved-temps } } */
12714
12715=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32s8.c'
12716--- old/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c 2010-07-29 15:38:15 +0000
12717+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c 2010-08-20 13:27:11 +0000
12718@@ -16,5 +16,5 @@
12719 out_int8x8_t = vrev32_s8 (arg0_int8x8_t);
12720 }
12721
12722-/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12723+/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12724 /* { dg-final { cleanup-saved-temps } } */
12725
12726=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32u16.c'
12727--- old/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c 2010-07-29 15:38:15 +0000
12728+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c 2010-08-20 13:27:11 +0000
12729@@ -16,5 +16,5 @@
12730 out_uint16x4_t = vrev32_u16 (arg0_uint16x4_t);
12731 }
12732
12733-/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12734+/* { dg-final { scan-assembler "vrev32\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12735 /* { dg-final { cleanup-saved-temps } } */
12736
12737=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev32u8.c'
12738--- old/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c 2010-07-29 15:38:15 +0000
12739+++ new/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c 2010-08-20 13:27:11 +0000
12740@@ -16,5 +16,5 @@
12741 out_uint8x8_t = vrev32_u8 (arg0_uint8x8_t);
12742 }
12743
12744-/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12745+/* { dg-final { scan-assembler "vrev32\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12746 /* { dg-final { cleanup-saved-temps } } */
12747
12748=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c'
12749--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c 2010-07-29 15:38:15 +0000
12750+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c 2010-08-20 13:27:11 +0000
12751@@ -16,5 +16,5 @@
12752 out_float32x4_t = vrev64q_f32 (arg0_float32x4_t);
12753 }
12754
12755-/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12756+/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12757 /* { dg-final { cleanup-saved-temps } } */
12758
12759=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c'
12760--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c 2010-07-29 15:38:15 +0000
12761+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c 2010-08-20 13:27:11 +0000
12762@@ -16,5 +16,5 @@
12763 out_poly16x8_t = vrev64q_p16 (arg0_poly16x8_t);
12764 }
12765
12766-/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12767+/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12768 /* { dg-final { cleanup-saved-temps } } */
12769
12770=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c'
12771--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c 2010-07-29 15:38:15 +0000
12772+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c 2010-08-20 13:27:11 +0000
12773@@ -16,5 +16,5 @@
12774 out_poly8x16_t = vrev64q_p8 (arg0_poly8x16_t);
12775 }
12776
12777-/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12778+/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12779 /* { dg-final { cleanup-saved-temps } } */
12780
12781=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c'
12782--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c 2010-07-29 15:38:15 +0000
12783+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c 2010-08-20 13:27:11 +0000
12784@@ -16,5 +16,5 @@
12785 out_int16x8_t = vrev64q_s16 (arg0_int16x8_t);
12786 }
12787
12788-/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12789+/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12790 /* { dg-final { cleanup-saved-temps } } */
12791
12792=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c'
12793--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c 2010-07-29 15:38:15 +0000
12794+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c 2010-08-20 13:27:11 +0000
12795@@ -16,5 +16,5 @@
12796 out_int32x4_t = vrev64q_s32 (arg0_int32x4_t);
12797 }
12798
12799-/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12800+/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12801 /* { dg-final { cleanup-saved-temps } } */
12802
12803=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c'
12804--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c 2010-07-29 15:38:15 +0000
12805+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c 2010-08-20 13:27:11 +0000
12806@@ -16,5 +16,5 @@
12807 out_int8x16_t = vrev64q_s8 (arg0_int8x16_t);
12808 }
12809
12810-/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12811+/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12812 /* { dg-final { cleanup-saved-temps } } */
12813
12814=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c'
12815--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c 2010-07-29 15:38:15 +0000
12816+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c 2010-08-20 13:27:11 +0000
12817@@ -16,5 +16,5 @@
12818 out_uint16x8_t = vrev64q_u16 (arg0_uint16x8_t);
12819 }
12820
12821-/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12822+/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12823 /* { dg-final { cleanup-saved-temps } } */
12824
12825=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c'
12826--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c 2010-07-29 15:38:15 +0000
12827+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c 2010-08-20 13:27:11 +0000
12828@@ -16,5 +16,5 @@
12829 out_uint32x4_t = vrev64q_u32 (arg0_uint32x4_t);
12830 }
12831
12832-/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12833+/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12834 /* { dg-final { cleanup-saved-temps } } */
12835
12836=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c'
12837--- old/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c 2010-07-29 15:38:15 +0000
12838+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c 2010-08-20 13:27:11 +0000
12839@@ -16,5 +16,5 @@
12840 out_uint8x16_t = vrev64q_u8 (arg0_uint8x16_t);
12841 }
12842
12843-/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12844+/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12845 /* { dg-final { cleanup-saved-temps } } */
12846
12847=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64f32.c'
12848--- old/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c 2010-07-29 15:38:15 +0000
12849+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c 2010-08-20 13:27:11 +0000
12850@@ -16,5 +16,5 @@
12851 out_float32x2_t = vrev64_f32 (arg0_float32x2_t);
12852 }
12853
12854-/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12855+/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12856 /* { dg-final { cleanup-saved-temps } } */
12857
12858=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64p16.c'
12859--- old/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c 2010-07-29 15:38:15 +0000
12860+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c 2010-08-20 13:27:11 +0000
12861@@ -16,5 +16,5 @@
12862 out_poly16x4_t = vrev64_p16 (arg0_poly16x4_t);
12863 }
12864
12865-/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12866+/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12867 /* { dg-final { cleanup-saved-temps } } */
12868
12869=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64p8.c'
12870--- old/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c 2010-07-29 15:38:15 +0000
12871+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c 2010-08-20 13:27:11 +0000
12872@@ -16,5 +16,5 @@
12873 out_poly8x8_t = vrev64_p8 (arg0_poly8x8_t);
12874 }
12875
12876-/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12877+/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12878 /* { dg-final { cleanup-saved-temps } } */
12879
12880=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64s16.c'
12881--- old/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c 2010-07-29 15:38:15 +0000
12882+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c 2010-08-20 13:27:11 +0000
12883@@ -16,5 +16,5 @@
12884 out_int16x4_t = vrev64_s16 (arg0_int16x4_t);
12885 }
12886
12887-/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12888+/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12889 /* { dg-final { cleanup-saved-temps } } */
12890
12891=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64s32.c'
12892--- old/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c 2010-07-29 15:38:15 +0000
12893+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c 2010-08-20 13:27:11 +0000
12894@@ -16,5 +16,5 @@
12895 out_int32x2_t = vrev64_s32 (arg0_int32x2_t);
12896 }
12897
12898-/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12899+/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12900 /* { dg-final { cleanup-saved-temps } } */
12901
12902=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64s8.c'
12903--- old/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c 2010-07-29 15:38:15 +0000
12904+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c 2010-08-20 13:27:11 +0000
12905@@ -16,5 +16,5 @@
12906 out_int8x8_t = vrev64_s8 (arg0_int8x8_t);
12907 }
12908
12909-/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12910+/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12911 /* { dg-final { cleanup-saved-temps } } */
12912
12913=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64u16.c'
12914--- old/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c 2010-07-29 15:38:15 +0000
12915+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c 2010-08-20 13:27:11 +0000
12916@@ -16,5 +16,5 @@
12917 out_uint16x4_t = vrev64_u16 (arg0_uint16x4_t);
12918 }
12919
12920-/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12921+/* { dg-final { scan-assembler "vrev64\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12922 /* { dg-final { cleanup-saved-temps } } */
12923
12924=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64u32.c'
12925--- old/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c 2010-07-29 15:38:15 +0000
12926+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c 2010-08-20 13:27:11 +0000
12927@@ -16,5 +16,5 @@
12928 out_uint32x2_t = vrev64_u32 (arg0_uint32x2_t);
12929 }
12930
12931-/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12932+/* { dg-final { scan-assembler "vrev64\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12933 /* { dg-final { cleanup-saved-temps } } */
12934
12935=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrev64u8.c'
12936--- old/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c 2010-07-29 15:38:15 +0000
12937+++ new/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c 2010-08-20 13:27:11 +0000
12938@@ -16,5 +16,5 @@
12939 out_uint8x8_t = vrev64_u8 (arg0_uint8x8_t);
12940 }
12941
12942-/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12943+/* { dg-final { scan-assembler "vrev64\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12944 /* { dg-final { cleanup-saved-temps } } */
12945
12946=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c'
12947--- old/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c 2010-07-29 15:38:15 +0000
12948+++ new/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c 2010-08-20 13:27:11 +0000
12949@@ -16,5 +16,5 @@
12950 out_float32x4_t = vrsqrteq_f32 (arg0_float32x4_t);
12951 }
12952
12953-/* { dg-final { scan-assembler "vrsqrte\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12954+/* { dg-final { scan-assembler "vrsqrte\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12955 /* { dg-final { cleanup-saved-temps } } */
12956
12957=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c'
12958--- old/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c 2010-07-29 15:38:15 +0000
12959+++ new/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c 2010-08-20 13:27:11 +0000
12960@@ -16,5 +16,5 @@
12961 out_uint32x4_t = vrsqrteq_u32 (arg0_uint32x4_t);
12962 }
12963
12964-/* { dg-final { scan-assembler "vrsqrte\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12965+/* { dg-final { scan-assembler "vrsqrte\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12966 /* { dg-final { cleanup-saved-temps } } */
12967
12968=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c'
12969--- old/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c 2010-07-29 15:38:15 +0000
12970+++ new/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c 2010-08-20 13:27:11 +0000
12971@@ -16,5 +16,5 @@
12972 out_float32x2_t = vrsqrte_f32 (arg0_float32x2_t);
12973 }
12974
12975-/* { dg-final { scan-assembler "vrsqrte\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12976+/* { dg-final { scan-assembler "vrsqrte\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12977 /* { dg-final { cleanup-saved-temps } } */
12978
12979=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c'
12980--- old/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c 2010-07-29 15:38:15 +0000
12981+++ new/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c 2010-08-20 13:27:11 +0000
12982@@ -16,5 +16,5 @@
12983 out_uint32x2_t = vrsqrte_u32 (arg0_uint32x2_t);
12984 }
12985
12986-/* { dg-final { scan-assembler "vrsqrte\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12987+/* { dg-final { scan-assembler "vrsqrte\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12988 /* { dg-final { cleanup-saved-temps } } */
12989
12990=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c'
12991--- old/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c 2010-07-29 15:38:15 +0000
12992+++ new/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c 2010-08-20 13:27:11 +0000
12993@@ -17,5 +17,5 @@
12994 out_float32x4_t = vrsqrtsq_f32 (arg0_float32x4_t, arg1_float32x4_t);
12995 }
12996
12997-/* { dg-final { scan-assembler "vrsqrts\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
12998+/* { dg-final { scan-assembler "vrsqrts\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
12999 /* { dg-final { cleanup-saved-temps } } */
13000
13001=== modified file 'gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c'
13002--- old/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c 2010-07-29 15:38:15 +0000
13003+++ new/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c 2010-08-20 13:27:11 +0000
13004@@ -17,5 +17,5 @@
13005 out_float32x2_t = vrsqrts_f32 (arg0_float32x2_t, arg1_float32x2_t);
13006 }
13007
13008-/* { dg-final { scan-assembler "vrsqrts\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13009+/* { dg-final { scan-assembler "vrsqrts\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13010 /* { dg-final { cleanup-saved-temps } } */
13011
13012=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c'
13013--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c 2010-07-29 15:38:15 +0000
13014+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c 2010-08-20 13:27:11 +0000
13015@@ -17,5 +17,5 @@
13016 out_float32x4_t = vsetq_lane_f32 (arg0_float32_t, arg1_float32x4_t, 1);
13017 }
13018
13019-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13020+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13021 /* { dg-final { cleanup-saved-temps } } */
13022
13023=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c'
13024--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c 2010-07-29 15:38:15 +0000
13025+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c 2010-08-20 13:27:11 +0000
13026@@ -17,5 +17,5 @@
13027 out_poly16x8_t = vsetq_lane_p16 (arg0_poly16_t, arg1_poly16x8_t, 1);
13028 }
13029
13030-/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13031+/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13032 /* { dg-final { cleanup-saved-temps } } */
13033
13034=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c'
13035--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c 2010-07-29 15:38:15 +0000
13036+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c 2010-08-20 13:27:11 +0000
13037@@ -17,5 +17,5 @@
13038 out_poly8x16_t = vsetq_lane_p8 (arg0_poly8_t, arg1_poly8x16_t, 1);
13039 }
13040
13041-/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13042+/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13043 /* { dg-final { cleanup-saved-temps } } */
13044
13045=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c'
13046--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c 2010-07-29 15:38:15 +0000
13047+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c 2010-08-20 13:27:11 +0000
13048@@ -17,5 +17,5 @@
13049 out_int16x8_t = vsetq_lane_s16 (arg0_int16_t, arg1_int16x8_t, 1);
13050 }
13051
13052-/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13053+/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13054 /* { dg-final { cleanup-saved-temps } } */
13055
13056=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c'
13057--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c 2010-07-29 15:38:15 +0000
13058+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c 2010-08-20 13:27:11 +0000
13059@@ -17,5 +17,5 @@
13060 out_int32x4_t = vsetq_lane_s32 (arg0_int32_t, arg1_int32x4_t, 1);
13061 }
13062
13063-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13064+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13065 /* { dg-final { cleanup-saved-temps } } */
13066
13067=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c'
13068--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c 2010-07-29 15:38:15 +0000
13069+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c 2010-08-20 13:27:11 +0000
13070@@ -17,5 +17,5 @@
13071 out_int64x2_t = vsetq_lane_s64 (arg0_int64_t, arg1_int64x2_t, 0);
13072 }
13073
13074-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13075+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13076 /* { dg-final { cleanup-saved-temps } } */
13077
13078=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c'
13079--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c 2010-07-29 15:38:15 +0000
13080+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c 2010-08-20 13:27:11 +0000
13081@@ -17,5 +17,5 @@
13082 out_int8x16_t = vsetq_lane_s8 (arg0_int8_t, arg1_int8x16_t, 1);
13083 }
13084
13085-/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13086+/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13087 /* { dg-final { cleanup-saved-temps } } */
13088
13089=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c'
13090--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c 2010-07-29 15:38:15 +0000
13091+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c 2010-08-20 13:27:11 +0000
13092@@ -17,5 +17,5 @@
13093 out_uint16x8_t = vsetq_lane_u16 (arg0_uint16_t, arg1_uint16x8_t, 1);
13094 }
13095
13096-/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13097+/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13098 /* { dg-final { cleanup-saved-temps } } */
13099
13100=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c'
13101--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c 2010-07-29 15:38:15 +0000
13102+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c 2010-08-20 13:27:11 +0000
13103@@ -17,5 +17,5 @@
13104 out_uint32x4_t = vsetq_lane_u32 (arg0_uint32_t, arg1_uint32x4_t, 1);
13105 }
13106
13107-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13108+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13109 /* { dg-final { cleanup-saved-temps } } */
13110
13111=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c'
13112--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c 2010-07-29 15:38:15 +0000
13113+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c 2010-08-20 13:27:11 +0000
13114@@ -17,5 +17,5 @@
13115 out_uint64x2_t = vsetq_lane_u64 (arg0_uint64_t, arg1_uint64x2_t, 0);
13116 }
13117
13118-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13119+/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13120 /* { dg-final { cleanup-saved-temps } } */
13121
13122=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c'
13123--- old/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c 2010-07-29 15:38:15 +0000
13124+++ new/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c 2010-08-20 13:27:11 +0000
13125@@ -17,5 +17,5 @@
13126 out_uint8x16_t = vsetq_lane_u8 (arg0_uint8_t, arg1_uint8x16_t, 1);
13127 }
13128
13129-/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13130+/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13131 /* { dg-final { cleanup-saved-temps } } */
13132
13133=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c'
13134--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c 2010-07-29 15:38:15 +0000
13135+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c 2010-08-20 13:27:11 +0000
13136@@ -17,5 +17,5 @@
13137 out_float32x2_t = vset_lane_f32 (arg0_float32_t, arg1_float32x2_t, 1);
13138 }
13139
13140-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13141+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13142 /* { dg-final { cleanup-saved-temps } } */
13143
13144=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c'
13145--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c 2010-07-29 15:38:15 +0000
13146+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c 2010-08-20 13:27:11 +0000
13147@@ -17,5 +17,5 @@
13148 out_poly16x4_t = vset_lane_p16 (arg0_poly16_t, arg1_poly16x4_t, 1);
13149 }
13150
13151-/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13152+/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13153 /* { dg-final { cleanup-saved-temps } } */
13154
13155=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c'
13156--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c 2010-07-29 15:38:15 +0000
13157+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c 2010-08-20 13:27:11 +0000
13158@@ -17,5 +17,5 @@
13159 out_poly8x8_t = vset_lane_p8 (arg0_poly8_t, arg1_poly8x8_t, 1);
13160 }
13161
13162-/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13163+/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13164 /* { dg-final { cleanup-saved-temps } } */
13165
13166=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c'
13167--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c 2010-07-29 15:38:15 +0000
13168+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c 2010-08-20 13:27:11 +0000
13169@@ -17,5 +17,5 @@
13170 out_int16x4_t = vset_lane_s16 (arg0_int16_t, arg1_int16x4_t, 1);
13171 }
13172
13173-/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13174+/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13175 /* { dg-final { cleanup-saved-temps } } */
13176
13177=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c'
13178--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c 2010-07-29 15:38:15 +0000
13179+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c 2010-08-20 13:27:11 +0000
13180@@ -17,5 +17,5 @@
13181 out_int32x2_t = vset_lane_s32 (arg0_int32_t, arg1_int32x2_t, 1);
13182 }
13183
13184-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13185+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13186 /* { dg-final { cleanup-saved-temps } } */
13187
13188=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c'
13189--- old/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c 2010-07-29 15:38:15 +0000
13190+++ new/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c 2010-08-20 13:27:11 +0000
13191@@ -17,5 +17,5 @@
13192 out_int8x8_t = vset_lane_s8 (arg0_int8_t, arg1_int8x8_t, 1);
13193 }
13194
13195-/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13196+/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13197 /* { dg-final { cleanup-saved-temps } } */
13198
13199=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c'
13200--- old/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c 2010-07-29 15:38:15 +0000
13201+++ new/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c 2010-08-20 13:27:11 +0000
13202@@ -17,5 +17,5 @@
13203 out_uint16x4_t = vset_lane_u16 (arg0_uint16_t, arg1_uint16x4_t, 1);
13204 }
13205
13206-/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13207+/* { dg-final { scan-assembler "vmov\.16\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13208 /* { dg-final { cleanup-saved-temps } } */
13209
13210=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c'
13211--- old/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c 2010-07-29 15:38:15 +0000
13212+++ new/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c 2010-08-20 13:27:11 +0000
13213@@ -17,5 +17,5 @@
13214 out_uint32x2_t = vset_lane_u32 (arg0_uint32_t, arg1_uint32x2_t, 1);
13215 }
13216
13217-/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13218+/* { dg-final { scan-assembler "vmov\.32\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13219 /* { dg-final { cleanup-saved-temps } } */
13220
13221=== modified file 'gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c'
13222--- old/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c 2010-07-29 15:38:15 +0000
13223+++ new/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c 2010-08-20 13:27:11 +0000
13224@@ -17,5 +17,5 @@
13225 out_uint8x8_t = vset_lane_u8 (arg0_uint8_t, arg1_uint8x8_t, 1);
13226 }
13227
13228-/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13229+/* { dg-final { scan-assembler "vmov\.8\[ \]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13230 /* { dg-final { cleanup-saved-temps } } */
13231
13232=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c'
13233--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c 2010-07-29 15:38:15 +0000
13234+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c 2010-08-20 13:27:11 +0000
13235@@ -16,5 +16,5 @@
13236 out_int16x8_t = vshlq_n_s16 (arg0_int16x8_t, 1);
13237 }
13238
13239-/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13240+/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13241 /* { dg-final { cleanup-saved-temps } } */
13242
13243=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c'
13244--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c 2010-07-29 15:38:15 +0000
13245+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c 2010-08-20 13:27:11 +0000
13246@@ -16,5 +16,5 @@
13247 out_int32x4_t = vshlq_n_s32 (arg0_int32x4_t, 1);
13248 }
13249
13250-/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13251+/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13252 /* { dg-final { cleanup-saved-temps } } */
13253
13254=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c'
13255--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c 2010-07-29 15:38:15 +0000
13256+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c 2010-08-20 13:27:11 +0000
13257@@ -16,5 +16,5 @@
13258 out_int64x2_t = vshlq_n_s64 (arg0_int64x2_t, 1);
13259 }
13260
13261-/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13262+/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13263 /* { dg-final { cleanup-saved-temps } } */
13264
13265=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c'
13266--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c 2010-07-29 15:38:15 +0000
13267+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c 2010-08-20 13:27:11 +0000
13268@@ -16,5 +16,5 @@
13269 out_int8x16_t = vshlq_n_s8 (arg0_int8x16_t, 1);
13270 }
13271
13272-/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13273+/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13274 /* { dg-final { cleanup-saved-temps } } */
13275
13276=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c'
13277--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c 2010-07-29 15:38:15 +0000
13278+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c 2010-08-20 13:27:11 +0000
13279@@ -16,5 +16,5 @@
13280 out_uint16x8_t = vshlq_n_u16 (arg0_uint16x8_t, 1);
13281 }
13282
13283-/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13284+/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13285 /* { dg-final { cleanup-saved-temps } } */
13286
13287=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c'
13288--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c 2010-07-29 15:38:15 +0000
13289+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c 2010-08-20 13:27:11 +0000
13290@@ -16,5 +16,5 @@
13291 out_uint32x4_t = vshlq_n_u32 (arg0_uint32x4_t, 1);
13292 }
13293
13294-/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13295+/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13296 /* { dg-final { cleanup-saved-temps } } */
13297
13298=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c'
13299--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c 2010-07-29 15:38:15 +0000
13300+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c 2010-08-20 13:27:11 +0000
13301@@ -16,5 +16,5 @@
13302 out_uint64x2_t = vshlq_n_u64 (arg0_uint64x2_t, 1);
13303 }
13304
13305-/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13306+/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13307 /* { dg-final { cleanup-saved-temps } } */
13308
13309=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c'
13310--- old/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c 2010-07-29 15:38:15 +0000
13311+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c 2010-08-20 13:27:11 +0000
13312@@ -16,5 +16,5 @@
13313 out_uint8x16_t = vshlq_n_u8 (arg0_uint8x16_t, 1);
13314 }
13315
13316-/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13317+/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13318 /* { dg-final { cleanup-saved-temps } } */
13319
13320=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQs16.c'
13321--- old/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c 2010-07-29 15:38:15 +0000
13322+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c 2010-08-20 13:27:11 +0000
13323@@ -17,5 +17,5 @@
13324 out_int16x8_t = vshlq_s16 (arg0_int16x8_t, arg1_int16x8_t);
13325 }
13326
13327-/* { dg-final { scan-assembler "vshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13328+/* { dg-final { scan-assembler "vshl\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13329 /* { dg-final { cleanup-saved-temps } } */
13330
13331=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQs32.c'
13332--- old/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c 2010-07-29 15:38:15 +0000
13333+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c 2010-08-20 13:27:11 +0000
13334@@ -17,5 +17,5 @@
13335 out_int32x4_t = vshlq_s32 (arg0_int32x4_t, arg1_int32x4_t);
13336 }
13337
13338-/* { dg-final { scan-assembler "vshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13339+/* { dg-final { scan-assembler "vshl\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13340 /* { dg-final { cleanup-saved-temps } } */
13341
13342=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQs64.c'
13343--- old/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c 2010-07-29 15:38:15 +0000
13344+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c 2010-08-20 13:27:11 +0000
13345@@ -17,5 +17,5 @@
13346 out_int64x2_t = vshlq_s64 (arg0_int64x2_t, arg1_int64x2_t);
13347 }
13348
13349-/* { dg-final { scan-assembler "vshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13350+/* { dg-final { scan-assembler "vshl\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13351 /* { dg-final { cleanup-saved-temps } } */
13352
13353=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQs8.c'
13354--- old/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c 2010-07-29 15:38:15 +0000
13355+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c 2010-08-20 13:27:11 +0000
13356@@ -17,5 +17,5 @@
13357 out_int8x16_t = vshlq_s8 (arg0_int8x16_t, arg1_int8x16_t);
13358 }
13359
13360-/* { dg-final { scan-assembler "vshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13361+/* { dg-final { scan-assembler "vshl\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13362 /* { dg-final { cleanup-saved-temps } } */
13363
13364=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQu16.c'
13365--- old/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c 2010-07-29 15:38:15 +0000
13366+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c 2010-08-20 13:27:11 +0000
13367@@ -17,5 +17,5 @@
13368 out_uint16x8_t = vshlq_u16 (arg0_uint16x8_t, arg1_int16x8_t);
13369 }
13370
13371-/* { dg-final { scan-assembler "vshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13372+/* { dg-final { scan-assembler "vshl\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13373 /* { dg-final { cleanup-saved-temps } } */
13374
13375=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQu32.c'
13376--- old/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c 2010-07-29 15:38:15 +0000
13377+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c 2010-08-20 13:27:11 +0000
13378@@ -17,5 +17,5 @@
13379 out_uint32x4_t = vshlq_u32 (arg0_uint32x4_t, arg1_int32x4_t);
13380 }
13381
13382-/* { dg-final { scan-assembler "vshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13383+/* { dg-final { scan-assembler "vshl\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13384 /* { dg-final { cleanup-saved-temps } } */
13385
13386=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQu64.c'
13387--- old/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c 2010-07-29 15:38:15 +0000
13388+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c 2010-08-20 13:27:11 +0000
13389@@ -17,5 +17,5 @@
13390 out_uint64x2_t = vshlq_u64 (arg0_uint64x2_t, arg1_int64x2_t);
13391 }
13392
13393-/* { dg-final { scan-assembler "vshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13394+/* { dg-final { scan-assembler "vshl\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13395 /* { dg-final { cleanup-saved-temps } } */
13396
13397=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlQu8.c'
13398--- old/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c 2010-07-29 15:38:15 +0000
13399+++ new/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c 2010-08-20 13:27:11 +0000
13400@@ -17,5 +17,5 @@
13401 out_uint8x16_t = vshlq_u8 (arg0_uint8x16_t, arg1_int8x16_t);
13402 }
13403
13404-/* { dg-final { scan-assembler "vshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13405+/* { dg-final { scan-assembler "vshl\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13406 /* { dg-final { cleanup-saved-temps } } */
13407
13408=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c'
13409--- old/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c 2010-07-29 15:38:15 +0000
13410+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c 2010-08-20 13:27:11 +0000
13411@@ -16,5 +16,5 @@
13412 out_int16x4_t = vshl_n_s16 (arg0_int16x4_t, 1);
13413 }
13414
13415-/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13416+/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13417 /* { dg-final { cleanup-saved-temps } } */
13418
13419=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c'
13420--- old/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c 2010-07-29 15:38:15 +0000
13421+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c 2010-08-20 13:27:11 +0000
13422@@ -16,5 +16,5 @@
13423 out_int32x2_t = vshl_n_s32 (arg0_int32x2_t, 1);
13424 }
13425
13426-/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13427+/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13428 /* { dg-final { cleanup-saved-temps } } */
13429
13430=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c'
13431--- old/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c 2010-07-29 15:38:15 +0000
13432+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c 2010-08-20 13:27:11 +0000
13433@@ -16,5 +16,5 @@
13434 out_int64x1_t = vshl_n_s64 (arg0_int64x1_t, 1);
13435 }
13436
13437-/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13438+/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13439 /* { dg-final { cleanup-saved-temps } } */
13440
13441=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c'
13442--- old/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c 2010-07-29 15:38:15 +0000
13443+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c 2010-08-20 13:27:11 +0000
13444@@ -16,5 +16,5 @@
13445 out_int8x8_t = vshl_n_s8 (arg0_int8x8_t, 1);
13446 }
13447
13448-/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13449+/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13450 /* { dg-final { cleanup-saved-temps } } */
13451
13452=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c'
13453--- old/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c 2010-07-29 15:38:15 +0000
13454+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c 2010-08-20 13:27:11 +0000
13455@@ -16,5 +16,5 @@
13456 out_uint16x4_t = vshl_n_u16 (arg0_uint16x4_t, 1);
13457 }
13458
13459-/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13460+/* { dg-final { scan-assembler "vshl\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13461 /* { dg-final { cleanup-saved-temps } } */
13462
13463=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c'
13464--- old/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c 2010-07-29 15:38:15 +0000
13465+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c 2010-08-20 13:27:11 +0000
13466@@ -16,5 +16,5 @@
13467 out_uint32x2_t = vshl_n_u32 (arg0_uint32x2_t, 1);
13468 }
13469
13470-/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13471+/* { dg-final { scan-assembler "vshl\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13472 /* { dg-final { cleanup-saved-temps } } */
13473
13474=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c'
13475--- old/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c 2010-07-29 15:38:15 +0000
13476+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c 2010-08-20 13:27:11 +0000
13477@@ -16,5 +16,5 @@
13478 out_uint64x1_t = vshl_n_u64 (arg0_uint64x1_t, 1);
13479 }
13480
13481-/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13482+/* { dg-final { scan-assembler "vshl\.i64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13483 /* { dg-final { cleanup-saved-temps } } */
13484
13485=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c'
13486--- old/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c 2010-07-29 15:38:15 +0000
13487+++ new/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c 2010-08-20 13:27:11 +0000
13488@@ -16,5 +16,5 @@
13489 out_uint8x8_t = vshl_n_u8 (arg0_uint8x8_t, 1);
13490 }
13491
13492-/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13493+/* { dg-final { scan-assembler "vshl\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13494 /* { dg-final { cleanup-saved-temps } } */
13495
13496=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c'
13497--- old/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c 2010-07-29 15:38:15 +0000
13498+++ new/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c 2010-08-20 13:27:11 +0000
13499@@ -16,5 +16,5 @@
13500 out_int32x4_t = vshll_n_s16 (arg0_int16x4_t, 1);
13501 }
13502
13503-/* { dg-final { scan-assembler "vshll\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13504+/* { dg-final { scan-assembler "vshll\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13505 /* { dg-final { cleanup-saved-temps } } */
13506
13507=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c'
13508--- old/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c 2010-07-29 15:38:15 +0000
13509+++ new/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c 2010-08-20 13:27:11 +0000
13510@@ -16,5 +16,5 @@
13511 out_int64x2_t = vshll_n_s32 (arg0_int32x2_t, 1);
13512 }
13513
13514-/* { dg-final { scan-assembler "vshll\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13515+/* { dg-final { scan-assembler "vshll\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13516 /* { dg-final { cleanup-saved-temps } } */
13517
13518=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c'
13519--- old/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c 2010-07-29 15:38:15 +0000
13520+++ new/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c 2010-08-20 13:27:11 +0000
13521@@ -16,5 +16,5 @@
13522 out_int16x8_t = vshll_n_s8 (arg0_int8x8_t, 1);
13523 }
13524
13525-/* { dg-final { scan-assembler "vshll\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13526+/* { dg-final { scan-assembler "vshll\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13527 /* { dg-final { cleanup-saved-temps } } */
13528
13529=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c'
13530--- old/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c 2010-07-29 15:38:15 +0000
13531+++ new/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c 2010-08-20 13:27:11 +0000
13532@@ -16,5 +16,5 @@
13533 out_uint32x4_t = vshll_n_u16 (arg0_uint16x4_t, 1);
13534 }
13535
13536-/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13537+/* { dg-final { scan-assembler "vshll\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13538 /* { dg-final { cleanup-saved-temps } } */
13539
13540=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c'
13541--- old/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c 2010-07-29 15:38:15 +0000
13542+++ new/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c 2010-08-20 13:27:11 +0000
13543@@ -16,5 +16,5 @@
13544 out_uint64x2_t = vshll_n_u32 (arg0_uint32x2_t, 1);
13545 }
13546
13547-/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13548+/* { dg-final { scan-assembler "vshll\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13549 /* { dg-final { cleanup-saved-temps } } */
13550
13551=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c'
13552--- old/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c 2010-07-29 15:38:15 +0000
13553+++ new/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c 2010-08-20 13:27:11 +0000
13554@@ -16,5 +16,5 @@
13555 out_uint16x8_t = vshll_n_u8 (arg0_uint8x8_t, 1);
13556 }
13557
13558-/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13559+/* { dg-final { scan-assembler "vshll\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13560 /* { dg-final { cleanup-saved-temps } } */
13561
13562=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshls16.c'
13563--- old/gcc/testsuite/gcc.target/arm/neon/vshls16.c 2010-07-29 15:38:15 +0000
13564+++ new/gcc/testsuite/gcc.target/arm/neon/vshls16.c 2010-08-20 13:27:11 +0000
13565@@ -17,5 +17,5 @@
13566 out_int16x4_t = vshl_s16 (arg0_int16x4_t, arg1_int16x4_t);
13567 }
13568
13569-/* { dg-final { scan-assembler "vshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13570+/* { dg-final { scan-assembler "vshl\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13571 /* { dg-final { cleanup-saved-temps } } */
13572
13573=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshls32.c'
13574--- old/gcc/testsuite/gcc.target/arm/neon/vshls32.c 2010-07-29 15:38:15 +0000
13575+++ new/gcc/testsuite/gcc.target/arm/neon/vshls32.c 2010-08-20 13:27:11 +0000
13576@@ -17,5 +17,5 @@
13577 out_int32x2_t = vshl_s32 (arg0_int32x2_t, arg1_int32x2_t);
13578 }
13579
13580-/* { dg-final { scan-assembler "vshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13581+/* { dg-final { scan-assembler "vshl\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13582 /* { dg-final { cleanup-saved-temps } } */
13583
13584=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshls64.c'
13585--- old/gcc/testsuite/gcc.target/arm/neon/vshls64.c 2010-07-29 15:38:15 +0000
13586+++ new/gcc/testsuite/gcc.target/arm/neon/vshls64.c 2010-08-20 13:27:11 +0000
13587@@ -17,5 +17,5 @@
13588 out_int64x1_t = vshl_s64 (arg0_int64x1_t, arg1_int64x1_t);
13589 }
13590
13591-/* { dg-final { scan-assembler "vshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13592+/* { dg-final { scan-assembler "vshl\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13593 /* { dg-final { cleanup-saved-temps } } */
13594
13595=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshls8.c'
13596--- old/gcc/testsuite/gcc.target/arm/neon/vshls8.c 2010-07-29 15:38:15 +0000
13597+++ new/gcc/testsuite/gcc.target/arm/neon/vshls8.c 2010-08-20 13:27:11 +0000
13598@@ -17,5 +17,5 @@
13599 out_int8x8_t = vshl_s8 (arg0_int8x8_t, arg1_int8x8_t);
13600 }
13601
13602-/* { dg-final { scan-assembler "vshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13603+/* { dg-final { scan-assembler "vshl\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13604 /* { dg-final { cleanup-saved-temps } } */
13605
13606=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlu16.c'
13607--- old/gcc/testsuite/gcc.target/arm/neon/vshlu16.c 2010-07-29 15:38:15 +0000
13608+++ new/gcc/testsuite/gcc.target/arm/neon/vshlu16.c 2010-08-20 13:27:11 +0000
13609@@ -17,5 +17,5 @@
13610 out_uint16x4_t = vshl_u16 (arg0_uint16x4_t, arg1_int16x4_t);
13611 }
13612
13613-/* { dg-final { scan-assembler "vshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13614+/* { dg-final { scan-assembler "vshl\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13615 /* { dg-final { cleanup-saved-temps } } */
13616
13617=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlu32.c'
13618--- old/gcc/testsuite/gcc.target/arm/neon/vshlu32.c 2010-07-29 15:38:15 +0000
13619+++ new/gcc/testsuite/gcc.target/arm/neon/vshlu32.c 2010-08-20 13:27:11 +0000
13620@@ -17,5 +17,5 @@
13621 out_uint32x2_t = vshl_u32 (arg0_uint32x2_t, arg1_int32x2_t);
13622 }
13623
13624-/* { dg-final { scan-assembler "vshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13625+/* { dg-final { scan-assembler "vshl\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13626 /* { dg-final { cleanup-saved-temps } } */
13627
13628=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlu64.c'
13629--- old/gcc/testsuite/gcc.target/arm/neon/vshlu64.c 2010-07-29 15:38:15 +0000
13630+++ new/gcc/testsuite/gcc.target/arm/neon/vshlu64.c 2010-08-20 13:27:11 +0000
13631@@ -17,5 +17,5 @@
13632 out_uint64x1_t = vshl_u64 (arg0_uint64x1_t, arg1_int64x1_t);
13633 }
13634
13635-/* { dg-final { scan-assembler "vshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13636+/* { dg-final { scan-assembler "vshl\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13637 /* { dg-final { cleanup-saved-temps } } */
13638
13639=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshlu8.c'
13640--- old/gcc/testsuite/gcc.target/arm/neon/vshlu8.c 2010-07-29 15:38:15 +0000
13641+++ new/gcc/testsuite/gcc.target/arm/neon/vshlu8.c 2010-08-20 13:27:11 +0000
13642@@ -17,5 +17,5 @@
13643 out_uint8x8_t = vshl_u8 (arg0_uint8x8_t, arg1_int8x8_t);
13644 }
13645
13646-/* { dg-final { scan-assembler "vshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13647+/* { dg-final { scan-assembler "vshl\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13648 /* { dg-final { cleanup-saved-temps } } */
13649
13650=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c'
13651--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c 2010-07-29 15:38:15 +0000
13652+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c 2010-08-20 13:27:11 +0000
13653@@ -16,5 +16,5 @@
13654 out_int16x8_t = vshrq_n_s16 (arg0_int16x8_t, 1);
13655 }
13656
13657-/* { dg-final { scan-assembler "vshr\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13658+/* { dg-final { scan-assembler "vshr\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13659 /* { dg-final { cleanup-saved-temps } } */
13660
13661=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c'
13662--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c 2010-07-29 15:38:15 +0000
13663+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c 2010-08-20 13:27:11 +0000
13664@@ -16,5 +16,5 @@
13665 out_int32x4_t = vshrq_n_s32 (arg0_int32x4_t, 1);
13666 }
13667
13668-/* { dg-final { scan-assembler "vshr\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13669+/* { dg-final { scan-assembler "vshr\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13670 /* { dg-final { cleanup-saved-temps } } */
13671
13672=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c'
13673--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c 2010-07-29 15:38:15 +0000
13674+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c 2010-08-20 13:27:11 +0000
13675@@ -16,5 +16,5 @@
13676 out_int64x2_t = vshrq_n_s64 (arg0_int64x2_t, 1);
13677 }
13678
13679-/* { dg-final { scan-assembler "vshr\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13680+/* { dg-final { scan-assembler "vshr\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13681 /* { dg-final { cleanup-saved-temps } } */
13682
13683=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c'
13684--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c 2010-07-29 15:38:15 +0000
13685+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c 2010-08-20 13:27:11 +0000
13686@@ -16,5 +16,5 @@
13687 out_int8x16_t = vshrq_n_s8 (arg0_int8x16_t, 1);
13688 }
13689
13690-/* { dg-final { scan-assembler "vshr\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13691+/* { dg-final { scan-assembler "vshr\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13692 /* { dg-final { cleanup-saved-temps } } */
13693
13694=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c'
13695--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c 2010-07-29 15:38:15 +0000
13696+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c 2010-08-20 13:27:11 +0000
13697@@ -16,5 +16,5 @@
13698 out_uint16x8_t = vshrq_n_u16 (arg0_uint16x8_t, 1);
13699 }
13700
13701-/* { dg-final { scan-assembler "vshr\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13702+/* { dg-final { scan-assembler "vshr\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13703 /* { dg-final { cleanup-saved-temps } } */
13704
13705=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c'
13706--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c 2010-07-29 15:38:15 +0000
13707+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c 2010-08-20 13:27:11 +0000
13708@@ -16,5 +16,5 @@
13709 out_uint32x4_t = vshrq_n_u32 (arg0_uint32x4_t, 1);
13710 }
13711
13712-/* { dg-final { scan-assembler "vshr\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13713+/* { dg-final { scan-assembler "vshr\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13714 /* { dg-final { cleanup-saved-temps } } */
13715
13716=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c'
13717--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c 2010-07-29 15:38:15 +0000
13718+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c 2010-08-20 13:27:11 +0000
13719@@ -16,5 +16,5 @@
13720 out_uint64x2_t = vshrq_n_u64 (arg0_uint64x2_t, 1);
13721 }
13722
13723-/* { dg-final { scan-assembler "vshr\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13724+/* { dg-final { scan-assembler "vshr\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13725 /* { dg-final { cleanup-saved-temps } } */
13726
13727=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c'
13728--- old/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c 2010-07-29 15:38:15 +0000
13729+++ new/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c 2010-08-20 13:27:11 +0000
13730@@ -16,5 +16,5 @@
13731 out_uint8x16_t = vshrq_n_u8 (arg0_uint8x16_t, 1);
13732 }
13733
13734-/* { dg-final { scan-assembler "vshr\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13735+/* { dg-final { scan-assembler "vshr\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13736 /* { dg-final { cleanup-saved-temps } } */
13737
13738=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c'
13739--- old/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c 2010-07-29 15:38:15 +0000
13740+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c 2010-08-20 13:27:11 +0000
13741@@ -16,5 +16,5 @@
13742 out_int16x4_t = vshr_n_s16 (arg0_int16x4_t, 1);
13743 }
13744
13745-/* { dg-final { scan-assembler "vshr\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13746+/* { dg-final { scan-assembler "vshr\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13747 /* { dg-final { cleanup-saved-temps } } */
13748
13749=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c'
13750--- old/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c 2010-07-29 15:38:15 +0000
13751+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c 2010-08-20 13:27:11 +0000
13752@@ -16,5 +16,5 @@
13753 out_int32x2_t = vshr_n_s32 (arg0_int32x2_t, 1);
13754 }
13755
13756-/* { dg-final { scan-assembler "vshr\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13757+/* { dg-final { scan-assembler "vshr\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13758 /* { dg-final { cleanup-saved-temps } } */
13759
13760=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c'
13761--- old/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c 2010-07-29 15:38:15 +0000
13762+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c 2010-08-20 13:27:11 +0000
13763@@ -16,5 +16,5 @@
13764 out_int64x1_t = vshr_n_s64 (arg0_int64x1_t, 1);
13765 }
13766
13767-/* { dg-final { scan-assembler "vshr\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13768+/* { dg-final { scan-assembler "vshr\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13769 /* { dg-final { cleanup-saved-temps } } */
13770
13771=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c'
13772--- old/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c 2010-07-29 15:38:15 +0000
13773+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c 2010-08-20 13:27:11 +0000
13774@@ -16,5 +16,5 @@
13775 out_int8x8_t = vshr_n_s8 (arg0_int8x8_t, 1);
13776 }
13777
13778-/* { dg-final { scan-assembler "vshr\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13779+/* { dg-final { scan-assembler "vshr\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13780 /* { dg-final { cleanup-saved-temps } } */
13781
13782=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c'
13783--- old/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c 2010-07-29 15:38:15 +0000
13784+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c 2010-08-20 13:27:11 +0000
13785@@ -16,5 +16,5 @@
13786 out_uint16x4_t = vshr_n_u16 (arg0_uint16x4_t, 1);
13787 }
13788
13789-/* { dg-final { scan-assembler "vshr\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13790+/* { dg-final { scan-assembler "vshr\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13791 /* { dg-final { cleanup-saved-temps } } */
13792
13793=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c'
13794--- old/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c 2010-07-29 15:38:15 +0000
13795+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c 2010-08-20 13:27:11 +0000
13796@@ -16,5 +16,5 @@
13797 out_uint32x2_t = vshr_n_u32 (arg0_uint32x2_t, 1);
13798 }
13799
13800-/* { dg-final { scan-assembler "vshr\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13801+/* { dg-final { scan-assembler "vshr\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13802 /* { dg-final { cleanup-saved-temps } } */
13803
13804=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c'
13805--- old/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c 2010-07-29 15:38:15 +0000
13806+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c 2010-08-20 13:27:11 +0000
13807@@ -16,5 +16,5 @@
13808 out_uint64x1_t = vshr_n_u64 (arg0_uint64x1_t, 1);
13809 }
13810
13811-/* { dg-final { scan-assembler "vshr\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13812+/* { dg-final { scan-assembler "vshr\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13813 /* { dg-final { cleanup-saved-temps } } */
13814
13815=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c'
13816--- old/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c 2010-07-29 15:38:15 +0000
13817+++ new/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c 2010-08-20 13:27:11 +0000
13818@@ -16,5 +16,5 @@
13819 out_uint8x8_t = vshr_n_u8 (arg0_uint8x8_t, 1);
13820 }
13821
13822-/* { dg-final { scan-assembler "vshr\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13823+/* { dg-final { scan-assembler "vshr\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13824 /* { dg-final { cleanup-saved-temps } } */
13825
13826=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c'
13827--- old/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c 2010-07-29 15:38:15 +0000
13828+++ new/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c 2010-08-20 13:27:11 +0000
13829@@ -16,5 +16,5 @@
13830 out_int8x8_t = vshrn_n_s16 (arg0_int16x8_t, 1);
13831 }
13832
13833-/* { dg-final { scan-assembler "vshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13834+/* { dg-final { scan-assembler "vshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13835 /* { dg-final { cleanup-saved-temps } } */
13836
13837=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c'
13838--- old/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c 2010-07-29 15:38:15 +0000
13839+++ new/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c 2010-08-20 13:27:11 +0000
13840@@ -16,5 +16,5 @@
13841 out_int16x4_t = vshrn_n_s32 (arg0_int32x4_t, 1);
13842 }
13843
13844-/* { dg-final { scan-assembler "vshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13845+/* { dg-final { scan-assembler "vshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13846 /* { dg-final { cleanup-saved-temps } } */
13847
13848=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c'
13849--- old/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c 2010-07-29 15:38:15 +0000
13850+++ new/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c 2010-08-20 13:27:11 +0000
13851@@ -16,5 +16,5 @@
13852 out_int32x2_t = vshrn_n_s64 (arg0_int64x2_t, 1);
13853 }
13854
13855-/* { dg-final { scan-assembler "vshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13856+/* { dg-final { scan-assembler "vshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13857 /* { dg-final { cleanup-saved-temps } } */
13858
13859=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c'
13860--- old/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c 2010-07-29 15:38:15 +0000
13861+++ new/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c 2010-08-20 13:27:11 +0000
13862@@ -16,5 +16,5 @@
13863 out_uint8x8_t = vshrn_n_u16 (arg0_uint16x8_t, 1);
13864 }
13865
13866-/* { dg-final { scan-assembler "vshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13867+/* { dg-final { scan-assembler "vshrn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13868 /* { dg-final { cleanup-saved-temps } } */
13869
13870=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c'
13871--- old/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c 2010-07-29 15:38:15 +0000
13872+++ new/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c 2010-08-20 13:27:11 +0000
13873@@ -16,5 +16,5 @@
13874 out_uint16x4_t = vshrn_n_u32 (arg0_uint32x4_t, 1);
13875 }
13876
13877-/* { dg-final { scan-assembler "vshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13878+/* { dg-final { scan-assembler "vshrn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13879 /* { dg-final { cleanup-saved-temps } } */
13880
13881=== modified file 'gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c'
13882--- old/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c 2010-07-29 15:38:15 +0000
13883+++ new/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c 2010-08-20 13:27:11 +0000
13884@@ -16,5 +16,5 @@
13885 out_uint32x2_t = vshrn_n_u64 (arg0_uint64x2_t, 1);
13886 }
13887
13888-/* { dg-final { scan-assembler "vshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13889+/* { dg-final { scan-assembler "vshrn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13890 /* { dg-final { cleanup-saved-temps } } */
13891
13892=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c'
13893--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c 2010-07-29 15:38:15 +0000
13894+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c 2010-08-20 13:27:11 +0000
13895@@ -17,5 +17,5 @@
13896 out_poly16x8_t = vsliq_n_p16 (arg0_poly16x8_t, arg1_poly16x8_t, 1);
13897 }
13898
13899-/* { dg-final { scan-assembler "vsli\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13900+/* { dg-final { scan-assembler "vsli\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13901 /* { dg-final { cleanup-saved-temps } } */
13902
13903=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c'
13904--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c 2010-07-29 15:38:15 +0000
13905+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c 2010-08-20 13:27:11 +0000
13906@@ -17,5 +17,5 @@
13907 out_poly8x16_t = vsliq_n_p8 (arg0_poly8x16_t, arg1_poly8x16_t, 1);
13908 }
13909
13910-/* { dg-final { scan-assembler "vsli\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13911+/* { dg-final { scan-assembler "vsli\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13912 /* { dg-final { cleanup-saved-temps } } */
13913
13914=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c'
13915--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c 2010-07-29 15:38:15 +0000
13916+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c 2010-08-20 13:27:11 +0000
13917@@ -17,5 +17,5 @@
13918 out_int16x8_t = vsliq_n_s16 (arg0_int16x8_t, arg1_int16x8_t, 1);
13919 }
13920
13921-/* { dg-final { scan-assembler "vsli\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13922+/* { dg-final { scan-assembler "vsli\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13923 /* { dg-final { cleanup-saved-temps } } */
13924
13925=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c'
13926--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c 2010-07-29 15:38:15 +0000
13927+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c 2010-08-20 13:27:11 +0000
13928@@ -17,5 +17,5 @@
13929 out_int32x4_t = vsliq_n_s32 (arg0_int32x4_t, arg1_int32x4_t, 1);
13930 }
13931
13932-/* { dg-final { scan-assembler "vsli\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13933+/* { dg-final { scan-assembler "vsli\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13934 /* { dg-final { cleanup-saved-temps } } */
13935
13936=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c'
13937--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c 2010-07-29 15:38:15 +0000
13938+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c 2010-08-20 13:27:11 +0000
13939@@ -17,5 +17,5 @@
13940 out_int64x2_t = vsliq_n_s64 (arg0_int64x2_t, arg1_int64x2_t, 1);
13941 }
13942
13943-/* { dg-final { scan-assembler "vsli\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13944+/* { dg-final { scan-assembler "vsli\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13945 /* { dg-final { cleanup-saved-temps } } */
13946
13947=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c'
13948--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c 2010-07-29 15:38:15 +0000
13949+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c 2010-08-20 13:27:11 +0000
13950@@ -17,5 +17,5 @@
13951 out_int8x16_t = vsliq_n_s8 (arg0_int8x16_t, arg1_int8x16_t, 1);
13952 }
13953
13954-/* { dg-final { scan-assembler "vsli\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13955+/* { dg-final { scan-assembler "vsli\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13956 /* { dg-final { cleanup-saved-temps } } */
13957
13958=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c'
13959--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c 2010-07-29 15:38:15 +0000
13960+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c 2010-08-20 13:27:11 +0000
13961@@ -17,5 +17,5 @@
13962 out_uint16x8_t = vsliq_n_u16 (arg0_uint16x8_t, arg1_uint16x8_t, 1);
13963 }
13964
13965-/* { dg-final { scan-assembler "vsli\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13966+/* { dg-final { scan-assembler "vsli\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13967 /* { dg-final { cleanup-saved-temps } } */
13968
13969=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c'
13970--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c 2010-07-29 15:38:15 +0000
13971+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c 2010-08-20 13:27:11 +0000
13972@@ -17,5 +17,5 @@
13973 out_uint32x4_t = vsliq_n_u32 (arg0_uint32x4_t, arg1_uint32x4_t, 1);
13974 }
13975
13976-/* { dg-final { scan-assembler "vsli\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13977+/* { dg-final { scan-assembler "vsli\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13978 /* { dg-final { cleanup-saved-temps } } */
13979
13980=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c'
13981--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c 2010-07-29 15:38:15 +0000
13982+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c 2010-08-20 13:27:11 +0000
13983@@ -17,5 +17,5 @@
13984 out_uint64x2_t = vsliq_n_u64 (arg0_uint64x2_t, arg1_uint64x2_t, 1);
13985 }
13986
13987-/* { dg-final { scan-assembler "vsli\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13988+/* { dg-final { scan-assembler "vsli\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
13989 /* { dg-final { cleanup-saved-temps } } */
13990
13991=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c'
13992--- old/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c 2010-07-29 15:38:15 +0000
13993+++ new/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c 2010-08-20 13:27:11 +0000
13994@@ -17,5 +17,5 @@
13995 out_uint8x16_t = vsliq_n_u8 (arg0_uint8x16_t, arg1_uint8x16_t, 1);
13996 }
13997
13998-/* { dg-final { scan-assembler "vsli\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
13999+/* { dg-final { scan-assembler "vsli\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14000 /* { dg-final { cleanup-saved-temps } } */
14001
14002=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_np16.c'
14003--- old/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c 2010-07-29 15:38:15 +0000
14004+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c 2010-08-20 13:27:11 +0000
14005@@ -17,5 +17,5 @@
14006 out_poly16x4_t = vsli_n_p16 (arg0_poly16x4_t, arg1_poly16x4_t, 1);
14007 }
14008
14009-/* { dg-final { scan-assembler "vsli\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14010+/* { dg-final { scan-assembler "vsli\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14011 /* { dg-final { cleanup-saved-temps } } */
14012
14013=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_np8.c'
14014--- old/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c 2010-07-29 15:38:15 +0000
14015+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c 2010-08-20 13:27:11 +0000
14016@@ -17,5 +17,5 @@
14017 out_poly8x8_t = vsli_n_p8 (arg0_poly8x8_t, arg1_poly8x8_t, 1);
14018 }
14019
14020-/* { dg-final { scan-assembler "vsli\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14021+/* { dg-final { scan-assembler "vsli\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14022 /* { dg-final { cleanup-saved-temps } } */
14023
14024=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c'
14025--- old/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c 2010-07-29 15:38:15 +0000
14026+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c 2010-08-20 13:27:11 +0000
14027@@ -17,5 +17,5 @@
14028 out_int16x4_t = vsli_n_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
14029 }
14030
14031-/* { dg-final { scan-assembler "vsli\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14032+/* { dg-final { scan-assembler "vsli\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14033 /* { dg-final { cleanup-saved-temps } } */
14034
14035=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c'
14036--- old/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c 2010-07-29 15:38:15 +0000
14037+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c 2010-08-20 13:27:11 +0000
14038@@ -17,5 +17,5 @@
14039 out_int32x2_t = vsli_n_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
14040 }
14041
14042-/* { dg-final { scan-assembler "vsli\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14043+/* { dg-final { scan-assembler "vsli\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14044 /* { dg-final { cleanup-saved-temps } } */
14045
14046=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c'
14047--- old/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c 2010-07-29 15:38:15 +0000
14048+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c 2010-08-20 13:27:11 +0000
14049@@ -17,5 +17,5 @@
14050 out_int64x1_t = vsli_n_s64 (arg0_int64x1_t, arg1_int64x1_t, 1);
14051 }
14052
14053-/* { dg-final { scan-assembler "vsli\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14054+/* { dg-final { scan-assembler "vsli\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14055 /* { dg-final { cleanup-saved-temps } } */
14056
14057=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c'
14058--- old/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c 2010-07-29 15:38:15 +0000
14059+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c 2010-08-20 13:27:11 +0000
14060@@ -17,5 +17,5 @@
14061 out_int8x8_t = vsli_n_s8 (arg0_int8x8_t, arg1_int8x8_t, 1);
14062 }
14063
14064-/* { dg-final { scan-assembler "vsli\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14065+/* { dg-final { scan-assembler "vsli\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14066 /* { dg-final { cleanup-saved-temps } } */
14067
14068=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c'
14069--- old/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c 2010-07-29 15:38:15 +0000
14070+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c 2010-08-20 13:27:11 +0000
14071@@ -17,5 +17,5 @@
14072 out_uint16x4_t = vsli_n_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 1);
14073 }
14074
14075-/* { dg-final { scan-assembler "vsli\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14076+/* { dg-final { scan-assembler "vsli\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14077 /* { dg-final { cleanup-saved-temps } } */
14078
14079=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c'
14080--- old/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c 2010-07-29 15:38:15 +0000
14081+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c 2010-08-20 13:27:11 +0000
14082@@ -17,5 +17,5 @@
14083 out_uint32x2_t = vsli_n_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 1);
14084 }
14085
14086-/* { dg-final { scan-assembler "vsli\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14087+/* { dg-final { scan-assembler "vsli\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14088 /* { dg-final { cleanup-saved-temps } } */
14089
14090=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c'
14091--- old/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c 2010-07-29 15:38:15 +0000
14092+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c 2010-08-20 13:27:11 +0000
14093@@ -17,5 +17,5 @@
14094 out_uint64x1_t = vsli_n_u64 (arg0_uint64x1_t, arg1_uint64x1_t, 1);
14095 }
14096
14097-/* { dg-final { scan-assembler "vsli\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14098+/* { dg-final { scan-assembler "vsli\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14099 /* { dg-final { cleanup-saved-temps } } */
14100
14101=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c'
14102--- old/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c 2010-07-29 15:38:15 +0000
14103+++ new/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c 2010-08-20 13:27:11 +0000
14104@@ -17,5 +17,5 @@
14105 out_uint8x8_t = vsli_n_u8 (arg0_uint8x8_t, arg1_uint8x8_t, 1);
14106 }
14107
14108-/* { dg-final { scan-assembler "vsli\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14109+/* { dg-final { scan-assembler "vsli\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14110 /* { dg-final { cleanup-saved-temps } } */
14111
14112=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c'
14113--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c 2010-07-29 15:38:15 +0000
14114+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c 2010-08-20 13:27:11 +0000
14115@@ -17,5 +17,5 @@
14116 out_int16x8_t = vsraq_n_s16 (arg0_int16x8_t, arg1_int16x8_t, 1);
14117 }
14118
14119-/* { dg-final { scan-assembler "vsra\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14120+/* { dg-final { scan-assembler "vsra\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14121 /* { dg-final { cleanup-saved-temps } } */
14122
14123=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c'
14124--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c 2010-07-29 15:38:15 +0000
14125+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c 2010-08-20 13:27:11 +0000
14126@@ -17,5 +17,5 @@
14127 out_int32x4_t = vsraq_n_s32 (arg0_int32x4_t, arg1_int32x4_t, 1);
14128 }
14129
14130-/* { dg-final { scan-assembler "vsra\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14131+/* { dg-final { scan-assembler "vsra\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14132 /* { dg-final { cleanup-saved-temps } } */
14133
14134=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c'
14135--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c 2010-07-29 15:38:15 +0000
14136+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c 2010-08-20 13:27:11 +0000
14137@@ -17,5 +17,5 @@
14138 out_int64x2_t = vsraq_n_s64 (arg0_int64x2_t, arg1_int64x2_t, 1);
14139 }
14140
14141-/* { dg-final { scan-assembler "vsra\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14142+/* { dg-final { scan-assembler "vsra\.s64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14143 /* { dg-final { cleanup-saved-temps } } */
14144
14145=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c'
14146--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c 2010-07-29 15:38:15 +0000
14147+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c 2010-08-20 13:27:11 +0000
14148@@ -17,5 +17,5 @@
14149 out_int8x16_t = vsraq_n_s8 (arg0_int8x16_t, arg1_int8x16_t, 1);
14150 }
14151
14152-/* { dg-final { scan-assembler "vsra\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14153+/* { dg-final { scan-assembler "vsra\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14154 /* { dg-final { cleanup-saved-temps } } */
14155
14156=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c'
14157--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c 2010-07-29 15:38:15 +0000
14158+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c 2010-08-20 13:27:11 +0000
14159@@ -17,5 +17,5 @@
14160 out_uint16x8_t = vsraq_n_u16 (arg0_uint16x8_t, arg1_uint16x8_t, 1);
14161 }
14162
14163-/* { dg-final { scan-assembler "vsra\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14164+/* { dg-final { scan-assembler "vsra\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14165 /* { dg-final { cleanup-saved-temps } } */
14166
14167=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c'
14168--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c 2010-07-29 15:38:15 +0000
14169+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c 2010-08-20 13:27:11 +0000
14170@@ -17,5 +17,5 @@
14171 out_uint32x4_t = vsraq_n_u32 (arg0_uint32x4_t, arg1_uint32x4_t, 1);
14172 }
14173
14174-/* { dg-final { scan-assembler "vsra\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14175+/* { dg-final { scan-assembler "vsra\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14176 /* { dg-final { cleanup-saved-temps } } */
14177
14178=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c'
14179--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c 2010-07-29 15:38:15 +0000
14180+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c 2010-08-20 13:27:11 +0000
14181@@ -17,5 +17,5 @@
14182 out_uint64x2_t = vsraq_n_u64 (arg0_uint64x2_t, arg1_uint64x2_t, 1);
14183 }
14184
14185-/* { dg-final { scan-assembler "vsra\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14186+/* { dg-final { scan-assembler "vsra\.u64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14187 /* { dg-final { cleanup-saved-temps } } */
14188
14189=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c'
14190--- old/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c 2010-07-29 15:38:15 +0000
14191+++ new/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c 2010-08-20 13:27:11 +0000
14192@@ -17,5 +17,5 @@
14193 out_uint8x16_t = vsraq_n_u8 (arg0_uint8x16_t, arg1_uint8x16_t, 1);
14194 }
14195
14196-/* { dg-final { scan-assembler "vsra\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14197+/* { dg-final { scan-assembler "vsra\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14198 /* { dg-final { cleanup-saved-temps } } */
14199
14200=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c'
14201--- old/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c 2010-07-29 15:38:15 +0000
14202+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c 2010-08-20 13:27:11 +0000
14203@@ -17,5 +17,5 @@
14204 out_int16x4_t = vsra_n_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
14205 }
14206
14207-/* { dg-final { scan-assembler "vsra\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14208+/* { dg-final { scan-assembler "vsra\.s16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14209 /* { dg-final { cleanup-saved-temps } } */
14210
14211=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c'
14212--- old/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c 2010-07-29 15:38:15 +0000
14213+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c 2010-08-20 13:27:11 +0000
14214@@ -17,5 +17,5 @@
14215 out_int32x2_t = vsra_n_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
14216 }
14217
14218-/* { dg-final { scan-assembler "vsra\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14219+/* { dg-final { scan-assembler "vsra\.s32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14220 /* { dg-final { cleanup-saved-temps } } */
14221
14222=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c'
14223--- old/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c 2010-07-29 15:38:15 +0000
14224+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c 2010-08-20 13:27:11 +0000
14225@@ -17,5 +17,5 @@
14226 out_int64x1_t = vsra_n_s64 (arg0_int64x1_t, arg1_int64x1_t, 1);
14227 }
14228
14229-/* { dg-final { scan-assembler "vsra\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14230+/* { dg-final { scan-assembler "vsra\.s64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14231 /* { dg-final { cleanup-saved-temps } } */
14232
14233=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c'
14234--- old/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c 2010-07-29 15:38:15 +0000
14235+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c 2010-08-20 13:27:11 +0000
14236@@ -17,5 +17,5 @@
14237 out_int8x8_t = vsra_n_s8 (arg0_int8x8_t, arg1_int8x8_t, 1);
14238 }
14239
14240-/* { dg-final { scan-assembler "vsra\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14241+/* { dg-final { scan-assembler "vsra\.s8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14242 /* { dg-final { cleanup-saved-temps } } */
14243
14244=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c'
14245--- old/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c 2010-07-29 15:38:15 +0000
14246+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c 2010-08-20 13:27:11 +0000
14247@@ -17,5 +17,5 @@
14248 out_uint16x4_t = vsra_n_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 1);
14249 }
14250
14251-/* { dg-final { scan-assembler "vsra\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14252+/* { dg-final { scan-assembler "vsra\.u16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14253 /* { dg-final { cleanup-saved-temps } } */
14254
14255=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c'
14256--- old/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c 2010-07-29 15:38:15 +0000
14257+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c 2010-08-20 13:27:11 +0000
14258@@ -17,5 +17,5 @@
14259 out_uint32x2_t = vsra_n_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 1);
14260 }
14261
14262-/* { dg-final { scan-assembler "vsra\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14263+/* { dg-final { scan-assembler "vsra\.u32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14264 /* { dg-final { cleanup-saved-temps } } */
14265
14266=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c'
14267--- old/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c 2010-07-29 15:38:15 +0000
14268+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c 2010-08-20 13:27:11 +0000
14269@@ -17,5 +17,5 @@
14270 out_uint64x1_t = vsra_n_u64 (arg0_uint64x1_t, arg1_uint64x1_t, 1);
14271 }
14272
14273-/* { dg-final { scan-assembler "vsra\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14274+/* { dg-final { scan-assembler "vsra\.u64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14275 /* { dg-final { cleanup-saved-temps } } */
14276
14277=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c'
14278--- old/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c 2010-07-29 15:38:15 +0000
14279+++ new/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c 2010-08-20 13:27:11 +0000
14280@@ -17,5 +17,5 @@
14281 out_uint8x8_t = vsra_n_u8 (arg0_uint8x8_t, arg1_uint8x8_t, 1);
14282 }
14283
14284-/* { dg-final { scan-assembler "vsra\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14285+/* { dg-final { scan-assembler "vsra\.u8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14286 /* { dg-final { cleanup-saved-temps } } */
14287
14288=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c'
14289--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c 2010-07-29 15:38:15 +0000
14290+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c 2010-08-20 13:27:11 +0000
14291@@ -17,5 +17,5 @@
14292 out_poly16x8_t = vsriq_n_p16 (arg0_poly16x8_t, arg1_poly16x8_t, 1);
14293 }
14294
14295-/* { dg-final { scan-assembler "vsri\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14296+/* { dg-final { scan-assembler "vsri\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14297 /* { dg-final { cleanup-saved-temps } } */
14298
14299=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c'
14300--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c 2010-07-29 15:38:15 +0000
14301+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c 2010-08-20 13:27:11 +0000
14302@@ -17,5 +17,5 @@
14303 out_poly8x16_t = vsriq_n_p8 (arg0_poly8x16_t, arg1_poly8x16_t, 1);
14304 }
14305
14306-/* { dg-final { scan-assembler "vsri\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14307+/* { dg-final { scan-assembler "vsri\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14308 /* { dg-final { cleanup-saved-temps } } */
14309
14310=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c'
14311--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c 2010-07-29 15:38:15 +0000
14312+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c 2010-08-20 13:27:11 +0000
14313@@ -17,5 +17,5 @@
14314 out_int16x8_t = vsriq_n_s16 (arg0_int16x8_t, arg1_int16x8_t, 1);
14315 }
14316
14317-/* { dg-final { scan-assembler "vsri\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14318+/* { dg-final { scan-assembler "vsri\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14319 /* { dg-final { cleanup-saved-temps } } */
14320
14321=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c'
14322--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c 2010-07-29 15:38:15 +0000
14323+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c 2010-08-20 13:27:11 +0000
14324@@ -17,5 +17,5 @@
14325 out_int32x4_t = vsriq_n_s32 (arg0_int32x4_t, arg1_int32x4_t, 1);
14326 }
14327
14328-/* { dg-final { scan-assembler "vsri\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14329+/* { dg-final { scan-assembler "vsri\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14330 /* { dg-final { cleanup-saved-temps } } */
14331
14332=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c'
14333--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c 2010-07-29 15:38:15 +0000
14334+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c 2010-08-20 13:27:11 +0000
14335@@ -17,5 +17,5 @@
14336 out_int64x2_t = vsriq_n_s64 (arg0_int64x2_t, arg1_int64x2_t, 1);
14337 }
14338
14339-/* { dg-final { scan-assembler "vsri\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14340+/* { dg-final { scan-assembler "vsri\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14341 /* { dg-final { cleanup-saved-temps } } */
14342
14343=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c'
14344--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c 2010-07-29 15:38:15 +0000
14345+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c 2010-08-20 13:27:11 +0000
14346@@ -17,5 +17,5 @@
14347 out_int8x16_t = vsriq_n_s8 (arg0_int8x16_t, arg1_int8x16_t, 1);
14348 }
14349
14350-/* { dg-final { scan-assembler "vsri\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14351+/* { dg-final { scan-assembler "vsri\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14352 /* { dg-final { cleanup-saved-temps } } */
14353
14354=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c'
14355--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c 2010-07-29 15:38:15 +0000
14356+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c 2010-08-20 13:27:11 +0000
14357@@ -17,5 +17,5 @@
14358 out_uint16x8_t = vsriq_n_u16 (arg0_uint16x8_t, arg1_uint16x8_t, 1);
14359 }
14360
14361-/* { dg-final { scan-assembler "vsri\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14362+/* { dg-final { scan-assembler "vsri\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14363 /* { dg-final { cleanup-saved-temps } } */
14364
14365=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c'
14366--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c 2010-07-29 15:38:15 +0000
14367+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c 2010-08-20 13:27:11 +0000
14368@@ -17,5 +17,5 @@
14369 out_uint32x4_t = vsriq_n_u32 (arg0_uint32x4_t, arg1_uint32x4_t, 1);
14370 }
14371
14372-/* { dg-final { scan-assembler "vsri\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14373+/* { dg-final { scan-assembler "vsri\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14374 /* { dg-final { cleanup-saved-temps } } */
14375
14376=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c'
14377--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c 2010-07-29 15:38:15 +0000
14378+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c 2010-08-20 13:27:11 +0000
14379@@ -17,5 +17,5 @@
14380 out_uint64x2_t = vsriq_n_u64 (arg0_uint64x2_t, arg1_uint64x2_t, 1);
14381 }
14382
14383-/* { dg-final { scan-assembler "vsri\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14384+/* { dg-final { scan-assembler "vsri\.64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14385 /* { dg-final { cleanup-saved-temps } } */
14386
14387=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c'
14388--- old/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c 2010-07-29 15:38:15 +0000
14389+++ new/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c 2010-08-20 13:27:11 +0000
14390@@ -17,5 +17,5 @@
14391 out_uint8x16_t = vsriq_n_u8 (arg0_uint8x16_t, arg1_uint8x16_t, 1);
14392 }
14393
14394-/* { dg-final { scan-assembler "vsri\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14395+/* { dg-final { scan-assembler "vsri\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14396 /* { dg-final { cleanup-saved-temps } } */
14397
14398=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_np16.c'
14399--- old/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c 2010-07-29 15:38:15 +0000
14400+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c 2010-08-20 13:27:11 +0000
14401@@ -17,5 +17,5 @@
14402 out_poly16x4_t = vsri_n_p16 (arg0_poly16x4_t, arg1_poly16x4_t, 1);
14403 }
14404
14405-/* { dg-final { scan-assembler "vsri\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14406+/* { dg-final { scan-assembler "vsri\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14407 /* { dg-final { cleanup-saved-temps } } */
14408
14409=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_np8.c'
14410--- old/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c 2010-07-29 15:38:15 +0000
14411+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c 2010-08-20 13:27:11 +0000
14412@@ -17,5 +17,5 @@
14413 out_poly8x8_t = vsri_n_p8 (arg0_poly8x8_t, arg1_poly8x8_t, 1);
14414 }
14415
14416-/* { dg-final { scan-assembler "vsri\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14417+/* { dg-final { scan-assembler "vsri\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14418 /* { dg-final { cleanup-saved-temps } } */
14419
14420=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c'
14421--- old/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c 2010-07-29 15:38:15 +0000
14422+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c 2010-08-20 13:27:11 +0000
14423@@ -17,5 +17,5 @@
14424 out_int16x4_t = vsri_n_s16 (arg0_int16x4_t, arg1_int16x4_t, 1);
14425 }
14426
14427-/* { dg-final { scan-assembler "vsri\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14428+/* { dg-final { scan-assembler "vsri\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14429 /* { dg-final { cleanup-saved-temps } } */
14430
14431=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c'
14432--- old/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c 2010-07-29 15:38:15 +0000
14433+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c 2010-08-20 13:27:11 +0000
14434@@ -17,5 +17,5 @@
14435 out_int32x2_t = vsri_n_s32 (arg0_int32x2_t, arg1_int32x2_t, 1);
14436 }
14437
14438-/* { dg-final { scan-assembler "vsri\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14439+/* { dg-final { scan-assembler "vsri\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14440 /* { dg-final { cleanup-saved-temps } } */
14441
14442=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c'
14443--- old/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c 2010-07-29 15:38:15 +0000
14444+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c 2010-08-20 13:27:11 +0000
14445@@ -17,5 +17,5 @@
14446 out_int64x1_t = vsri_n_s64 (arg0_int64x1_t, arg1_int64x1_t, 1);
14447 }
14448
14449-/* { dg-final { scan-assembler "vsri\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14450+/* { dg-final { scan-assembler "vsri\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14451 /* { dg-final { cleanup-saved-temps } } */
14452
14453=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c'
14454--- old/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c 2010-07-29 15:38:15 +0000
14455+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c 2010-08-20 13:27:11 +0000
14456@@ -17,5 +17,5 @@
14457 out_int8x8_t = vsri_n_s8 (arg0_int8x8_t, arg1_int8x8_t, 1);
14458 }
14459
14460-/* { dg-final { scan-assembler "vsri\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14461+/* { dg-final { scan-assembler "vsri\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14462 /* { dg-final { cleanup-saved-temps } } */
14463
14464=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c'
14465--- old/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c 2010-07-29 15:38:15 +0000
14466+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c 2010-08-20 13:27:11 +0000
14467@@ -17,5 +17,5 @@
14468 out_uint16x4_t = vsri_n_u16 (arg0_uint16x4_t, arg1_uint16x4_t, 1);
14469 }
14470
14471-/* { dg-final { scan-assembler "vsri\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14472+/* { dg-final { scan-assembler "vsri\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14473 /* { dg-final { cleanup-saved-temps } } */
14474
14475=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c'
14476--- old/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c 2010-07-29 15:38:15 +0000
14477+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c 2010-08-20 13:27:11 +0000
14478@@ -17,5 +17,5 @@
14479 out_uint32x2_t = vsri_n_u32 (arg0_uint32x2_t, arg1_uint32x2_t, 1);
14480 }
14481
14482-/* { dg-final { scan-assembler "vsri\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14483+/* { dg-final { scan-assembler "vsri\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14484 /* { dg-final { cleanup-saved-temps } } */
14485
14486=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c'
14487--- old/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c 2010-07-29 15:38:15 +0000
14488+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c 2010-08-20 13:27:11 +0000
14489@@ -17,5 +17,5 @@
14490 out_uint64x1_t = vsri_n_u64 (arg0_uint64x1_t, arg1_uint64x1_t, 1);
14491 }
14492
14493-/* { dg-final { scan-assembler "vsri\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14494+/* { dg-final { scan-assembler "vsri\.64\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14495 /* { dg-final { cleanup-saved-temps } } */
14496
14497=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c'
14498--- old/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c 2010-07-29 15:38:15 +0000
14499+++ new/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c 2010-08-20 13:27:11 +0000
14500@@ -17,5 +17,5 @@
14501 out_uint8x8_t = vsri_n_u8 (arg0_uint8x8_t, arg1_uint8x8_t, 1);
14502 }
14503
14504-/* { dg-final { scan-assembler "vsri\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14505+/* { dg-final { scan-assembler "vsri\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
14506 /* { dg-final { cleanup-saved-temps } } */
14507
14508=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c'
14509--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c 2010-07-29 15:38:15 +0000
14510+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c 2010-08-20 13:27:11 +0000
14511@@ -16,5 +16,5 @@
14512 vst1q_lane_f32 (arg0_float32_t, arg1_float32x4_t, 1);
14513 }
14514
14515-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14516+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14517 /* { dg-final { cleanup-saved-temps } } */
14518
14519=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c'
14520--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c 2010-07-29 15:38:15 +0000
14521+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c 2010-08-20 13:27:11 +0000
14522@@ -16,5 +16,5 @@
14523 vst1q_lane_p16 (arg0_poly16_t, arg1_poly16x8_t, 1);
14524 }
14525
14526-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14527+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14528 /* { dg-final { cleanup-saved-temps } } */
14529
14530=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c'
14531--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c 2010-07-29 15:38:15 +0000
14532+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c 2010-08-20 13:27:11 +0000
14533@@ -16,5 +16,5 @@
14534 vst1q_lane_p8 (arg0_poly8_t, arg1_poly8x16_t, 1);
14535 }
14536
14537-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14538+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14539 /* { dg-final { cleanup-saved-temps } } */
14540
14541=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c'
14542--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c 2010-07-29 15:38:15 +0000
14543+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c 2010-08-20 13:27:11 +0000
14544@@ -16,5 +16,5 @@
14545 vst1q_lane_s16 (arg0_int16_t, arg1_int16x8_t, 1);
14546 }
14547
14548-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14549+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14550 /* { dg-final { cleanup-saved-temps } } */
14551
14552=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c'
14553--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c 2010-07-29 15:38:15 +0000
14554+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c 2010-08-20 13:27:11 +0000
14555@@ -16,5 +16,5 @@
14556 vst1q_lane_s32 (arg0_int32_t, arg1_int32x4_t, 1);
14557 }
14558
14559-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14560+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14561 /* { dg-final { cleanup-saved-temps } } */
14562
14563=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c'
14564--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c 2010-07-29 15:38:15 +0000
14565+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c 2010-08-20 13:27:11 +0000
14566@@ -16,5 +16,5 @@
14567 vst1q_lane_s64 (arg0_int64_t, arg1_int64x2_t, 1);
14568 }
14569
14570-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14571+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14572 /* { dg-final { cleanup-saved-temps } } */
14573
14574=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c'
14575--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c 2010-07-29 15:38:15 +0000
14576+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c 2010-08-20 13:27:11 +0000
14577@@ -16,5 +16,5 @@
14578 vst1q_lane_s8 (arg0_int8_t, arg1_int8x16_t, 1);
14579 }
14580
14581-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14582+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14583 /* { dg-final { cleanup-saved-temps } } */
14584
14585=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c'
14586--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c 2010-07-29 15:38:15 +0000
14587+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c 2010-08-20 13:27:11 +0000
14588@@ -16,5 +16,5 @@
14589 vst1q_lane_u16 (arg0_uint16_t, arg1_uint16x8_t, 1);
14590 }
14591
14592-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14593+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14594 /* { dg-final { cleanup-saved-temps } } */
14595
14596=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c'
14597--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c 2010-07-29 15:38:15 +0000
14598+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c 2010-08-20 13:27:11 +0000
14599@@ -16,5 +16,5 @@
14600 vst1q_lane_u32 (arg0_uint32_t, arg1_uint32x4_t, 1);
14601 }
14602
14603-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14604+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14605 /* { dg-final { cleanup-saved-temps } } */
14606
14607=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c'
14608--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c 2010-07-29 15:38:15 +0000
14609+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c 2010-08-20 13:27:11 +0000
14610@@ -16,5 +16,5 @@
14611 vst1q_lane_u64 (arg0_uint64_t, arg1_uint64x2_t, 1);
14612 }
14613
14614-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14615+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14616 /* { dg-final { cleanup-saved-temps } } */
14617
14618=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c'
14619--- old/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c 2010-07-29 15:38:15 +0000
14620+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c 2010-08-20 13:27:11 +0000
14621@@ -16,5 +16,5 @@
14622 vst1q_lane_u8 (arg0_uint8_t, arg1_uint8x16_t, 1);
14623 }
14624
14625-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14626+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14627 /* { dg-final { cleanup-saved-temps } } */
14628
14629=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c'
14630--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c 2010-07-29 15:38:15 +0000
14631+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c 2010-08-20 13:27:11 +0000
14632@@ -16,5 +16,5 @@
14633 vst1q_f32 (arg0_float32_t, arg1_float32x4_t);
14634 }
14635
14636-/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14637+/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14638 /* { dg-final { cleanup-saved-temps } } */
14639
14640=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c'
14641--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c 2010-07-29 15:38:15 +0000
14642+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c 2010-08-20 13:27:11 +0000
14643@@ -16,5 +16,5 @@
14644 vst1q_p16 (arg0_poly16_t, arg1_poly16x8_t);
14645 }
14646
14647-/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14648+/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14649 /* { dg-final { cleanup-saved-temps } } */
14650
14651=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c'
14652--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c 2010-07-29 15:38:15 +0000
14653+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c 2010-08-20 13:27:11 +0000
14654@@ -16,5 +16,5 @@
14655 vst1q_p8 (arg0_poly8_t, arg1_poly8x16_t);
14656 }
14657
14658-/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14659+/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14660 /* { dg-final { cleanup-saved-temps } } */
14661
14662=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c'
14663--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c 2010-07-29 15:38:15 +0000
14664+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c 2010-08-20 13:27:11 +0000
14665@@ -16,5 +16,5 @@
14666 vst1q_s16 (arg0_int16_t, arg1_int16x8_t);
14667 }
14668
14669-/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14670+/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14671 /* { dg-final { cleanup-saved-temps } } */
14672
14673=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c'
14674--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c 2010-07-29 15:38:15 +0000
14675+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c 2010-08-20 13:27:11 +0000
14676@@ -16,5 +16,5 @@
14677 vst1q_s32 (arg0_int32_t, arg1_int32x4_t);
14678 }
14679
14680-/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14681+/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14682 /* { dg-final { cleanup-saved-temps } } */
14683
14684=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c'
14685--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c 2010-07-29 15:38:15 +0000
14686+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c 2010-08-20 13:27:11 +0000
14687@@ -16,5 +16,5 @@
14688 vst1q_s64 (arg0_int64_t, arg1_int64x2_t);
14689 }
14690
14691-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14692+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14693 /* { dg-final { cleanup-saved-temps } } */
14694
14695=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c'
14696--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c 2010-07-29 15:38:15 +0000
14697+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c 2010-08-20 13:27:11 +0000
14698@@ -16,5 +16,5 @@
14699 vst1q_s8 (arg0_int8_t, arg1_int8x16_t);
14700 }
14701
14702-/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14703+/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14704 /* { dg-final { cleanup-saved-temps } } */
14705
14706=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c'
14707--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c 2010-07-29 15:38:15 +0000
14708+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c 2010-08-20 13:27:11 +0000
14709@@ -16,5 +16,5 @@
14710 vst1q_u16 (arg0_uint16_t, arg1_uint16x8_t);
14711 }
14712
14713-/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14714+/* { dg-final { scan-assembler "vst1\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14715 /* { dg-final { cleanup-saved-temps } } */
14716
14717=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c'
14718--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c 2010-07-29 15:38:15 +0000
14719+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c 2010-08-20 13:27:11 +0000
14720@@ -16,5 +16,5 @@
14721 vst1q_u32 (arg0_uint32_t, arg1_uint32x4_t);
14722 }
14723
14724-/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14725+/* { dg-final { scan-assembler "vst1\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14726 /* { dg-final { cleanup-saved-temps } } */
14727
14728=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c'
14729--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c 2010-07-29 15:38:15 +0000
14730+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c 2010-08-20 13:27:11 +0000
14731@@ -16,5 +16,5 @@
14732 vst1q_u64 (arg0_uint64_t, arg1_uint64x2_t);
14733 }
14734
14735-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14736+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14737 /* { dg-final { cleanup-saved-temps } } */
14738
14739=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c'
14740--- old/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c 2010-07-29 15:38:15 +0000
14741+++ new/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c 2010-08-20 13:27:11 +0000
14742@@ -16,5 +16,5 @@
14743 vst1q_u8 (arg0_uint8_t, arg1_uint8x16_t);
14744 }
14745
14746-/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14747+/* { dg-final { scan-assembler "vst1\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14748 /* { dg-final { cleanup-saved-temps } } */
14749
14750=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c'
14751--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c 2010-07-29 15:38:15 +0000
14752+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c 2010-08-20 13:27:11 +0000
14753@@ -16,5 +16,5 @@
14754 vst1_lane_f32 (arg0_float32_t, arg1_float32x2_t, 1);
14755 }
14756
14757-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14758+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14759 /* { dg-final { cleanup-saved-temps } } */
14760
14761=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c'
14762--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c 2010-07-29 15:38:15 +0000
14763+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c 2010-08-20 13:27:11 +0000
14764@@ -16,5 +16,5 @@
14765 vst1_lane_p16 (arg0_poly16_t, arg1_poly16x4_t, 1);
14766 }
14767
14768-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14769+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14770 /* { dg-final { cleanup-saved-temps } } */
14771
14772=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c'
14773--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c 2010-07-29 15:38:15 +0000
14774+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c 2010-08-20 13:27:11 +0000
14775@@ -16,5 +16,5 @@
14776 vst1_lane_p8 (arg0_poly8_t, arg1_poly8x8_t, 1);
14777 }
14778
14779-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14780+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14781 /* { dg-final { cleanup-saved-temps } } */
14782
14783=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c'
14784--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c 2010-07-29 15:38:15 +0000
14785+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c 2010-08-20 13:27:11 +0000
14786@@ -16,5 +16,5 @@
14787 vst1_lane_s16 (arg0_int16_t, arg1_int16x4_t, 1);
14788 }
14789
14790-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14791+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14792 /* { dg-final { cleanup-saved-temps } } */
14793
14794=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c'
14795--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c 2010-07-29 15:38:15 +0000
14796+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c 2010-08-20 13:27:11 +0000
14797@@ -16,5 +16,5 @@
14798 vst1_lane_s32 (arg0_int32_t, arg1_int32x2_t, 1);
14799 }
14800
14801-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14802+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14803 /* { dg-final { cleanup-saved-temps } } */
14804
14805=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c'
14806--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c 2010-07-29 15:38:15 +0000
14807+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c 2010-08-20 13:27:11 +0000
14808@@ -16,5 +16,5 @@
14809 vst1_lane_s64 (arg0_int64_t, arg1_int64x1_t, 0);
14810 }
14811
14812-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14813+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14814 /* { dg-final { cleanup-saved-temps } } */
14815
14816=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c'
14817--- old/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c 2010-07-29 15:38:15 +0000
14818+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c 2010-08-20 13:27:11 +0000
14819@@ -16,5 +16,5 @@
14820 vst1_lane_s8 (arg0_int8_t, arg1_int8x8_t, 1);
14821 }
14822
14823-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14824+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14825 /* { dg-final { cleanup-saved-temps } } */
14826
14827=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c'
14828--- old/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c 2010-07-29 15:38:15 +0000
14829+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c 2010-08-20 13:27:11 +0000
14830@@ -16,5 +16,5 @@
14831 vst1_lane_u16 (arg0_uint16_t, arg1_uint16x4_t, 1);
14832 }
14833
14834-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14835+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14836 /* { dg-final { cleanup-saved-temps } } */
14837
14838=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c'
14839--- old/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c 2010-07-29 15:38:15 +0000
14840+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c 2010-08-20 13:27:11 +0000
14841@@ -16,5 +16,5 @@
14842 vst1_lane_u32 (arg0_uint32_t, arg1_uint32x2_t, 1);
14843 }
14844
14845-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14846+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14847 /* { dg-final { cleanup-saved-temps } } */
14848
14849=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c'
14850--- old/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c 2010-07-29 15:38:15 +0000
14851+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c 2010-08-20 13:27:11 +0000
14852@@ -16,5 +16,5 @@
14853 vst1_lane_u64 (arg0_uint64_t, arg1_uint64x1_t, 0);
14854 }
14855
14856-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14857+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14858 /* { dg-final { cleanup-saved-temps } } */
14859
14860=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c'
14861--- old/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c 2010-07-29 15:38:15 +0000
14862+++ new/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c 2010-08-20 13:27:11 +0000
14863@@ -16,5 +16,5 @@
14864 vst1_lane_u8 (arg0_uint8_t, arg1_uint8x8_t, 1);
14865 }
14866
14867-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14868+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14869 /* { dg-final { cleanup-saved-temps } } */
14870
14871=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1f32.c'
14872--- old/gcc/testsuite/gcc.target/arm/neon/vst1f32.c 2010-07-29 15:38:15 +0000
14873+++ new/gcc/testsuite/gcc.target/arm/neon/vst1f32.c 2010-08-20 13:27:11 +0000
14874@@ -16,5 +16,5 @@
14875 vst1_f32 (arg0_float32_t, arg1_float32x2_t);
14876 }
14877
14878-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14879+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14880 /* { dg-final { cleanup-saved-temps } } */
14881
14882=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1p16.c'
14883--- old/gcc/testsuite/gcc.target/arm/neon/vst1p16.c 2010-07-29 15:38:15 +0000
14884+++ new/gcc/testsuite/gcc.target/arm/neon/vst1p16.c 2010-08-20 13:27:11 +0000
14885@@ -16,5 +16,5 @@
14886 vst1_p16 (arg0_poly16_t, arg1_poly16x4_t);
14887 }
14888
14889-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14890+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14891 /* { dg-final { cleanup-saved-temps } } */
14892
14893=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1p8.c'
14894--- old/gcc/testsuite/gcc.target/arm/neon/vst1p8.c 2010-07-29 15:38:15 +0000
14895+++ new/gcc/testsuite/gcc.target/arm/neon/vst1p8.c 2010-08-20 13:27:11 +0000
14896@@ -16,5 +16,5 @@
14897 vst1_p8 (arg0_poly8_t, arg1_poly8x8_t);
14898 }
14899
14900-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14901+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14902 /* { dg-final { cleanup-saved-temps } } */
14903
14904=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1s16.c'
14905--- old/gcc/testsuite/gcc.target/arm/neon/vst1s16.c 2010-07-29 15:38:15 +0000
14906+++ new/gcc/testsuite/gcc.target/arm/neon/vst1s16.c 2010-08-20 13:27:11 +0000
14907@@ -16,5 +16,5 @@
14908 vst1_s16 (arg0_int16_t, arg1_int16x4_t);
14909 }
14910
14911-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14912+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14913 /* { dg-final { cleanup-saved-temps } } */
14914
14915=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1s32.c'
14916--- old/gcc/testsuite/gcc.target/arm/neon/vst1s32.c 2010-07-29 15:38:15 +0000
14917+++ new/gcc/testsuite/gcc.target/arm/neon/vst1s32.c 2010-08-20 13:27:11 +0000
14918@@ -16,5 +16,5 @@
14919 vst1_s32 (arg0_int32_t, arg1_int32x2_t);
14920 }
14921
14922-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14923+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14924 /* { dg-final { cleanup-saved-temps } } */
14925
14926=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1s64.c'
14927--- old/gcc/testsuite/gcc.target/arm/neon/vst1s64.c 2010-07-29 15:38:15 +0000
14928+++ new/gcc/testsuite/gcc.target/arm/neon/vst1s64.c 2010-08-20 13:27:11 +0000
14929@@ -16,5 +16,5 @@
14930 vst1_s64 (arg0_int64_t, arg1_int64x1_t);
14931 }
14932
14933-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14934+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14935 /* { dg-final { cleanup-saved-temps } } */
14936
14937=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1s8.c'
14938--- old/gcc/testsuite/gcc.target/arm/neon/vst1s8.c 2010-07-29 15:38:15 +0000
14939+++ new/gcc/testsuite/gcc.target/arm/neon/vst1s8.c 2010-08-20 13:27:11 +0000
14940@@ -16,5 +16,5 @@
14941 vst1_s8 (arg0_int8_t, arg1_int8x8_t);
14942 }
14943
14944-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14945+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14946 /* { dg-final { cleanup-saved-temps } } */
14947
14948=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1u16.c'
14949--- old/gcc/testsuite/gcc.target/arm/neon/vst1u16.c 2010-07-29 15:38:15 +0000
14950+++ new/gcc/testsuite/gcc.target/arm/neon/vst1u16.c 2010-08-20 13:27:11 +0000
14951@@ -16,5 +16,5 @@
14952 vst1_u16 (arg0_uint16_t, arg1_uint16x4_t);
14953 }
14954
14955-/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14956+/* { dg-final { scan-assembler "vst1\.16\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14957 /* { dg-final { cleanup-saved-temps } } */
14958
14959=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1u32.c'
14960--- old/gcc/testsuite/gcc.target/arm/neon/vst1u32.c 2010-07-29 15:38:15 +0000
14961+++ new/gcc/testsuite/gcc.target/arm/neon/vst1u32.c 2010-08-20 13:27:11 +0000
14962@@ -16,5 +16,5 @@
14963 vst1_u32 (arg0_uint32_t, arg1_uint32x2_t);
14964 }
14965
14966-/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14967+/* { dg-final { scan-assembler "vst1\.32\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14968 /* { dg-final { cleanup-saved-temps } } */
14969
14970=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1u64.c'
14971--- old/gcc/testsuite/gcc.target/arm/neon/vst1u64.c 2010-07-29 15:38:15 +0000
14972+++ new/gcc/testsuite/gcc.target/arm/neon/vst1u64.c 2010-08-20 13:27:11 +0000
14973@@ -16,5 +16,5 @@
14974 vst1_u64 (arg0_uint64_t, arg1_uint64x1_t);
14975 }
14976
14977-/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14978+/* { dg-final { scan-assembler "vst1\.64\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14979 /* { dg-final { cleanup-saved-temps } } */
14980
14981=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst1u8.c'
14982--- old/gcc/testsuite/gcc.target/arm/neon/vst1u8.c 2010-07-29 15:38:15 +0000
14983+++ new/gcc/testsuite/gcc.target/arm/neon/vst1u8.c 2010-08-20 13:27:11 +0000
14984@@ -16,5 +16,5 @@
14985 vst1_u8 (arg0_uint8_t, arg1_uint8x8_t);
14986 }
14987
14988-/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
14989+/* { dg-final { scan-assembler "vst1\.8\[ \]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
14990 /* { dg-final { cleanup-saved-temps } } */
14991
14992=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c'
14993--- old/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c 2010-07-29 15:38:15 +0000
14994+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c 2010-08-20 13:27:11 +0000
14995@@ -16,5 +16,5 @@
14996 vst2q_lane_f32 (arg0_float32_t, arg1_float32x4x2_t, 1);
14997 }
14998
14999-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15000+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15001 /* { dg-final { cleanup-saved-temps } } */
15002
15003=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c'
15004--- old/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c 2010-07-29 15:38:15 +0000
15005+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c 2010-08-20 13:27:11 +0000
15006@@ -16,5 +16,5 @@
15007 vst2q_lane_p16 (arg0_poly16_t, arg1_poly16x8x2_t, 1);
15008 }
15009
15010-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15011+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15012 /* { dg-final { cleanup-saved-temps } } */
15013
15014=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c'
15015--- old/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c 2010-07-29 15:38:15 +0000
15016+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c 2010-08-20 13:27:11 +0000
15017@@ -16,5 +16,5 @@
15018 vst2q_lane_s16 (arg0_int16_t, arg1_int16x8x2_t, 1);
15019 }
15020
15021-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15022+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15023 /* { dg-final { cleanup-saved-temps } } */
15024
15025=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c'
15026--- old/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c 2010-07-29 15:38:15 +0000
15027+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c 2010-08-20 13:27:11 +0000
15028@@ -16,5 +16,5 @@
15029 vst2q_lane_s32 (arg0_int32_t, arg1_int32x4x2_t, 1);
15030 }
15031
15032-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15033+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15034 /* { dg-final { cleanup-saved-temps } } */
15035
15036=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c'
15037--- old/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c 2010-07-29 15:38:15 +0000
15038+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c 2010-08-20 13:27:11 +0000
15039@@ -16,5 +16,5 @@
15040 vst2q_lane_u16 (arg0_uint16_t, arg1_uint16x8x2_t, 1);
15041 }
15042
15043-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15044+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15045 /* { dg-final { cleanup-saved-temps } } */
15046
15047=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c'
15048--- old/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c 2010-07-29 15:38:15 +0000
15049+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c 2010-08-20 13:27:11 +0000
15050@@ -16,5 +16,5 @@
15051 vst2q_lane_u32 (arg0_uint32_t, arg1_uint32x4x2_t, 1);
15052 }
15053
15054-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15055+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15056 /* { dg-final { cleanup-saved-temps } } */
15057
15058=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c'
15059--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c 2010-07-29 15:38:15 +0000
15060+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c 2010-08-20 13:27:11 +0000
15061@@ -16,6 +16,6 @@
15062 vst2q_f32 (arg0_float32_t, arg1_float32x4x2_t);
15063 }
15064
15065-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15066-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15067+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15068+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15069 /* { dg-final { cleanup-saved-temps } } */
15070
15071=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c'
15072--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c 2010-07-29 15:38:15 +0000
15073+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c 2010-08-20 13:27:11 +0000
15074@@ -16,6 +16,6 @@
15075 vst2q_p16 (arg0_poly16_t, arg1_poly16x8x2_t);
15076 }
15077
15078-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15079-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15080+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15081+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15082 /* { dg-final { cleanup-saved-temps } } */
15083
15084=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c'
15085--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c 2010-07-29 15:38:15 +0000
15086+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c 2010-08-20 13:27:11 +0000
15087@@ -16,6 +16,6 @@
15088 vst2q_p8 (arg0_poly8_t, arg1_poly8x16x2_t);
15089 }
15090
15091-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15092-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15093+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15094+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15095 /* { dg-final { cleanup-saved-temps } } */
15096
15097=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c'
15098--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c 2010-07-29 15:38:15 +0000
15099+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c 2010-08-20 13:27:11 +0000
15100@@ -16,6 +16,6 @@
15101 vst2q_s16 (arg0_int16_t, arg1_int16x8x2_t);
15102 }
15103
15104-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15105-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15106+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15107+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15108 /* { dg-final { cleanup-saved-temps } } */
15109
15110=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c'
15111--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c 2010-07-29 15:38:15 +0000
15112+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c 2010-08-20 13:27:11 +0000
15113@@ -16,6 +16,6 @@
15114 vst2q_s32 (arg0_int32_t, arg1_int32x4x2_t);
15115 }
15116
15117-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15118-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15119+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15120+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15121 /* { dg-final { cleanup-saved-temps } } */
15122
15123=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c'
15124--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c 2010-07-29 15:38:15 +0000
15125+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c 2010-08-20 13:27:11 +0000
15126@@ -16,6 +16,6 @@
15127 vst2q_s8 (arg0_int8_t, arg1_int8x16x2_t);
15128 }
15129
15130-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15131-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15132+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15133+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15134 /* { dg-final { cleanup-saved-temps } } */
15135
15136=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c'
15137--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c 2010-07-29 15:38:15 +0000
15138+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c 2010-08-20 13:27:11 +0000
15139@@ -16,6 +16,6 @@
15140 vst2q_u16 (arg0_uint16_t, arg1_uint16x8x2_t);
15141 }
15142
15143-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15144-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15145+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15146+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15147 /* { dg-final { cleanup-saved-temps } } */
15148
15149=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c'
15150--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c 2010-07-29 15:38:15 +0000
15151+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c 2010-08-20 13:27:11 +0000
15152@@ -16,6 +16,6 @@
15153 vst2q_u32 (arg0_uint32_t, arg1_uint32x4x2_t);
15154 }
15155
15156-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15157-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15158+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15159+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15160 /* { dg-final { cleanup-saved-temps } } */
15161
15162=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c'
15163--- old/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c 2010-07-29 15:38:15 +0000
15164+++ new/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c 2010-08-20 13:27:11 +0000
15165@@ -16,6 +16,6 @@
15166 vst2q_u8 (arg0_uint8_t, arg1_uint8x16x2_t);
15167 }
15168
15169-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15170-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15171+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15172+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15173 /* { dg-final { cleanup-saved-temps } } */
15174
15175=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c'
15176--- old/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c 2010-07-29 15:38:15 +0000
15177+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c 2010-08-20 13:27:11 +0000
15178@@ -16,5 +16,5 @@
15179 vst2_lane_f32 (arg0_float32_t, arg1_float32x2x2_t, 1);
15180 }
15181
15182-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15183+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15184 /* { dg-final { cleanup-saved-temps } } */
15185
15186=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c'
15187--- old/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c 2010-07-29 15:38:15 +0000
15188+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c 2010-08-20 13:27:11 +0000
15189@@ -16,5 +16,5 @@
15190 vst2_lane_p16 (arg0_poly16_t, arg1_poly16x4x2_t, 1);
15191 }
15192
15193-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15194+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15195 /* { dg-final { cleanup-saved-temps } } */
15196
15197=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c'
15198--- old/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c 2010-07-29 15:38:15 +0000
15199+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c 2010-08-20 13:27:11 +0000
15200@@ -16,5 +16,5 @@
15201 vst2_lane_p8 (arg0_poly8_t, arg1_poly8x8x2_t, 1);
15202 }
15203
15204-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15205+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15206 /* { dg-final { cleanup-saved-temps } } */
15207
15208=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c'
15209--- old/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c 2010-07-29 15:38:15 +0000
15210+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c 2010-08-20 13:27:11 +0000
15211@@ -16,5 +16,5 @@
15212 vst2_lane_s16 (arg0_int16_t, arg1_int16x4x2_t, 1);
15213 }
15214
15215-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15216+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15217 /* { dg-final { cleanup-saved-temps } } */
15218
15219=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c'
15220--- old/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c 2010-07-29 15:38:15 +0000
15221+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c 2010-08-20 13:27:11 +0000
15222@@ -16,5 +16,5 @@
15223 vst2_lane_s32 (arg0_int32_t, arg1_int32x2x2_t, 1);
15224 }
15225
15226-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15227+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15228 /* { dg-final { cleanup-saved-temps } } */
15229
15230=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c'
15231--- old/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c 2010-07-29 15:38:15 +0000
15232+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c 2010-08-20 13:27:11 +0000
15233@@ -16,5 +16,5 @@
15234 vst2_lane_s8 (arg0_int8_t, arg1_int8x8x2_t, 1);
15235 }
15236
15237-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15238+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15239 /* { dg-final { cleanup-saved-temps } } */
15240
15241=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c'
15242--- old/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c 2010-07-29 15:38:15 +0000
15243+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c 2010-08-20 13:27:11 +0000
15244@@ -16,5 +16,5 @@
15245 vst2_lane_u16 (arg0_uint16_t, arg1_uint16x4x2_t, 1);
15246 }
15247
15248-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15249+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15250 /* { dg-final { cleanup-saved-temps } } */
15251
15252=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c'
15253--- old/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c 2010-07-29 15:38:15 +0000
15254+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c 2010-08-20 13:27:11 +0000
15255@@ -16,5 +16,5 @@
15256 vst2_lane_u32 (arg0_uint32_t, arg1_uint32x2x2_t, 1);
15257 }
15258
15259-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15260+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15261 /* { dg-final { cleanup-saved-temps } } */
15262
15263=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c'
15264--- old/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c 2010-07-29 15:38:15 +0000
15265+++ new/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c 2010-08-20 13:27:11 +0000
15266@@ -16,5 +16,5 @@
15267 vst2_lane_u8 (arg0_uint8_t, arg1_uint8x8x2_t, 1);
15268 }
15269
15270-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15271+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15272 /* { dg-final { cleanup-saved-temps } } */
15273
15274=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2f32.c'
15275--- old/gcc/testsuite/gcc.target/arm/neon/vst2f32.c 2010-07-29 15:38:15 +0000
15276+++ new/gcc/testsuite/gcc.target/arm/neon/vst2f32.c 2010-08-20 13:27:11 +0000
15277@@ -16,5 +16,5 @@
15278 vst2_f32 (arg0_float32_t, arg1_float32x2x2_t);
15279 }
15280
15281-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15282+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15283 /* { dg-final { cleanup-saved-temps } } */
15284
15285=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2p16.c'
15286--- old/gcc/testsuite/gcc.target/arm/neon/vst2p16.c 2010-07-29 15:38:15 +0000
15287+++ new/gcc/testsuite/gcc.target/arm/neon/vst2p16.c 2010-08-20 13:27:11 +0000
15288@@ -16,5 +16,5 @@
15289 vst2_p16 (arg0_poly16_t, arg1_poly16x4x2_t);
15290 }
15291
15292-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15293+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15294 /* { dg-final { cleanup-saved-temps } } */
15295
15296=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2p8.c'
15297--- old/gcc/testsuite/gcc.target/arm/neon/vst2p8.c 2010-07-29 15:38:15 +0000
15298+++ new/gcc/testsuite/gcc.target/arm/neon/vst2p8.c 2010-08-20 13:27:11 +0000
15299@@ -16,5 +16,5 @@
15300 vst2_p8 (arg0_poly8_t, arg1_poly8x8x2_t);
15301 }
15302
15303-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15304+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15305 /* { dg-final { cleanup-saved-temps } } */
15306
15307=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2s16.c'
15308--- old/gcc/testsuite/gcc.target/arm/neon/vst2s16.c 2010-07-29 15:38:15 +0000
15309+++ new/gcc/testsuite/gcc.target/arm/neon/vst2s16.c 2010-08-20 13:27:11 +0000
15310@@ -16,5 +16,5 @@
15311 vst2_s16 (arg0_int16_t, arg1_int16x4x2_t);
15312 }
15313
15314-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15315+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15316 /* { dg-final { cleanup-saved-temps } } */
15317
15318=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2s32.c'
15319--- old/gcc/testsuite/gcc.target/arm/neon/vst2s32.c 2010-07-29 15:38:15 +0000
15320+++ new/gcc/testsuite/gcc.target/arm/neon/vst2s32.c 2010-08-20 13:27:11 +0000
15321@@ -16,5 +16,5 @@
15322 vst2_s32 (arg0_int32_t, arg1_int32x2x2_t);
15323 }
15324
15325-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15326+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15327 /* { dg-final { cleanup-saved-temps } } */
15328
15329=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2s64.c'
15330--- old/gcc/testsuite/gcc.target/arm/neon/vst2s64.c 2010-07-29 15:38:15 +0000
15331+++ new/gcc/testsuite/gcc.target/arm/neon/vst2s64.c 2010-08-20 13:27:11 +0000
15332@@ -16,5 +16,5 @@
15333 vst2_s64 (arg0_int64_t, arg1_int64x1x2_t);
15334 }
15335
15336-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15337+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15338 /* { dg-final { cleanup-saved-temps } } */
15339
15340=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2s8.c'
15341--- old/gcc/testsuite/gcc.target/arm/neon/vst2s8.c 2010-07-29 15:38:15 +0000
15342+++ new/gcc/testsuite/gcc.target/arm/neon/vst2s8.c 2010-08-20 13:27:11 +0000
15343@@ -16,5 +16,5 @@
15344 vst2_s8 (arg0_int8_t, arg1_int8x8x2_t);
15345 }
15346
15347-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15348+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15349 /* { dg-final { cleanup-saved-temps } } */
15350
15351=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2u16.c'
15352--- old/gcc/testsuite/gcc.target/arm/neon/vst2u16.c 2010-07-29 15:38:15 +0000
15353+++ new/gcc/testsuite/gcc.target/arm/neon/vst2u16.c 2010-08-20 13:27:11 +0000
15354@@ -16,5 +16,5 @@
15355 vst2_u16 (arg0_uint16_t, arg1_uint16x4x2_t);
15356 }
15357
15358-/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15359+/* { dg-final { scan-assembler "vst2\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15360 /* { dg-final { cleanup-saved-temps } } */
15361
15362=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2u32.c'
15363--- old/gcc/testsuite/gcc.target/arm/neon/vst2u32.c 2010-07-29 15:38:15 +0000
15364+++ new/gcc/testsuite/gcc.target/arm/neon/vst2u32.c 2010-08-20 13:27:11 +0000
15365@@ -16,5 +16,5 @@
15366 vst2_u32 (arg0_uint32_t, arg1_uint32x2x2_t);
15367 }
15368
15369-/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15370+/* { dg-final { scan-assembler "vst2\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15371 /* { dg-final { cleanup-saved-temps } } */
15372
15373=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2u64.c'
15374--- old/gcc/testsuite/gcc.target/arm/neon/vst2u64.c 2010-07-29 15:38:15 +0000
15375+++ new/gcc/testsuite/gcc.target/arm/neon/vst2u64.c 2010-08-20 13:27:11 +0000
15376@@ -16,5 +16,5 @@
15377 vst2_u64 (arg0_uint64_t, arg1_uint64x1x2_t);
15378 }
15379
15380-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15381+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15382 /* { dg-final { cleanup-saved-temps } } */
15383
15384=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst2u8.c'
15385--- old/gcc/testsuite/gcc.target/arm/neon/vst2u8.c 2010-07-29 15:38:15 +0000
15386+++ new/gcc/testsuite/gcc.target/arm/neon/vst2u8.c 2010-08-20 13:27:11 +0000
15387@@ -16,5 +16,5 @@
15388 vst2_u8 (arg0_uint8_t, arg1_uint8x8x2_t);
15389 }
15390
15391-/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15392+/* { dg-final { scan-assembler "vst2\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15393 /* { dg-final { cleanup-saved-temps } } */
15394
15395=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c'
15396--- old/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c 2010-07-29 15:38:15 +0000
15397+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c 2010-08-20 13:27:11 +0000
15398@@ -16,5 +16,5 @@
15399 vst3q_lane_f32 (arg0_float32_t, arg1_float32x4x3_t, 1);
15400 }
15401
15402-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15403+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15404 /* { dg-final { cleanup-saved-temps } } */
15405
15406=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c'
15407--- old/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c 2010-07-29 15:38:15 +0000
15408+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c 2010-08-20 13:27:11 +0000
15409@@ -16,5 +16,5 @@
15410 vst3q_lane_p16 (arg0_poly16_t, arg1_poly16x8x3_t, 1);
15411 }
15412
15413-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15414+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15415 /* { dg-final { cleanup-saved-temps } } */
15416
15417=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c'
15418--- old/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c 2010-07-29 15:38:15 +0000
15419+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c 2010-08-20 13:27:11 +0000
15420@@ -16,5 +16,5 @@
15421 vst3q_lane_s16 (arg0_int16_t, arg1_int16x8x3_t, 1);
15422 }
15423
15424-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15425+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15426 /* { dg-final { cleanup-saved-temps } } */
15427
15428=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c'
15429--- old/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c 2010-07-29 15:38:15 +0000
15430+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c 2010-08-20 13:27:11 +0000
15431@@ -16,5 +16,5 @@
15432 vst3q_lane_s32 (arg0_int32_t, arg1_int32x4x3_t, 1);
15433 }
15434
15435-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15436+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15437 /* { dg-final { cleanup-saved-temps } } */
15438
15439=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c'
15440--- old/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c 2010-07-29 15:38:15 +0000
15441+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c 2010-08-20 13:27:11 +0000
15442@@ -16,5 +16,5 @@
15443 vst3q_lane_u16 (arg0_uint16_t, arg1_uint16x8x3_t, 1);
15444 }
15445
15446-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15447+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15448 /* { dg-final { cleanup-saved-temps } } */
15449
15450=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c'
15451--- old/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c 2010-07-29 15:38:15 +0000
15452+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c 2010-08-20 13:27:11 +0000
15453@@ -16,5 +16,5 @@
15454 vst3q_lane_u32 (arg0_uint32_t, arg1_uint32x4x3_t, 1);
15455 }
15456
15457-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15458+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15459 /* { dg-final { cleanup-saved-temps } } */
15460
15461=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c'
15462--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c 2010-07-29 15:38:15 +0000
15463+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c 2010-08-20 13:27:11 +0000
15464@@ -16,6 +16,6 @@
15465 vst3q_f32 (arg0_float32_t, arg1_float32x4x3_t);
15466 }
15467
15468-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15469-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15470+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15471+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15472 /* { dg-final { cleanup-saved-temps } } */
15473
15474=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c'
15475--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c 2010-07-29 15:38:15 +0000
15476+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c 2010-08-20 13:27:11 +0000
15477@@ -16,6 +16,6 @@
15478 vst3q_p16 (arg0_poly16_t, arg1_poly16x8x3_t);
15479 }
15480
15481-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15482-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15483+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15484+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15485 /* { dg-final { cleanup-saved-temps } } */
15486
15487=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c'
15488--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c 2010-07-29 15:38:15 +0000
15489+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c 2010-08-20 13:27:11 +0000
15490@@ -16,6 +16,6 @@
15491 vst3q_p8 (arg0_poly8_t, arg1_poly8x16x3_t);
15492 }
15493
15494-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15495-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15496+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15497+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15498 /* { dg-final { cleanup-saved-temps } } */
15499
15500=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c'
15501--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c 2010-07-29 15:38:15 +0000
15502+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c 2010-08-20 13:27:11 +0000
15503@@ -16,6 +16,6 @@
15504 vst3q_s16 (arg0_int16_t, arg1_int16x8x3_t);
15505 }
15506
15507-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15508-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15509+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15510+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15511 /* { dg-final { cleanup-saved-temps } } */
15512
15513=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c'
15514--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c 2010-07-29 15:38:15 +0000
15515+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c 2010-08-20 13:27:11 +0000
15516@@ -16,6 +16,6 @@
15517 vst3q_s32 (arg0_int32_t, arg1_int32x4x3_t);
15518 }
15519
15520-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15521-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15522+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15523+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15524 /* { dg-final { cleanup-saved-temps } } */
15525
15526=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c'
15527--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c 2010-07-29 15:38:15 +0000
15528+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c 2010-08-20 13:27:11 +0000
15529@@ -16,6 +16,6 @@
15530 vst3q_s8 (arg0_int8_t, arg1_int8x16x3_t);
15531 }
15532
15533-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15534-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15535+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15536+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15537 /* { dg-final { cleanup-saved-temps } } */
15538
15539=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c'
15540--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c 2010-07-29 15:38:15 +0000
15541+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c 2010-08-20 13:27:11 +0000
15542@@ -16,6 +16,6 @@
15543 vst3q_u16 (arg0_uint16_t, arg1_uint16x8x3_t);
15544 }
15545
15546-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15547-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15548+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15549+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15550 /* { dg-final { cleanup-saved-temps } } */
15551
15552=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c'
15553--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c 2010-07-29 15:38:15 +0000
15554+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c 2010-08-20 13:27:11 +0000
15555@@ -16,6 +16,6 @@
15556 vst3q_u32 (arg0_uint32_t, arg1_uint32x4x3_t);
15557 }
15558
15559-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15560-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15561+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15562+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15563 /* { dg-final { cleanup-saved-temps } } */
15564
15565=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c'
15566--- old/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c 2010-07-29 15:38:15 +0000
15567+++ new/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c 2010-08-20 13:27:11 +0000
15568@@ -16,6 +16,6 @@
15569 vst3q_u8 (arg0_uint8_t, arg1_uint8x16x3_t);
15570 }
15571
15572-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15573-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15574+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15575+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15576 /* { dg-final { cleanup-saved-temps } } */
15577
15578=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c'
15579--- old/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c 2010-07-29 15:38:15 +0000
15580+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c 2010-08-20 13:27:11 +0000
15581@@ -16,5 +16,5 @@
15582 vst3_lane_f32 (arg0_float32_t, arg1_float32x2x3_t, 1);
15583 }
15584
15585-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15586+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15587 /* { dg-final { cleanup-saved-temps } } */
15588
15589=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c'
15590--- old/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c 2010-07-29 15:38:15 +0000
15591+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c 2010-08-20 13:27:11 +0000
15592@@ -16,5 +16,5 @@
15593 vst3_lane_p16 (arg0_poly16_t, arg1_poly16x4x3_t, 1);
15594 }
15595
15596-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15597+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15598 /* { dg-final { cleanup-saved-temps } } */
15599
15600=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c'
15601--- old/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c 2010-07-29 15:38:15 +0000
15602+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c 2010-08-20 13:27:11 +0000
15603@@ -16,5 +16,5 @@
15604 vst3_lane_p8 (arg0_poly8_t, arg1_poly8x8x3_t, 1);
15605 }
15606
15607-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15608+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15609 /* { dg-final { cleanup-saved-temps } } */
15610
15611=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c'
15612--- old/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c 2010-07-29 15:38:15 +0000
15613+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c 2010-08-20 13:27:11 +0000
15614@@ -16,5 +16,5 @@
15615 vst3_lane_s16 (arg0_int16_t, arg1_int16x4x3_t, 1);
15616 }
15617
15618-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15619+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15620 /* { dg-final { cleanup-saved-temps } } */
15621
15622=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c'
15623--- old/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c 2010-07-29 15:38:15 +0000
15624+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c 2010-08-20 13:27:11 +0000
15625@@ -16,5 +16,5 @@
15626 vst3_lane_s32 (arg0_int32_t, arg1_int32x2x3_t, 1);
15627 }
15628
15629-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15630+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15631 /* { dg-final { cleanup-saved-temps } } */
15632
15633=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c'
15634--- old/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c 2010-07-29 15:38:15 +0000
15635+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c 2010-08-20 13:27:11 +0000
15636@@ -16,5 +16,5 @@
15637 vst3_lane_s8 (arg0_int8_t, arg1_int8x8x3_t, 1);
15638 }
15639
15640-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15641+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15642 /* { dg-final { cleanup-saved-temps } } */
15643
15644=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c'
15645--- old/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c 2010-07-29 15:38:15 +0000
15646+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c 2010-08-20 13:27:11 +0000
15647@@ -16,5 +16,5 @@
15648 vst3_lane_u16 (arg0_uint16_t, arg1_uint16x4x3_t, 1);
15649 }
15650
15651-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15652+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15653 /* { dg-final { cleanup-saved-temps } } */
15654
15655=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c'
15656--- old/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c 2010-07-29 15:38:15 +0000
15657+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c 2010-08-20 13:27:11 +0000
15658@@ -16,5 +16,5 @@
15659 vst3_lane_u32 (arg0_uint32_t, arg1_uint32x2x3_t, 1);
15660 }
15661
15662-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15663+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15664 /* { dg-final { cleanup-saved-temps } } */
15665
15666=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c'
15667--- old/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c 2010-07-29 15:38:15 +0000
15668+++ new/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c 2010-08-20 13:27:11 +0000
15669@@ -16,5 +16,5 @@
15670 vst3_lane_u8 (arg0_uint8_t, arg1_uint8x8x3_t, 1);
15671 }
15672
15673-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15674+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15675 /* { dg-final { cleanup-saved-temps } } */
15676
15677=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3f32.c'
15678--- old/gcc/testsuite/gcc.target/arm/neon/vst3f32.c 2010-07-29 15:38:15 +0000
15679+++ new/gcc/testsuite/gcc.target/arm/neon/vst3f32.c 2010-08-20 13:27:11 +0000
15680@@ -16,5 +16,5 @@
15681 vst3_f32 (arg0_float32_t, arg1_float32x2x3_t);
15682 }
15683
15684-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15685+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15686 /* { dg-final { cleanup-saved-temps } } */
15687
15688=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3p16.c'
15689--- old/gcc/testsuite/gcc.target/arm/neon/vst3p16.c 2010-07-29 15:38:15 +0000
15690+++ new/gcc/testsuite/gcc.target/arm/neon/vst3p16.c 2010-08-20 13:27:11 +0000
15691@@ -16,5 +16,5 @@
15692 vst3_p16 (arg0_poly16_t, arg1_poly16x4x3_t);
15693 }
15694
15695-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15696+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15697 /* { dg-final { cleanup-saved-temps } } */
15698
15699=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3p8.c'
15700--- old/gcc/testsuite/gcc.target/arm/neon/vst3p8.c 2010-07-29 15:38:15 +0000
15701+++ new/gcc/testsuite/gcc.target/arm/neon/vst3p8.c 2010-08-20 13:27:11 +0000
15702@@ -16,5 +16,5 @@
15703 vst3_p8 (arg0_poly8_t, arg1_poly8x8x3_t);
15704 }
15705
15706-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15707+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15708 /* { dg-final { cleanup-saved-temps } } */
15709
15710=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3s16.c'
15711--- old/gcc/testsuite/gcc.target/arm/neon/vst3s16.c 2010-07-29 15:38:15 +0000
15712+++ new/gcc/testsuite/gcc.target/arm/neon/vst3s16.c 2010-08-20 13:27:11 +0000
15713@@ -16,5 +16,5 @@
15714 vst3_s16 (arg0_int16_t, arg1_int16x4x3_t);
15715 }
15716
15717-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15718+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15719 /* { dg-final { cleanup-saved-temps } } */
15720
15721=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3s32.c'
15722--- old/gcc/testsuite/gcc.target/arm/neon/vst3s32.c 2010-07-29 15:38:15 +0000
15723+++ new/gcc/testsuite/gcc.target/arm/neon/vst3s32.c 2010-08-20 13:27:11 +0000
15724@@ -16,5 +16,5 @@
15725 vst3_s32 (arg0_int32_t, arg1_int32x2x3_t);
15726 }
15727
15728-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15729+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15730 /* { dg-final { cleanup-saved-temps } } */
15731
15732=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3s64.c'
15733--- old/gcc/testsuite/gcc.target/arm/neon/vst3s64.c 2010-07-29 15:38:15 +0000
15734+++ new/gcc/testsuite/gcc.target/arm/neon/vst3s64.c 2010-08-20 13:27:11 +0000
15735@@ -16,5 +16,5 @@
15736 vst3_s64 (arg0_int64_t, arg1_int64x1x3_t);
15737 }
15738
15739-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15740+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15741 /* { dg-final { cleanup-saved-temps } } */
15742
15743=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3s8.c'
15744--- old/gcc/testsuite/gcc.target/arm/neon/vst3s8.c 2010-07-29 15:38:15 +0000
15745+++ new/gcc/testsuite/gcc.target/arm/neon/vst3s8.c 2010-08-20 13:27:11 +0000
15746@@ -16,5 +16,5 @@
15747 vst3_s8 (arg0_int8_t, arg1_int8x8x3_t);
15748 }
15749
15750-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15751+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15752 /* { dg-final { cleanup-saved-temps } } */
15753
15754=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3u16.c'
15755--- old/gcc/testsuite/gcc.target/arm/neon/vst3u16.c 2010-07-29 15:38:15 +0000
15756+++ new/gcc/testsuite/gcc.target/arm/neon/vst3u16.c 2010-08-20 13:27:11 +0000
15757@@ -16,5 +16,5 @@
15758 vst3_u16 (arg0_uint16_t, arg1_uint16x4x3_t);
15759 }
15760
15761-/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15762+/* { dg-final { scan-assembler "vst3\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15763 /* { dg-final { cleanup-saved-temps } } */
15764
15765=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3u32.c'
15766--- old/gcc/testsuite/gcc.target/arm/neon/vst3u32.c 2010-07-29 15:38:15 +0000
15767+++ new/gcc/testsuite/gcc.target/arm/neon/vst3u32.c 2010-08-20 13:27:11 +0000
15768@@ -16,5 +16,5 @@
15769 vst3_u32 (arg0_uint32_t, arg1_uint32x2x3_t);
15770 }
15771
15772-/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15773+/* { dg-final { scan-assembler "vst3\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15774 /* { dg-final { cleanup-saved-temps } } */
15775
15776=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3u64.c'
15777--- old/gcc/testsuite/gcc.target/arm/neon/vst3u64.c 2010-07-29 15:38:15 +0000
15778+++ new/gcc/testsuite/gcc.target/arm/neon/vst3u64.c 2010-08-20 13:27:11 +0000
15779@@ -16,5 +16,5 @@
15780 vst3_u64 (arg0_uint64_t, arg1_uint64x1x3_t);
15781 }
15782
15783-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15784+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15785 /* { dg-final { cleanup-saved-temps } } */
15786
15787=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst3u8.c'
15788--- old/gcc/testsuite/gcc.target/arm/neon/vst3u8.c 2010-07-29 15:38:15 +0000
15789+++ new/gcc/testsuite/gcc.target/arm/neon/vst3u8.c 2010-08-20 13:27:11 +0000
15790@@ -16,5 +16,5 @@
15791 vst3_u8 (arg0_uint8_t, arg1_uint8x8x3_t);
15792 }
15793
15794-/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15795+/* { dg-final { scan-assembler "vst3\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15796 /* { dg-final { cleanup-saved-temps } } */
15797
15798=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c'
15799--- old/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c 2010-07-29 15:38:15 +0000
15800+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c 2010-08-20 13:27:11 +0000
15801@@ -16,5 +16,5 @@
15802 vst4q_lane_f32 (arg0_float32_t, arg1_float32x4x4_t, 1);
15803 }
15804
15805-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15806+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15807 /* { dg-final { cleanup-saved-temps } } */
15808
15809=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c'
15810--- old/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c 2010-07-29 15:38:15 +0000
15811+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c 2010-08-20 13:27:11 +0000
15812@@ -16,5 +16,5 @@
15813 vst4q_lane_p16 (arg0_poly16_t, arg1_poly16x8x4_t, 1);
15814 }
15815
15816-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15817+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15818 /* { dg-final { cleanup-saved-temps } } */
15819
15820=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c'
15821--- old/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c 2010-07-29 15:38:15 +0000
15822+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c 2010-08-20 13:27:11 +0000
15823@@ -16,5 +16,5 @@
15824 vst4q_lane_s16 (arg0_int16_t, arg1_int16x8x4_t, 1);
15825 }
15826
15827-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15828+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15829 /* { dg-final { cleanup-saved-temps } } */
15830
15831=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c'
15832--- old/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c 2010-07-29 15:38:15 +0000
15833+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c 2010-08-20 13:27:11 +0000
15834@@ -16,5 +16,5 @@
15835 vst4q_lane_s32 (arg0_int32_t, arg1_int32x4x4_t, 1);
15836 }
15837
15838-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15839+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15840 /* { dg-final { cleanup-saved-temps } } */
15841
15842=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c'
15843--- old/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c 2010-07-29 15:38:15 +0000
15844+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c 2010-08-20 13:27:11 +0000
15845@@ -16,5 +16,5 @@
15846 vst4q_lane_u16 (arg0_uint16_t, arg1_uint16x8x4_t, 1);
15847 }
15848
15849-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15850+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15851 /* { dg-final { cleanup-saved-temps } } */
15852
15853=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c'
15854--- old/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c 2010-07-29 15:38:15 +0000
15855+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c 2010-08-20 13:27:11 +0000
15856@@ -16,5 +16,5 @@
15857 vst4q_lane_u32 (arg0_uint32_t, arg1_uint32x4x4_t, 1);
15858 }
15859
15860-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15861+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15862 /* { dg-final { cleanup-saved-temps } } */
15863
15864=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c'
15865--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c 2010-07-29 15:38:15 +0000
15866+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c 2010-08-20 13:27:11 +0000
15867@@ -16,6 +16,6 @@
15868 vst4q_f32 (arg0_float32_t, arg1_float32x4x4_t);
15869 }
15870
15871-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15872-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15873+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15874+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15875 /* { dg-final { cleanup-saved-temps } } */
15876
15877=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c'
15878--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c 2010-07-29 15:38:15 +0000
15879+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c 2010-08-20 13:27:11 +0000
15880@@ -16,6 +16,6 @@
15881 vst4q_p16 (arg0_poly16_t, arg1_poly16x8x4_t);
15882 }
15883
15884-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15885-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15886+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15887+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15888 /* { dg-final { cleanup-saved-temps } } */
15889
15890=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c'
15891--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c 2010-07-29 15:38:15 +0000
15892+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c 2010-08-20 13:27:11 +0000
15893@@ -16,6 +16,6 @@
15894 vst4q_p8 (arg0_poly8_t, arg1_poly8x16x4_t);
15895 }
15896
15897-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15898-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15899+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15900+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15901 /* { dg-final { cleanup-saved-temps } } */
15902
15903=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c'
15904--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c 2010-07-29 15:38:15 +0000
15905+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c 2010-08-20 13:27:11 +0000
15906@@ -16,6 +16,6 @@
15907 vst4q_s16 (arg0_int16_t, arg1_int16x8x4_t);
15908 }
15909
15910-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15911-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15912+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15913+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15914 /* { dg-final { cleanup-saved-temps } } */
15915
15916=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c'
15917--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c 2010-07-29 15:38:15 +0000
15918+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c 2010-08-20 13:27:11 +0000
15919@@ -16,6 +16,6 @@
15920 vst4q_s32 (arg0_int32_t, arg1_int32x4x4_t);
15921 }
15922
15923-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15924-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15925+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15926+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15927 /* { dg-final { cleanup-saved-temps } } */
15928
15929=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c'
15930--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c 2010-07-29 15:38:15 +0000
15931+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c 2010-08-20 13:27:11 +0000
15932@@ -16,6 +16,6 @@
15933 vst4q_s8 (arg0_int8_t, arg1_int8x16x4_t);
15934 }
15935
15936-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15937-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15938+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15939+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15940 /* { dg-final { cleanup-saved-temps } } */
15941
15942=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c'
15943--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c 2010-07-29 15:38:15 +0000
15944+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c 2010-08-20 13:27:11 +0000
15945@@ -16,6 +16,6 @@
15946 vst4q_u16 (arg0_uint16_t, arg1_uint16x8x4_t);
15947 }
15948
15949-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15950-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15951+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15952+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15953 /* { dg-final { cleanup-saved-temps } } */
15954
15955=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c'
15956--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c 2010-07-29 15:38:15 +0000
15957+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c 2010-08-20 13:27:11 +0000
15958@@ -16,6 +16,6 @@
15959 vst4q_u32 (arg0_uint32_t, arg1_uint32x4x4_t);
15960 }
15961
15962-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15963-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15964+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15965+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15966 /* { dg-final { cleanup-saved-temps } } */
15967
15968=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c'
15969--- old/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c 2010-07-29 15:38:15 +0000
15970+++ new/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c 2010-08-20 13:27:11 +0000
15971@@ -16,6 +16,6 @@
15972 vst4q_u8 (arg0_uint8_t, arg1_uint8x16x4_t);
15973 }
15974
15975-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15976-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15977+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15978+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15979 /* { dg-final { cleanup-saved-temps } } */
15980
15981=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c'
15982--- old/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c 2010-07-29 15:38:15 +0000
15983+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c 2010-08-20 13:27:11 +0000
15984@@ -16,5 +16,5 @@
15985 vst4_lane_f32 (arg0_float32_t, arg1_float32x2x4_t, 1);
15986 }
15987
15988-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
15989+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
15990 /* { dg-final { cleanup-saved-temps } } */
15991
15992=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c'
15993--- old/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c 2010-07-29 15:38:15 +0000
15994+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c 2010-08-20 13:27:11 +0000
15995@@ -16,5 +16,5 @@
15996 vst4_lane_p16 (arg0_poly16_t, arg1_poly16x4x4_t, 1);
15997 }
15998
15999-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16000+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16001 /* { dg-final { cleanup-saved-temps } } */
16002
16003=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c'
16004--- old/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c 2010-07-29 15:38:15 +0000
16005+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c 2010-08-20 13:27:11 +0000
16006@@ -16,5 +16,5 @@
16007 vst4_lane_p8 (arg0_poly8_t, arg1_poly8x8x4_t, 1);
16008 }
16009
16010-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16011+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16012 /* { dg-final { cleanup-saved-temps } } */
16013
16014=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c'
16015--- old/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c 2010-07-29 15:38:15 +0000
16016+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c 2010-08-20 13:27:11 +0000
16017@@ -16,5 +16,5 @@
16018 vst4_lane_s16 (arg0_int16_t, arg1_int16x4x4_t, 1);
16019 }
16020
16021-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16022+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16023 /* { dg-final { cleanup-saved-temps } } */
16024
16025=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c'
16026--- old/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c 2010-07-29 15:38:15 +0000
16027+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c 2010-08-20 13:27:11 +0000
16028@@ -16,5 +16,5 @@
16029 vst4_lane_s32 (arg0_int32_t, arg1_int32x2x4_t, 1);
16030 }
16031
16032-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16033+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16034 /* { dg-final { cleanup-saved-temps } } */
16035
16036=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c'
16037--- old/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c 2010-07-29 15:38:15 +0000
16038+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c 2010-08-20 13:27:11 +0000
16039@@ -16,5 +16,5 @@
16040 vst4_lane_s8 (arg0_int8_t, arg1_int8x8x4_t, 1);
16041 }
16042
16043-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16044+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16045 /* { dg-final { cleanup-saved-temps } } */
16046
16047=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c'
16048--- old/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c 2010-07-29 15:38:15 +0000
16049+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c 2010-08-20 13:27:11 +0000
16050@@ -16,5 +16,5 @@
16051 vst4_lane_u16 (arg0_uint16_t, arg1_uint16x4x4_t, 1);
16052 }
16053
16054-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16055+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16056 /* { dg-final { cleanup-saved-temps } } */
16057
16058=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c'
16059--- old/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c 2010-07-29 15:38:15 +0000
16060+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c 2010-08-20 13:27:11 +0000
16061@@ -16,5 +16,5 @@
16062 vst4_lane_u32 (arg0_uint32_t, arg1_uint32x2x4_t, 1);
16063 }
16064
16065-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16066+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16067 /* { dg-final { cleanup-saved-temps } } */
16068
16069=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c'
16070--- old/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c 2010-07-29 15:38:15 +0000
16071+++ new/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c 2010-08-20 13:27:11 +0000
16072@@ -16,5 +16,5 @@
16073 vst4_lane_u8 (arg0_uint8_t, arg1_uint8x8x4_t, 1);
16074 }
16075
16076-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16077+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16078 /* { dg-final { cleanup-saved-temps } } */
16079
16080=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4f32.c'
16081--- old/gcc/testsuite/gcc.target/arm/neon/vst4f32.c 2010-07-29 15:38:15 +0000
16082+++ new/gcc/testsuite/gcc.target/arm/neon/vst4f32.c 2010-08-20 13:27:11 +0000
16083@@ -16,5 +16,5 @@
16084 vst4_f32 (arg0_float32_t, arg1_float32x2x4_t);
16085 }
16086
16087-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16088+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16089 /* { dg-final { cleanup-saved-temps } } */
16090
16091=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4p16.c'
16092--- old/gcc/testsuite/gcc.target/arm/neon/vst4p16.c 2010-07-29 15:38:15 +0000
16093+++ new/gcc/testsuite/gcc.target/arm/neon/vst4p16.c 2010-08-20 13:27:11 +0000
16094@@ -16,5 +16,5 @@
16095 vst4_p16 (arg0_poly16_t, arg1_poly16x4x4_t);
16096 }
16097
16098-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16099+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16100 /* { dg-final { cleanup-saved-temps } } */
16101
16102=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4p8.c'
16103--- old/gcc/testsuite/gcc.target/arm/neon/vst4p8.c 2010-07-29 15:38:15 +0000
16104+++ new/gcc/testsuite/gcc.target/arm/neon/vst4p8.c 2010-08-20 13:27:11 +0000
16105@@ -16,5 +16,5 @@
16106 vst4_p8 (arg0_poly8_t, arg1_poly8x8x4_t);
16107 }
16108
16109-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16110+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16111 /* { dg-final { cleanup-saved-temps } } */
16112
16113=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4s16.c'
16114--- old/gcc/testsuite/gcc.target/arm/neon/vst4s16.c 2010-07-29 15:38:15 +0000
16115+++ new/gcc/testsuite/gcc.target/arm/neon/vst4s16.c 2010-08-20 13:27:11 +0000
16116@@ -16,5 +16,5 @@
16117 vst4_s16 (arg0_int16_t, arg1_int16x4x4_t);
16118 }
16119
16120-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16121+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16122 /* { dg-final { cleanup-saved-temps } } */
16123
16124=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4s32.c'
16125--- old/gcc/testsuite/gcc.target/arm/neon/vst4s32.c 2010-07-29 15:38:15 +0000
16126+++ new/gcc/testsuite/gcc.target/arm/neon/vst4s32.c 2010-08-20 13:27:11 +0000
16127@@ -16,5 +16,5 @@
16128 vst4_s32 (arg0_int32_t, arg1_int32x2x4_t);
16129 }
16130
16131-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16132+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16133 /* { dg-final { cleanup-saved-temps } } */
16134
16135=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4s64.c'
16136--- old/gcc/testsuite/gcc.target/arm/neon/vst4s64.c 2010-07-29 15:38:15 +0000
16137+++ new/gcc/testsuite/gcc.target/arm/neon/vst4s64.c 2010-08-20 13:27:11 +0000
16138@@ -16,5 +16,5 @@
16139 vst4_s64 (arg0_int64_t, arg1_int64x1x4_t);
16140 }
16141
16142-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16143+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16144 /* { dg-final { cleanup-saved-temps } } */
16145
16146=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4s8.c'
16147--- old/gcc/testsuite/gcc.target/arm/neon/vst4s8.c 2010-07-29 15:38:15 +0000
16148+++ new/gcc/testsuite/gcc.target/arm/neon/vst4s8.c 2010-08-20 13:27:11 +0000
16149@@ -16,5 +16,5 @@
16150 vst4_s8 (arg0_int8_t, arg1_int8x8x4_t);
16151 }
16152
16153-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16154+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16155 /* { dg-final { cleanup-saved-temps } } */
16156
16157=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4u16.c'
16158--- old/gcc/testsuite/gcc.target/arm/neon/vst4u16.c 2010-07-29 15:38:15 +0000
16159+++ new/gcc/testsuite/gcc.target/arm/neon/vst4u16.c 2010-08-20 13:27:11 +0000
16160@@ -16,5 +16,5 @@
16161 vst4_u16 (arg0_uint16_t, arg1_uint16x4x4_t);
16162 }
16163
16164-/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16165+/* { dg-final { scan-assembler "vst4\.16\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16166 /* { dg-final { cleanup-saved-temps } } */
16167
16168=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4u32.c'
16169--- old/gcc/testsuite/gcc.target/arm/neon/vst4u32.c 2010-07-29 15:38:15 +0000
16170+++ new/gcc/testsuite/gcc.target/arm/neon/vst4u32.c 2010-08-20 13:27:11 +0000
16171@@ -16,5 +16,5 @@
16172 vst4_u32 (arg0_uint32_t, arg1_uint32x2x4_t);
16173 }
16174
16175-/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16176+/* { dg-final { scan-assembler "vst4\.32\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16177 /* { dg-final { cleanup-saved-temps } } */
16178
16179=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4u64.c'
16180--- old/gcc/testsuite/gcc.target/arm/neon/vst4u64.c 2010-07-29 15:38:15 +0000
16181+++ new/gcc/testsuite/gcc.target/arm/neon/vst4u64.c 2010-08-20 13:27:11 +0000
16182@@ -16,5 +16,5 @@
16183 vst4_u64 (arg0_uint64_t, arg1_uint64x1x4_t);
16184 }
16185
16186-/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16187+/* { dg-final { scan-assembler "vst1\.64\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16188 /* { dg-final { cleanup-saved-temps } } */
16189
16190=== modified file 'gcc/testsuite/gcc.target/arm/neon/vst4u8.c'
16191--- old/gcc/testsuite/gcc.target/arm/neon/vst4u8.c 2010-07-29 15:38:15 +0000
16192+++ new/gcc/testsuite/gcc.target/arm/neon/vst4u8.c 2010-08-20 13:27:11 +0000
16193@@ -16,5 +16,5 @@
16194 vst4_u8 (arg0_uint8_t, arg1_uint8x8x4_t);
16195 }
16196
16197-/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16198+/* { dg-final { scan-assembler "vst4\.8\[ \]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\\\]!?\(\[ \]+@.*\)?\n" } } */
16199 /* { dg-final { cleanup-saved-temps } } */
16200
16201=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQf32.c'
16202--- old/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c 2010-07-29 15:38:15 +0000
16203+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c 2010-08-20 13:27:11 +0000
16204@@ -17,5 +17,5 @@
16205 out_float32x4_t = vsubq_f32 (arg0_float32x4_t, arg1_float32x4_t);
16206 }
16207
16208-/* { dg-final { scan-assembler "vsub\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16209+/* { dg-final { scan-assembler "vsub\.f32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16210 /* { dg-final { cleanup-saved-temps } } */
16211
16212=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQs16.c'
16213--- old/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c 2010-07-29 15:38:15 +0000
16214+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c 2010-08-20 13:27:11 +0000
16215@@ -17,5 +17,5 @@
16216 out_int16x8_t = vsubq_s16 (arg0_int16x8_t, arg1_int16x8_t);
16217 }
16218
16219-/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16220+/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16221 /* { dg-final { cleanup-saved-temps } } */
16222
16223=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQs32.c'
16224--- old/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c 2010-07-29 15:38:15 +0000
16225+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c 2010-08-20 13:27:11 +0000
16226@@ -17,5 +17,5 @@
16227 out_int32x4_t = vsubq_s32 (arg0_int32x4_t, arg1_int32x4_t);
16228 }
16229
16230-/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16231+/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16232 /* { dg-final { cleanup-saved-temps } } */
16233
16234=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQs64.c'
16235--- old/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c 2010-07-29 15:38:15 +0000
16236+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c 2010-08-20 13:27:11 +0000
16237@@ -17,5 +17,5 @@
16238 out_int64x2_t = vsubq_s64 (arg0_int64x2_t, arg1_int64x2_t);
16239 }
16240
16241-/* { dg-final { scan-assembler "vsub\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16242+/* { dg-final { scan-assembler "vsub\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16243 /* { dg-final { cleanup-saved-temps } } */
16244
16245=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQs8.c'
16246--- old/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c 2010-07-29 15:38:15 +0000
16247+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c 2010-08-20 13:27:11 +0000
16248@@ -17,5 +17,5 @@
16249 out_int8x16_t = vsubq_s8 (arg0_int8x16_t, arg1_int8x16_t);
16250 }
16251
16252-/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16253+/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16254 /* { dg-final { cleanup-saved-temps } } */
16255
16256=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQu16.c'
16257--- old/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c 2010-07-29 15:38:15 +0000
16258+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c 2010-08-20 13:27:11 +0000
16259@@ -17,5 +17,5 @@
16260 out_uint16x8_t = vsubq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
16261 }
16262
16263-/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16264+/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16265 /* { dg-final { cleanup-saved-temps } } */
16266
16267=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQu32.c'
16268--- old/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c 2010-07-29 15:38:15 +0000
16269+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c 2010-08-20 13:27:11 +0000
16270@@ -17,5 +17,5 @@
16271 out_uint32x4_t = vsubq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
16272 }
16273
16274-/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16275+/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16276 /* { dg-final { cleanup-saved-temps } } */
16277
16278=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQu64.c'
16279--- old/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c 2010-07-29 15:38:15 +0000
16280+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c 2010-08-20 13:27:11 +0000
16281@@ -17,5 +17,5 @@
16282 out_uint64x2_t = vsubq_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
16283 }
16284
16285-/* { dg-final { scan-assembler "vsub\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16286+/* { dg-final { scan-assembler "vsub\.i64\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16287 /* { dg-final { cleanup-saved-temps } } */
16288
16289=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubQu8.c'
16290--- old/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c 2010-07-29 15:38:15 +0000
16291+++ new/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c 2010-08-20 13:27:11 +0000
16292@@ -17,5 +17,5 @@
16293 out_uint8x16_t = vsubq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
16294 }
16295
16296-/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16297+/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16298 /* { dg-final { cleanup-saved-temps } } */
16299
16300=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubf32.c'
16301--- old/gcc/testsuite/gcc.target/arm/neon/vsubf32.c 2010-07-29 15:38:15 +0000
16302+++ new/gcc/testsuite/gcc.target/arm/neon/vsubf32.c 2010-08-20 13:27:11 +0000
16303@@ -17,5 +17,5 @@
16304 out_float32x2_t = vsub_f32 (arg0_float32x2_t, arg1_float32x2_t);
16305 }
16306
16307-/* { dg-final { scan-assembler "vsub\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16308+/* { dg-final { scan-assembler "vsub\.f32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16309 /* { dg-final { cleanup-saved-temps } } */
16310
16311=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubhns16.c'
16312--- old/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c 2010-07-29 15:38:15 +0000
16313+++ new/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c 2010-08-20 13:27:11 +0000
16314@@ -17,5 +17,5 @@
16315 out_int8x8_t = vsubhn_s16 (arg0_int16x8_t, arg1_int16x8_t);
16316 }
16317
16318-/* { dg-final { scan-assembler "vsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16319+/* { dg-final { scan-assembler "vsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16320 /* { dg-final { cleanup-saved-temps } } */
16321
16322=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubhns32.c'
16323--- old/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c 2010-07-29 15:38:15 +0000
16324+++ new/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c 2010-08-20 13:27:11 +0000
16325@@ -17,5 +17,5 @@
16326 out_int16x4_t = vsubhn_s32 (arg0_int32x4_t, arg1_int32x4_t);
16327 }
16328
16329-/* { dg-final { scan-assembler "vsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16330+/* { dg-final { scan-assembler "vsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16331 /* { dg-final { cleanup-saved-temps } } */
16332
16333=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubhns64.c'
16334--- old/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c 2010-07-29 15:38:15 +0000
16335+++ new/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c 2010-08-20 13:27:11 +0000
16336@@ -17,5 +17,5 @@
16337 out_int32x2_t = vsubhn_s64 (arg0_int64x2_t, arg1_int64x2_t);
16338 }
16339
16340-/* { dg-final { scan-assembler "vsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16341+/* { dg-final { scan-assembler "vsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16342 /* { dg-final { cleanup-saved-temps } } */
16343
16344=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c'
16345--- old/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c 2010-07-29 15:38:15 +0000
16346+++ new/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c 2010-08-20 13:27:11 +0000
16347@@ -17,5 +17,5 @@
16348 out_uint8x8_t = vsubhn_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
16349 }
16350
16351-/* { dg-final { scan-assembler "vsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16352+/* { dg-final { scan-assembler "vsubhn\.i16\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16353 /* { dg-final { cleanup-saved-temps } } */
16354
16355=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c'
16356--- old/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c 2010-07-29 15:38:15 +0000
16357+++ new/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c 2010-08-20 13:27:11 +0000
16358@@ -17,5 +17,5 @@
16359 out_uint16x4_t = vsubhn_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
16360 }
16361
16362-/* { dg-final { scan-assembler "vsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16363+/* { dg-final { scan-assembler "vsubhn\.i32\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16364 /* { dg-final { cleanup-saved-temps } } */
16365
16366=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c'
16367--- old/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c 2010-07-29 15:38:15 +0000
16368+++ new/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c 2010-08-20 13:27:11 +0000
16369@@ -17,5 +17,5 @@
16370 out_uint32x2_t = vsubhn_u64 (arg0_uint64x2_t, arg1_uint64x2_t);
16371 }
16372
16373-/* { dg-final { scan-assembler "vsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16374+/* { dg-final { scan-assembler "vsubhn\.i64\[ \]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16375 /* { dg-final { cleanup-saved-temps } } */
16376
16377=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubls16.c'
16378--- old/gcc/testsuite/gcc.target/arm/neon/vsubls16.c 2010-07-29 15:38:15 +0000
16379+++ new/gcc/testsuite/gcc.target/arm/neon/vsubls16.c 2010-08-20 13:27:11 +0000
16380@@ -17,5 +17,5 @@
16381 out_int32x4_t = vsubl_s16 (arg0_int16x4_t, arg1_int16x4_t);
16382 }
16383
16384-/* { dg-final { scan-assembler "vsubl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16385+/* { dg-final { scan-assembler "vsubl\.s16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16386 /* { dg-final { cleanup-saved-temps } } */
16387
16388=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubls32.c'
16389--- old/gcc/testsuite/gcc.target/arm/neon/vsubls32.c 2010-07-29 15:38:15 +0000
16390+++ new/gcc/testsuite/gcc.target/arm/neon/vsubls32.c 2010-08-20 13:27:11 +0000
16391@@ -17,5 +17,5 @@
16392 out_int64x2_t = vsubl_s32 (arg0_int32x2_t, arg1_int32x2_t);
16393 }
16394
16395-/* { dg-final { scan-assembler "vsubl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16396+/* { dg-final { scan-assembler "vsubl\.s32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16397 /* { dg-final { cleanup-saved-temps } } */
16398
16399=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubls8.c'
16400--- old/gcc/testsuite/gcc.target/arm/neon/vsubls8.c 2010-07-29 15:38:15 +0000
16401+++ new/gcc/testsuite/gcc.target/arm/neon/vsubls8.c 2010-08-20 13:27:11 +0000
16402@@ -17,5 +17,5 @@
16403 out_int16x8_t = vsubl_s8 (arg0_int8x8_t, arg1_int8x8_t);
16404 }
16405
16406-/* { dg-final { scan-assembler "vsubl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16407+/* { dg-final { scan-assembler "vsubl\.s8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16408 /* { dg-final { cleanup-saved-temps } } */
16409
16410=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsublu16.c'
16411--- old/gcc/testsuite/gcc.target/arm/neon/vsublu16.c 2010-07-29 15:38:15 +0000
16412+++ new/gcc/testsuite/gcc.target/arm/neon/vsublu16.c 2010-08-20 13:27:11 +0000
16413@@ -17,5 +17,5 @@
16414 out_uint32x4_t = vsubl_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
16415 }
16416
16417-/* { dg-final { scan-assembler "vsubl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16418+/* { dg-final { scan-assembler "vsubl\.u16\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16419 /* { dg-final { cleanup-saved-temps } } */
16420
16421=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsublu32.c'
16422--- old/gcc/testsuite/gcc.target/arm/neon/vsublu32.c 2010-07-29 15:38:15 +0000
16423+++ new/gcc/testsuite/gcc.target/arm/neon/vsublu32.c 2010-08-20 13:27:11 +0000
16424@@ -17,5 +17,5 @@
16425 out_uint64x2_t = vsubl_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
16426 }
16427
16428-/* { dg-final { scan-assembler "vsubl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16429+/* { dg-final { scan-assembler "vsubl\.u32\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16430 /* { dg-final { cleanup-saved-temps } } */
16431
16432=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsublu8.c'
16433--- old/gcc/testsuite/gcc.target/arm/neon/vsublu8.c 2010-07-29 15:38:15 +0000
16434+++ new/gcc/testsuite/gcc.target/arm/neon/vsublu8.c 2010-08-20 13:27:11 +0000
16435@@ -17,5 +17,5 @@
16436 out_uint16x8_t = vsubl_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
16437 }
16438
16439-/* { dg-final { scan-assembler "vsubl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16440+/* { dg-final { scan-assembler "vsubl\.u8\[ \]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16441 /* { dg-final { cleanup-saved-temps } } */
16442
16443=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubs16.c'
16444--- old/gcc/testsuite/gcc.target/arm/neon/vsubs16.c 2010-07-29 15:38:15 +0000
16445+++ new/gcc/testsuite/gcc.target/arm/neon/vsubs16.c 2010-08-20 13:27:11 +0000
16446@@ -17,5 +17,5 @@
16447 out_int16x4_t = vsub_s16 (arg0_int16x4_t, arg1_int16x4_t);
16448 }
16449
16450-/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16451+/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16452 /* { dg-final { cleanup-saved-temps } } */
16453
16454=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubs32.c'
16455--- old/gcc/testsuite/gcc.target/arm/neon/vsubs32.c 2010-07-29 15:38:15 +0000
16456+++ new/gcc/testsuite/gcc.target/arm/neon/vsubs32.c 2010-08-20 13:27:11 +0000
16457@@ -17,5 +17,5 @@
16458 out_int32x2_t = vsub_s32 (arg0_int32x2_t, arg1_int32x2_t);
16459 }
16460
16461-/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16462+/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16463 /* { dg-final { cleanup-saved-temps } } */
16464
16465=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubs8.c'
16466--- old/gcc/testsuite/gcc.target/arm/neon/vsubs8.c 2010-07-29 15:38:15 +0000
16467+++ new/gcc/testsuite/gcc.target/arm/neon/vsubs8.c 2010-08-20 13:27:11 +0000
16468@@ -17,5 +17,5 @@
16469 out_int8x8_t = vsub_s8 (arg0_int8x8_t, arg1_int8x8_t);
16470 }
16471
16472-/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16473+/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16474 /* { dg-final { cleanup-saved-temps } } */
16475
16476=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubu16.c'
16477--- old/gcc/testsuite/gcc.target/arm/neon/vsubu16.c 2010-07-29 15:38:15 +0000
16478+++ new/gcc/testsuite/gcc.target/arm/neon/vsubu16.c 2010-08-20 13:27:11 +0000
16479@@ -17,5 +17,5 @@
16480 out_uint16x4_t = vsub_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
16481 }
16482
16483-/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16484+/* { dg-final { scan-assembler "vsub\.i16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16485 /* { dg-final { cleanup-saved-temps } } */
16486
16487=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubu32.c'
16488--- old/gcc/testsuite/gcc.target/arm/neon/vsubu32.c 2010-07-29 15:38:15 +0000
16489+++ new/gcc/testsuite/gcc.target/arm/neon/vsubu32.c 2010-08-20 13:27:11 +0000
16490@@ -17,5 +17,5 @@
16491 out_uint32x2_t = vsub_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
16492 }
16493
16494-/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16495+/* { dg-final { scan-assembler "vsub\.i32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16496 /* { dg-final { cleanup-saved-temps } } */
16497
16498=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubu8.c'
16499--- old/gcc/testsuite/gcc.target/arm/neon/vsubu8.c 2010-07-29 15:38:15 +0000
16500+++ new/gcc/testsuite/gcc.target/arm/neon/vsubu8.c 2010-08-20 13:27:11 +0000
16501@@ -17,5 +17,5 @@
16502 out_uint8x8_t = vsub_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
16503 }
16504
16505-/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16506+/* { dg-final { scan-assembler "vsub\.i8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16507 /* { dg-final { cleanup-saved-temps } } */
16508
16509=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubws16.c'
16510--- old/gcc/testsuite/gcc.target/arm/neon/vsubws16.c 2010-07-29 15:38:15 +0000
16511+++ new/gcc/testsuite/gcc.target/arm/neon/vsubws16.c 2010-08-20 13:27:11 +0000
16512@@ -17,5 +17,5 @@
16513 out_int32x4_t = vsubw_s16 (arg0_int32x4_t, arg1_int16x4_t);
16514 }
16515
16516-/* { dg-final { scan-assembler "vsubw\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16517+/* { dg-final { scan-assembler "vsubw\.s16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16518 /* { dg-final { cleanup-saved-temps } } */
16519
16520=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubws32.c'
16521--- old/gcc/testsuite/gcc.target/arm/neon/vsubws32.c 2010-07-29 15:38:15 +0000
16522+++ new/gcc/testsuite/gcc.target/arm/neon/vsubws32.c 2010-08-20 13:27:11 +0000
16523@@ -17,5 +17,5 @@
16524 out_int64x2_t = vsubw_s32 (arg0_int64x2_t, arg1_int32x2_t);
16525 }
16526
16527-/* { dg-final { scan-assembler "vsubw\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16528+/* { dg-final { scan-assembler "vsubw\.s32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16529 /* { dg-final { cleanup-saved-temps } } */
16530
16531=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubws8.c'
16532--- old/gcc/testsuite/gcc.target/arm/neon/vsubws8.c 2010-07-29 15:38:15 +0000
16533+++ new/gcc/testsuite/gcc.target/arm/neon/vsubws8.c 2010-08-20 13:27:11 +0000
16534@@ -17,5 +17,5 @@
16535 out_int16x8_t = vsubw_s8 (arg0_int16x8_t, arg1_int8x8_t);
16536 }
16537
16538-/* { dg-final { scan-assembler "vsubw\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16539+/* { dg-final { scan-assembler "vsubw\.s8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16540 /* { dg-final { cleanup-saved-temps } } */
16541
16542=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubwu16.c'
16543--- old/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c 2010-07-29 15:38:15 +0000
16544+++ new/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c 2010-08-20 13:27:11 +0000
16545@@ -17,5 +17,5 @@
16546 out_uint32x4_t = vsubw_u16 (arg0_uint32x4_t, arg1_uint16x4_t);
16547 }
16548
16549-/* { dg-final { scan-assembler "vsubw\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16550+/* { dg-final { scan-assembler "vsubw\.u16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16551 /* { dg-final { cleanup-saved-temps } } */
16552
16553=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubwu32.c'
16554--- old/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c 2010-07-29 15:38:15 +0000
16555+++ new/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c 2010-08-20 13:27:11 +0000
16556@@ -17,5 +17,5 @@
16557 out_uint64x2_t = vsubw_u32 (arg0_uint64x2_t, arg1_uint32x2_t);
16558 }
16559
16560-/* { dg-final { scan-assembler "vsubw\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16561+/* { dg-final { scan-assembler "vsubw\.u32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16562 /* { dg-final { cleanup-saved-temps } } */
16563
16564=== modified file 'gcc/testsuite/gcc.target/arm/neon/vsubwu8.c'
16565--- old/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c 2010-07-29 15:38:15 +0000
16566+++ new/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c 2010-08-20 13:27:11 +0000
16567@@ -17,5 +17,5 @@
16568 out_uint16x8_t = vsubw_u8 (arg0_uint16x8_t, arg1_uint8x8_t);
16569 }
16570
16571-/* { dg-final { scan-assembler "vsubw\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16572+/* { dg-final { scan-assembler "vsubw\.u8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16573 /* { dg-final { cleanup-saved-temps } } */
16574
16575=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c'
16576--- old/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c 2010-07-29 15:38:15 +0000
16577+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c 2010-08-20 13:27:11 +0000
16578@@ -17,5 +17,5 @@
16579 out_poly8x8_t = vtbl1_p8 (arg0_poly8x8_t, arg1_uint8x8_t);
16580 }
16581
16582-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16583+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16584 /* { dg-final { cleanup-saved-temps } } */
16585
16586=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c'
16587--- old/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c 2010-07-29 15:38:15 +0000
16588+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c 2010-08-20 13:27:11 +0000
16589@@ -17,5 +17,5 @@
16590 out_int8x8_t = vtbl1_s8 (arg0_int8x8_t, arg1_int8x8_t);
16591 }
16592
16593-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16594+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16595 /* { dg-final { cleanup-saved-temps } } */
16596
16597=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c'
16598--- old/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c 2010-07-29 15:38:15 +0000
16599+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c 2010-08-20 13:27:11 +0000
16600@@ -17,5 +17,5 @@
16601 out_uint8x8_t = vtbl1_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
16602 }
16603
16604-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16605+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16606 /* { dg-final { cleanup-saved-temps } } */
16607
16608=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c'
16609--- old/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c 2010-07-29 15:38:15 +0000
16610+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c 2010-08-20 13:27:11 +0000
16611@@ -17,5 +17,5 @@
16612 out_poly8x8_t = vtbl2_p8 (arg0_poly8x8x2_t, arg1_uint8x8_t);
16613 }
16614
16615-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16616+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16617 /* { dg-final { cleanup-saved-temps } } */
16618
16619=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c'
16620--- old/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c 2010-07-29 15:38:15 +0000
16621+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c 2010-08-20 13:27:11 +0000
16622@@ -17,5 +17,5 @@
16623 out_int8x8_t = vtbl2_s8 (arg0_int8x8x2_t, arg1_int8x8_t);
16624 }
16625
16626-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16627+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16628 /* { dg-final { cleanup-saved-temps } } */
16629
16630=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c'
16631--- old/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c 2010-07-29 15:38:15 +0000
16632+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c 2010-08-20 13:27:11 +0000
16633@@ -17,5 +17,5 @@
16634 out_uint8x8_t = vtbl2_u8 (arg0_uint8x8x2_t, arg1_uint8x8_t);
16635 }
16636
16637-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16638+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16639 /* { dg-final { cleanup-saved-temps } } */
16640
16641=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c'
16642--- old/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c 2010-07-29 15:38:15 +0000
16643+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c 2010-08-20 13:27:11 +0000
16644@@ -17,5 +17,5 @@
16645 out_poly8x8_t = vtbl3_p8 (arg0_poly8x8x3_t, arg1_uint8x8_t);
16646 }
16647
16648-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16649+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16650 /* { dg-final { cleanup-saved-temps } } */
16651
16652=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c'
16653--- old/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c 2010-07-29 15:38:15 +0000
16654+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c 2010-08-20 13:27:11 +0000
16655@@ -17,5 +17,5 @@
16656 out_int8x8_t = vtbl3_s8 (arg0_int8x8x3_t, arg1_int8x8_t);
16657 }
16658
16659-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16660+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16661 /* { dg-final { cleanup-saved-temps } } */
16662
16663=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c'
16664--- old/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c 2010-07-29 15:38:15 +0000
16665+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c 2010-08-20 13:27:11 +0000
16666@@ -17,5 +17,5 @@
16667 out_uint8x8_t = vtbl3_u8 (arg0_uint8x8x3_t, arg1_uint8x8_t);
16668 }
16669
16670-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16671+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16672 /* { dg-final { cleanup-saved-temps } } */
16673
16674=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c'
16675--- old/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c 2010-07-29 15:38:15 +0000
16676+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c 2010-08-20 13:27:11 +0000
16677@@ -17,5 +17,5 @@
16678 out_poly8x8_t = vtbl4_p8 (arg0_poly8x8x4_t, arg1_uint8x8_t);
16679 }
16680
16681-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16682+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16683 /* { dg-final { cleanup-saved-temps } } */
16684
16685=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c'
16686--- old/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c 2010-07-29 15:38:15 +0000
16687+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c 2010-08-20 13:27:11 +0000
16688@@ -17,5 +17,5 @@
16689 out_int8x8_t = vtbl4_s8 (arg0_int8x8x4_t, arg1_int8x8_t);
16690 }
16691
16692-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16693+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16694 /* { dg-final { cleanup-saved-temps } } */
16695
16696=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c'
16697--- old/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c 2010-07-29 15:38:15 +0000
16698+++ new/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c 2010-08-20 13:27:11 +0000
16699@@ -17,5 +17,5 @@
16700 out_uint8x8_t = vtbl4_u8 (arg0_uint8x8x4_t, arg1_uint8x8_t);
16701 }
16702
16703-/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16704+/* { dg-final { scan-assembler "vtbl\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16705 /* { dg-final { cleanup-saved-temps } } */
16706
16707=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c'
16708--- old/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c 2010-07-29 15:38:15 +0000
16709+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c 2010-08-20 13:27:11 +0000
16710@@ -18,5 +18,5 @@
16711 out_poly8x8_t = vtbx1_p8 (arg0_poly8x8_t, arg1_poly8x8_t, arg2_uint8x8_t);
16712 }
16713
16714-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16715+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16716 /* { dg-final { cleanup-saved-temps } } */
16717
16718=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c'
16719--- old/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c 2010-07-29 15:38:15 +0000
16720+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c 2010-08-20 13:27:11 +0000
16721@@ -18,5 +18,5 @@
16722 out_int8x8_t = vtbx1_s8 (arg0_int8x8_t, arg1_int8x8_t, arg2_int8x8_t);
16723 }
16724
16725-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16726+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16727 /* { dg-final { cleanup-saved-temps } } */
16728
16729=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c'
16730--- old/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c 2010-07-29 15:38:15 +0000
16731+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c 2010-08-20 13:27:11 +0000
16732@@ -18,5 +18,5 @@
16733 out_uint8x8_t = vtbx1_u8 (arg0_uint8x8_t, arg1_uint8x8_t, arg2_uint8x8_t);
16734 }
16735
16736-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16737+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16738 /* { dg-final { cleanup-saved-temps } } */
16739
16740=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c'
16741--- old/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c 2010-07-29 15:38:15 +0000
16742+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c 2010-08-20 13:27:11 +0000
16743@@ -18,5 +18,5 @@
16744 out_poly8x8_t = vtbx2_p8 (arg0_poly8x8_t, arg1_poly8x8x2_t, arg2_uint8x8_t);
16745 }
16746
16747-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16748+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16749 /* { dg-final { cleanup-saved-temps } } */
16750
16751=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c'
16752--- old/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c 2010-07-29 15:38:15 +0000
16753+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c 2010-08-20 13:27:11 +0000
16754@@ -18,5 +18,5 @@
16755 out_int8x8_t = vtbx2_s8 (arg0_int8x8_t, arg1_int8x8x2_t, arg2_int8x8_t);
16756 }
16757
16758-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16759+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16760 /* { dg-final { cleanup-saved-temps } } */
16761
16762=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c'
16763--- old/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c 2010-07-29 15:38:15 +0000
16764+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c 2010-08-20 13:27:11 +0000
16765@@ -18,5 +18,5 @@
16766 out_uint8x8_t = vtbx2_u8 (arg0_uint8x8_t, arg1_uint8x8x2_t, arg2_uint8x8_t);
16767 }
16768
16769-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16770+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16771 /* { dg-final { cleanup-saved-temps } } */
16772
16773=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c'
16774--- old/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c 2010-07-29 15:38:15 +0000
16775+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c 2010-08-20 13:27:11 +0000
16776@@ -18,5 +18,5 @@
16777 out_poly8x8_t = vtbx3_p8 (arg0_poly8x8_t, arg1_poly8x8x3_t, arg2_uint8x8_t);
16778 }
16779
16780-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16781+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16782 /* { dg-final { cleanup-saved-temps } } */
16783
16784=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c'
16785--- old/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c 2010-07-29 15:38:15 +0000
16786+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c 2010-08-20 13:27:11 +0000
16787@@ -18,5 +18,5 @@
16788 out_int8x8_t = vtbx3_s8 (arg0_int8x8_t, arg1_int8x8x3_t, arg2_int8x8_t);
16789 }
16790
16791-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16792+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16793 /* { dg-final { cleanup-saved-temps } } */
16794
16795=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c'
16796--- old/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c 2010-07-29 15:38:15 +0000
16797+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c 2010-08-20 13:27:11 +0000
16798@@ -18,5 +18,5 @@
16799 out_uint8x8_t = vtbx3_u8 (arg0_uint8x8_t, arg1_uint8x8x3_t, arg2_uint8x8_t);
16800 }
16801
16802-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16803+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16804 /* { dg-final { cleanup-saved-temps } } */
16805
16806=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c'
16807--- old/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c 2010-07-29 15:38:15 +0000
16808+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c 2010-08-20 13:27:11 +0000
16809@@ -18,5 +18,5 @@
16810 out_poly8x8_t = vtbx4_p8 (arg0_poly8x8_t, arg1_poly8x8x4_t, arg2_uint8x8_t);
16811 }
16812
16813-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16814+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16815 /* { dg-final { cleanup-saved-temps } } */
16816
16817=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c'
16818--- old/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c 2010-07-29 15:38:15 +0000
16819+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c 2010-08-20 13:27:11 +0000
16820@@ -18,5 +18,5 @@
16821 out_int8x8_t = vtbx4_s8 (arg0_int8x8_t, arg1_int8x8x4_t, arg2_int8x8_t);
16822 }
16823
16824-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16825+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16826 /* { dg-final { cleanup-saved-temps } } */
16827
16828=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c'
16829--- old/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c 2010-07-29 15:38:15 +0000
16830+++ new/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c 2010-08-20 13:27:11 +0000
16831@@ -18,5 +18,5 @@
16832 out_uint8x8_t = vtbx4_u8 (arg0_uint8x8_t, arg1_uint8x8x4_t, arg2_uint8x8_t);
16833 }
16834
16835-/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16836+/* { dg-final { scan-assembler "vtbx\.8\[ \]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16837 /* { dg-final { cleanup-saved-temps } } */
16838
16839=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c'
16840--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c 2010-07-29 15:38:15 +0000
16841+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c 2010-08-20 13:27:11 +0000
16842@@ -17,5 +17,5 @@
16843 out_float32x4x2_t = vtrnq_f32 (arg0_float32x4_t, arg1_float32x4_t);
16844 }
16845
16846-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16847+/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16848 /* { dg-final { cleanup-saved-temps } } */
16849
16850=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c'
16851--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c 2010-07-29 15:38:15 +0000
16852+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c 2010-08-20 13:27:11 +0000
16853@@ -17,5 +17,5 @@
16854 out_poly16x8x2_t = vtrnq_p16 (arg0_poly16x8_t, arg1_poly16x8_t);
16855 }
16856
16857-/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16858+/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16859 /* { dg-final { cleanup-saved-temps } } */
16860
16861=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c'
16862--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c 2010-07-29 15:38:15 +0000
16863+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c 2010-08-20 13:27:11 +0000
16864@@ -17,5 +17,5 @@
16865 out_poly8x16x2_t = vtrnq_p8 (arg0_poly8x16_t, arg1_poly8x16_t);
16866 }
16867
16868-/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16869+/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16870 /* { dg-final { cleanup-saved-temps } } */
16871
16872=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c'
16873--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c 2010-07-29 15:38:15 +0000
16874+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c 2010-08-20 13:27:11 +0000
16875@@ -17,5 +17,5 @@
16876 out_int16x8x2_t = vtrnq_s16 (arg0_int16x8_t, arg1_int16x8_t);
16877 }
16878
16879-/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16880+/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16881 /* { dg-final { cleanup-saved-temps } } */
16882
16883=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c'
16884--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c 2010-07-29 15:38:15 +0000
16885+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c 2010-08-20 13:27:11 +0000
16886@@ -17,5 +17,5 @@
16887 out_int32x4x2_t = vtrnq_s32 (arg0_int32x4_t, arg1_int32x4_t);
16888 }
16889
16890-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16891+/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16892 /* { dg-final { cleanup-saved-temps } } */
16893
16894=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c'
16895--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c 2010-07-29 15:38:15 +0000
16896+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c 2010-08-20 13:27:11 +0000
16897@@ -17,5 +17,5 @@
16898 out_int8x16x2_t = vtrnq_s8 (arg0_int8x16_t, arg1_int8x16_t);
16899 }
16900
16901-/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16902+/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16903 /* { dg-final { cleanup-saved-temps } } */
16904
16905=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c'
16906--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c 2010-07-29 15:38:15 +0000
16907+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c 2010-08-20 13:27:11 +0000
16908@@ -17,5 +17,5 @@
16909 out_uint16x8x2_t = vtrnq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
16910 }
16911
16912-/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16913+/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16914 /* { dg-final { cleanup-saved-temps } } */
16915
16916=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c'
16917--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c 2010-07-29 15:38:15 +0000
16918+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c 2010-08-20 13:27:11 +0000
16919@@ -17,5 +17,5 @@
16920 out_uint32x4x2_t = vtrnq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
16921 }
16922
16923-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16924+/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16925 /* { dg-final { cleanup-saved-temps } } */
16926
16927=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c'
16928--- old/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c 2010-07-29 15:38:15 +0000
16929+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c 2010-08-20 13:27:11 +0000
16930@@ -17,5 +17,5 @@
16931 out_uint8x16x2_t = vtrnq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
16932 }
16933
16934-/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16935+/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16936 /* { dg-final { cleanup-saved-temps } } */
16937
16938=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnf32.c'
16939--- old/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c 2010-07-29 15:38:15 +0000
16940+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c 2010-08-20 13:27:11 +0000
16941@@ -17,5 +17,5 @@
16942 out_float32x2x2_t = vtrn_f32 (arg0_float32x2_t, arg1_float32x2_t);
16943 }
16944
16945-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16946+/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16947 /* { dg-final { cleanup-saved-temps } } */
16948
16949=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnp16.c'
16950--- old/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c 2010-07-29 15:38:15 +0000
16951+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c 2010-08-20 13:27:11 +0000
16952@@ -17,5 +17,5 @@
16953 out_poly16x4x2_t = vtrn_p16 (arg0_poly16x4_t, arg1_poly16x4_t);
16954 }
16955
16956-/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16957+/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16958 /* { dg-final { cleanup-saved-temps } } */
16959
16960=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnp8.c'
16961--- old/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c 2010-07-29 15:38:15 +0000
16962+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c 2010-08-20 13:27:11 +0000
16963@@ -17,5 +17,5 @@
16964 out_poly8x8x2_t = vtrn_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
16965 }
16966
16967-/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16968+/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16969 /* { dg-final { cleanup-saved-temps } } */
16970
16971=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrns16.c'
16972--- old/gcc/testsuite/gcc.target/arm/neon/vtrns16.c 2010-07-29 15:38:15 +0000
16973+++ new/gcc/testsuite/gcc.target/arm/neon/vtrns16.c 2010-08-20 13:27:11 +0000
16974@@ -17,5 +17,5 @@
16975 out_int16x4x2_t = vtrn_s16 (arg0_int16x4_t, arg1_int16x4_t);
16976 }
16977
16978-/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16979+/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16980 /* { dg-final { cleanup-saved-temps } } */
16981
16982=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrns32.c'
16983--- old/gcc/testsuite/gcc.target/arm/neon/vtrns32.c 2010-07-29 15:38:15 +0000
16984+++ new/gcc/testsuite/gcc.target/arm/neon/vtrns32.c 2010-08-20 13:27:11 +0000
16985@@ -17,5 +17,5 @@
16986 out_int32x2x2_t = vtrn_s32 (arg0_int32x2_t, arg1_int32x2_t);
16987 }
16988
16989-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
16990+/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
16991 /* { dg-final { cleanup-saved-temps } } */
16992
16993=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrns8.c'
16994--- old/gcc/testsuite/gcc.target/arm/neon/vtrns8.c 2010-07-29 15:38:15 +0000
16995+++ new/gcc/testsuite/gcc.target/arm/neon/vtrns8.c 2010-08-20 13:27:11 +0000
16996@@ -17,5 +17,5 @@
16997 out_int8x8x2_t = vtrn_s8 (arg0_int8x8_t, arg1_int8x8_t);
16998 }
16999
17000-/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17001+/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17002 /* { dg-final { cleanup-saved-temps } } */
17003
17004=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnu16.c'
17005--- old/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c 2010-07-29 15:38:15 +0000
17006+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c 2010-08-20 13:27:11 +0000
17007@@ -17,5 +17,5 @@
17008 out_uint16x4x2_t = vtrn_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
17009 }
17010
17011-/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17012+/* { dg-final { scan-assembler "vtrn\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17013 /* { dg-final { cleanup-saved-temps } } */
17014
17015=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnu32.c'
17016--- old/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c 2010-07-29 15:38:15 +0000
17017+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c 2010-08-20 13:27:11 +0000
17018@@ -17,5 +17,5 @@
17019 out_uint32x2x2_t = vtrn_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
17020 }
17021
17022-/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17023+/* { dg-final { scan-assembler "vtrn\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17024 /* { dg-final { cleanup-saved-temps } } */
17025
17026=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtrnu8.c'
17027--- old/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c 2010-07-29 15:38:15 +0000
17028+++ new/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c 2010-08-20 13:27:11 +0000
17029@@ -17,5 +17,5 @@
17030 out_uint8x8x2_t = vtrn_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
17031 }
17032
17033-/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17034+/* { dg-final { scan-assembler "vtrn\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17035 /* { dg-final { cleanup-saved-temps } } */
17036
17037=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQp8.c'
17038--- old/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c 2010-07-29 15:38:15 +0000
17039+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c 2010-08-20 13:27:11 +0000
17040@@ -17,5 +17,5 @@
17041 out_uint8x16_t = vtstq_p8 (arg0_poly8x16_t, arg1_poly8x16_t);
17042 }
17043
17044-/* { dg-final { scan-assembler "vtst\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17045+/* { dg-final { scan-assembler "vtst\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17046 /* { dg-final { cleanup-saved-temps } } */
17047
17048=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQs16.c'
17049--- old/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c 2010-07-29 15:38:15 +0000
17050+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c 2010-08-20 13:27:11 +0000
17051@@ -17,5 +17,5 @@
17052 out_uint16x8_t = vtstq_s16 (arg0_int16x8_t, arg1_int16x8_t);
17053 }
17054
17055-/* { dg-final { scan-assembler "vtst\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17056+/* { dg-final { scan-assembler "vtst\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17057 /* { dg-final { cleanup-saved-temps } } */
17058
17059=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQs32.c'
17060--- old/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c 2010-07-29 15:38:15 +0000
17061+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c 2010-08-20 13:27:11 +0000
17062@@ -17,5 +17,5 @@
17063 out_uint32x4_t = vtstq_s32 (arg0_int32x4_t, arg1_int32x4_t);
17064 }
17065
17066-/* { dg-final { scan-assembler "vtst\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17067+/* { dg-final { scan-assembler "vtst\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17068 /* { dg-final { cleanup-saved-temps } } */
17069
17070=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQs8.c'
17071--- old/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c 2010-07-29 15:38:15 +0000
17072+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c 2010-08-20 13:27:11 +0000
17073@@ -17,5 +17,5 @@
17074 out_uint8x16_t = vtstq_s8 (arg0_int8x16_t, arg1_int8x16_t);
17075 }
17076
17077-/* { dg-final { scan-assembler "vtst\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17078+/* { dg-final { scan-assembler "vtst\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17079 /* { dg-final { cleanup-saved-temps } } */
17080
17081=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQu16.c'
17082--- old/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c 2010-07-29 15:38:15 +0000
17083+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c 2010-08-20 13:27:11 +0000
17084@@ -17,5 +17,5 @@
17085 out_uint16x8_t = vtstq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
17086 }
17087
17088-/* { dg-final { scan-assembler "vtst\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17089+/* { dg-final { scan-assembler "vtst\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17090 /* { dg-final { cleanup-saved-temps } } */
17091
17092=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQu32.c'
17093--- old/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c 2010-07-29 15:38:15 +0000
17094+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c 2010-08-20 13:27:11 +0000
17095@@ -17,5 +17,5 @@
17096 out_uint32x4_t = vtstq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
17097 }
17098
17099-/* { dg-final { scan-assembler "vtst\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17100+/* { dg-final { scan-assembler "vtst\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17101 /* { dg-final { cleanup-saved-temps } } */
17102
17103=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstQu8.c'
17104--- old/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c 2010-07-29 15:38:15 +0000
17105+++ new/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c 2010-08-20 13:27:11 +0000
17106@@ -17,5 +17,5 @@
17107 out_uint8x16_t = vtstq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
17108 }
17109
17110-/* { dg-final { scan-assembler "vtst\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17111+/* { dg-final { scan-assembler "vtst\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17112 /* { dg-final { cleanup-saved-temps } } */
17113
17114=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstp8.c'
17115--- old/gcc/testsuite/gcc.target/arm/neon/vtstp8.c 2010-07-29 15:38:15 +0000
17116+++ new/gcc/testsuite/gcc.target/arm/neon/vtstp8.c 2010-08-20 13:27:11 +0000
17117@@ -17,5 +17,5 @@
17118 out_uint8x8_t = vtst_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
17119 }
17120
17121-/* { dg-final { scan-assembler "vtst\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17122+/* { dg-final { scan-assembler "vtst\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17123 /* { dg-final { cleanup-saved-temps } } */
17124
17125=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtsts16.c'
17126--- old/gcc/testsuite/gcc.target/arm/neon/vtsts16.c 2010-07-29 15:38:15 +0000
17127+++ new/gcc/testsuite/gcc.target/arm/neon/vtsts16.c 2010-08-20 13:27:11 +0000
17128@@ -17,5 +17,5 @@
17129 out_uint16x4_t = vtst_s16 (arg0_int16x4_t, arg1_int16x4_t);
17130 }
17131
17132-/* { dg-final { scan-assembler "vtst\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17133+/* { dg-final { scan-assembler "vtst\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17134 /* { dg-final { cleanup-saved-temps } } */
17135
17136=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtsts32.c'
17137--- old/gcc/testsuite/gcc.target/arm/neon/vtsts32.c 2010-07-29 15:38:15 +0000
17138+++ new/gcc/testsuite/gcc.target/arm/neon/vtsts32.c 2010-08-20 13:27:11 +0000
17139@@ -17,5 +17,5 @@
17140 out_uint32x2_t = vtst_s32 (arg0_int32x2_t, arg1_int32x2_t);
17141 }
17142
17143-/* { dg-final { scan-assembler "vtst\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17144+/* { dg-final { scan-assembler "vtst\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17145 /* { dg-final { cleanup-saved-temps } } */
17146
17147=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtsts8.c'
17148--- old/gcc/testsuite/gcc.target/arm/neon/vtsts8.c 2010-07-29 15:38:15 +0000
17149+++ new/gcc/testsuite/gcc.target/arm/neon/vtsts8.c 2010-08-20 13:27:11 +0000
17150@@ -17,5 +17,5 @@
17151 out_uint8x8_t = vtst_s8 (arg0_int8x8_t, arg1_int8x8_t);
17152 }
17153
17154-/* { dg-final { scan-assembler "vtst\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17155+/* { dg-final { scan-assembler "vtst\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17156 /* { dg-final { cleanup-saved-temps } } */
17157
17158=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstu16.c'
17159--- old/gcc/testsuite/gcc.target/arm/neon/vtstu16.c 2010-07-29 15:38:15 +0000
17160+++ new/gcc/testsuite/gcc.target/arm/neon/vtstu16.c 2010-08-20 13:27:11 +0000
17161@@ -17,5 +17,5 @@
17162 out_uint16x4_t = vtst_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
17163 }
17164
17165-/* { dg-final { scan-assembler "vtst\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17166+/* { dg-final { scan-assembler "vtst\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17167 /* { dg-final { cleanup-saved-temps } } */
17168
17169=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstu32.c'
17170--- old/gcc/testsuite/gcc.target/arm/neon/vtstu32.c 2010-07-29 15:38:15 +0000
17171+++ new/gcc/testsuite/gcc.target/arm/neon/vtstu32.c 2010-08-20 13:27:11 +0000
17172@@ -17,5 +17,5 @@
17173 out_uint32x2_t = vtst_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
17174 }
17175
17176-/* { dg-final { scan-assembler "vtst\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17177+/* { dg-final { scan-assembler "vtst\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17178 /* { dg-final { cleanup-saved-temps } } */
17179
17180=== modified file 'gcc/testsuite/gcc.target/arm/neon/vtstu8.c'
17181--- old/gcc/testsuite/gcc.target/arm/neon/vtstu8.c 2010-07-29 15:38:15 +0000
17182+++ new/gcc/testsuite/gcc.target/arm/neon/vtstu8.c 2010-08-20 13:27:11 +0000
17183@@ -17,5 +17,5 @@
17184 out_uint8x8_t = vtst_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
17185 }
17186
17187-/* { dg-final { scan-assembler "vtst\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17188+/* { dg-final { scan-assembler "vtst\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17189 /* { dg-final { cleanup-saved-temps } } */
17190
17191=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c'
17192--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c 2010-07-29 15:38:15 +0000
17193+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c 2010-08-20 13:27:11 +0000
17194@@ -17,5 +17,5 @@
17195 out_float32x4x2_t = vuzpq_f32 (arg0_float32x4_t, arg1_float32x4_t);
17196 }
17197
17198-/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17199+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17200 /* { dg-final { cleanup-saved-temps } } */
17201
17202=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c'
17203--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c 2010-07-29 15:38:15 +0000
17204+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c 2010-08-20 13:27:11 +0000
17205@@ -17,5 +17,5 @@
17206 out_poly16x8x2_t = vuzpq_p16 (arg0_poly16x8_t, arg1_poly16x8_t);
17207 }
17208
17209-/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17210+/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17211 /* { dg-final { cleanup-saved-temps } } */
17212
17213=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c'
17214--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c 2010-07-29 15:38:15 +0000
17215+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c 2010-08-20 13:27:11 +0000
17216@@ -17,5 +17,5 @@
17217 out_poly8x16x2_t = vuzpq_p8 (arg0_poly8x16_t, arg1_poly8x16_t);
17218 }
17219
17220-/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17221+/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17222 /* { dg-final { cleanup-saved-temps } } */
17223
17224=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c'
17225--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c 2010-07-29 15:38:15 +0000
17226+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c 2010-08-20 13:27:11 +0000
17227@@ -17,5 +17,5 @@
17228 out_int16x8x2_t = vuzpq_s16 (arg0_int16x8_t, arg1_int16x8_t);
17229 }
17230
17231-/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17232+/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17233 /* { dg-final { cleanup-saved-temps } } */
17234
17235=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c'
17236--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c 2010-07-29 15:38:15 +0000
17237+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c 2010-08-20 13:27:11 +0000
17238@@ -17,5 +17,5 @@
17239 out_int32x4x2_t = vuzpq_s32 (arg0_int32x4_t, arg1_int32x4_t);
17240 }
17241
17242-/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17243+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17244 /* { dg-final { cleanup-saved-temps } } */
17245
17246=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c'
17247--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c 2010-07-29 15:38:15 +0000
17248+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c 2010-08-20 13:27:11 +0000
17249@@ -17,5 +17,5 @@
17250 out_int8x16x2_t = vuzpq_s8 (arg0_int8x16_t, arg1_int8x16_t);
17251 }
17252
17253-/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17254+/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17255 /* { dg-final { cleanup-saved-temps } } */
17256
17257=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c'
17258--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c 2010-07-29 15:38:15 +0000
17259+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c 2010-08-20 13:27:11 +0000
17260@@ -17,5 +17,5 @@
17261 out_uint16x8x2_t = vuzpq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
17262 }
17263
17264-/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17265+/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17266 /* { dg-final { cleanup-saved-temps } } */
17267
17268=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c'
17269--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c 2010-07-29 15:38:15 +0000
17270+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c 2010-08-20 13:27:11 +0000
17271@@ -17,5 +17,5 @@
17272 out_uint32x4x2_t = vuzpq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
17273 }
17274
17275-/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17276+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17277 /* { dg-final { cleanup-saved-temps } } */
17278
17279=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c'
17280--- old/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c 2010-07-29 15:38:15 +0000
17281+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c 2010-08-20 13:27:11 +0000
17282@@ -17,5 +17,5 @@
17283 out_uint8x16x2_t = vuzpq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
17284 }
17285
17286-/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17287+/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17288 /* { dg-final { cleanup-saved-temps } } */
17289
17290=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpf32.c'
17291--- old/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c 2010-07-29 15:38:15 +0000
17292+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c 2010-08-20 13:27:11 +0000
17293@@ -17,5 +17,5 @@
17294 out_float32x2x2_t = vuzp_f32 (arg0_float32x2_t, arg1_float32x2_t);
17295 }
17296
17297-/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17298+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17299 /* { dg-final { cleanup-saved-temps } } */
17300
17301=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpp16.c'
17302--- old/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c 2010-07-29 15:38:15 +0000
17303+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c 2010-08-20 13:27:11 +0000
17304@@ -17,5 +17,5 @@
17305 out_poly16x4x2_t = vuzp_p16 (arg0_poly16x4_t, arg1_poly16x4_t);
17306 }
17307
17308-/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17309+/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17310 /* { dg-final { cleanup-saved-temps } } */
17311
17312=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpp8.c'
17313--- old/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c 2010-07-29 15:38:15 +0000
17314+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c 2010-08-20 13:27:11 +0000
17315@@ -17,5 +17,5 @@
17316 out_poly8x8x2_t = vuzp_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
17317 }
17318
17319-/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17320+/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17321 /* { dg-final { cleanup-saved-temps } } */
17322
17323=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzps16.c'
17324--- old/gcc/testsuite/gcc.target/arm/neon/vuzps16.c 2010-07-29 15:38:15 +0000
17325+++ new/gcc/testsuite/gcc.target/arm/neon/vuzps16.c 2010-08-20 13:27:11 +0000
17326@@ -17,5 +17,5 @@
17327 out_int16x4x2_t = vuzp_s16 (arg0_int16x4_t, arg1_int16x4_t);
17328 }
17329
17330-/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17331+/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17332 /* { dg-final { cleanup-saved-temps } } */
17333
17334=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzps32.c'
17335--- old/gcc/testsuite/gcc.target/arm/neon/vuzps32.c 2010-07-29 15:38:15 +0000
17336+++ new/gcc/testsuite/gcc.target/arm/neon/vuzps32.c 2010-08-20 13:27:11 +0000
17337@@ -17,5 +17,5 @@
17338 out_int32x2x2_t = vuzp_s32 (arg0_int32x2_t, arg1_int32x2_t);
17339 }
17340
17341-/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17342+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17343 /* { dg-final { cleanup-saved-temps } } */
17344
17345=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzps8.c'
17346--- old/gcc/testsuite/gcc.target/arm/neon/vuzps8.c 2010-07-29 15:38:15 +0000
17347+++ new/gcc/testsuite/gcc.target/arm/neon/vuzps8.c 2010-08-20 13:27:11 +0000
17348@@ -17,5 +17,5 @@
17349 out_int8x8x2_t = vuzp_s8 (arg0_int8x8_t, arg1_int8x8_t);
17350 }
17351
17352-/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17353+/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17354 /* { dg-final { cleanup-saved-temps } } */
17355
17356=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpu16.c'
17357--- old/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c 2010-07-29 15:38:15 +0000
17358+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c 2010-08-20 13:27:11 +0000
17359@@ -17,5 +17,5 @@
17360 out_uint16x4x2_t = vuzp_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
17361 }
17362
17363-/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17364+/* { dg-final { scan-assembler "vuzp\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17365 /* { dg-final { cleanup-saved-temps } } */
17366
17367=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpu32.c'
17368--- old/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c 2010-07-29 15:38:15 +0000
17369+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c 2010-08-20 13:27:11 +0000
17370@@ -17,5 +17,5 @@
17371 out_uint32x2x2_t = vuzp_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
17372 }
17373
17374-/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17375+/* { dg-final { scan-assembler "vuzp\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17376 /* { dg-final { cleanup-saved-temps } } */
17377
17378=== modified file 'gcc/testsuite/gcc.target/arm/neon/vuzpu8.c'
17379--- old/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c 2010-07-29 15:38:15 +0000
17380+++ new/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c 2010-08-20 13:27:11 +0000
17381@@ -17,5 +17,5 @@
17382 out_uint8x8x2_t = vuzp_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
17383 }
17384
17385-/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17386+/* { dg-final { scan-assembler "vuzp\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17387 /* { dg-final { cleanup-saved-temps } } */
17388
17389=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQf32.c'
17390--- old/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c 2010-07-29 15:38:15 +0000
17391+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c 2010-08-20 13:27:11 +0000
17392@@ -17,5 +17,5 @@
17393 out_float32x4x2_t = vzipq_f32 (arg0_float32x4_t, arg1_float32x4_t);
17394 }
17395
17396-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17397+/* { dg-final { scan-assembler "vzip\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17398 /* { dg-final { cleanup-saved-temps } } */
17399
17400=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQp16.c'
17401--- old/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c 2010-07-29 15:38:15 +0000
17402+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c 2010-08-20 13:27:11 +0000
17403@@ -17,5 +17,5 @@
17404 out_poly16x8x2_t = vzipq_p16 (arg0_poly16x8_t, arg1_poly16x8_t);
17405 }
17406
17407-/* { dg-final { scan-assembler "vzip\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17408+/* { dg-final { scan-assembler "vzip\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17409 /* { dg-final { cleanup-saved-temps } } */
17410
17411=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQp8.c'
17412--- old/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c 2010-07-29 15:38:15 +0000
17413+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c 2010-08-20 13:27:11 +0000
17414@@ -17,5 +17,5 @@
17415 out_poly8x16x2_t = vzipq_p8 (arg0_poly8x16_t, arg1_poly8x16_t);
17416 }
17417
17418-/* { dg-final { scan-assembler "vzip\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17419+/* { dg-final { scan-assembler "vzip\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17420 /* { dg-final { cleanup-saved-temps } } */
17421
17422=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQs16.c'
17423--- old/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c 2010-07-29 15:38:15 +0000
17424+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c 2010-08-20 13:27:11 +0000
17425@@ -17,5 +17,5 @@
17426 out_int16x8x2_t = vzipq_s16 (arg0_int16x8_t, arg1_int16x8_t);
17427 }
17428
17429-/* { dg-final { scan-assembler "vzip\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17430+/* { dg-final { scan-assembler "vzip\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17431 /* { dg-final { cleanup-saved-temps } } */
17432
17433=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQs32.c'
17434--- old/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c 2010-07-29 15:38:15 +0000
17435+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c 2010-08-20 13:27:11 +0000
17436@@ -17,5 +17,5 @@
17437 out_int32x4x2_t = vzipq_s32 (arg0_int32x4_t, arg1_int32x4_t);
17438 }
17439
17440-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17441+/* { dg-final { scan-assembler "vzip\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17442 /* { dg-final { cleanup-saved-temps } } */
17443
17444=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQs8.c'
17445--- old/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c 2010-07-29 15:38:15 +0000
17446+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c 2010-08-20 13:27:11 +0000
17447@@ -17,5 +17,5 @@
17448 out_int8x16x2_t = vzipq_s8 (arg0_int8x16_t, arg1_int8x16_t);
17449 }
17450
17451-/* { dg-final { scan-assembler "vzip\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17452+/* { dg-final { scan-assembler "vzip\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17453 /* { dg-final { cleanup-saved-temps } } */
17454
17455=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQu16.c'
17456--- old/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c 2010-07-29 15:38:15 +0000
17457+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c 2010-08-20 13:27:11 +0000
17458@@ -17,5 +17,5 @@
17459 out_uint16x8x2_t = vzipq_u16 (arg0_uint16x8_t, arg1_uint16x8_t);
17460 }
17461
17462-/* { dg-final { scan-assembler "vzip\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17463+/* { dg-final { scan-assembler "vzip\.16\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17464 /* { dg-final { cleanup-saved-temps } } */
17465
17466=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQu32.c'
17467--- old/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c 2010-07-29 15:38:15 +0000
17468+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c 2010-08-20 13:27:11 +0000
17469@@ -17,5 +17,5 @@
17470 out_uint32x4x2_t = vzipq_u32 (arg0_uint32x4_t, arg1_uint32x4_t);
17471 }
17472
17473-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17474+/* { dg-final { scan-assembler "vzip\.32\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17475 /* { dg-final { cleanup-saved-temps } } */
17476
17477=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipQu8.c'
17478--- old/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c 2010-07-29 15:38:15 +0000
17479+++ new/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c 2010-08-20 13:27:11 +0000
17480@@ -17,5 +17,5 @@
17481 out_uint8x16x2_t = vzipq_u8 (arg0_uint8x16_t, arg1_uint8x16_t);
17482 }
17483
17484-/* { dg-final { scan-assembler "vzip\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17485+/* { dg-final { scan-assembler "vzip\.8\[ \]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17486 /* { dg-final { cleanup-saved-temps } } */
17487
17488=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipf32.c'
17489--- old/gcc/testsuite/gcc.target/arm/neon/vzipf32.c 2010-07-29 15:38:15 +0000
17490+++ new/gcc/testsuite/gcc.target/arm/neon/vzipf32.c 2010-08-20 13:27:11 +0000
17491@@ -17,5 +17,5 @@
17492 out_float32x2x2_t = vzip_f32 (arg0_float32x2_t, arg1_float32x2_t);
17493 }
17494
17495-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17496+/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17497 /* { dg-final { cleanup-saved-temps } } */
17498
17499=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipp16.c'
17500--- old/gcc/testsuite/gcc.target/arm/neon/vzipp16.c 2010-07-29 15:38:15 +0000
17501+++ new/gcc/testsuite/gcc.target/arm/neon/vzipp16.c 2010-08-20 13:27:11 +0000
17502@@ -17,5 +17,5 @@
17503 out_poly16x4x2_t = vzip_p16 (arg0_poly16x4_t, arg1_poly16x4_t);
17504 }
17505
17506-/* { dg-final { scan-assembler "vzip\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17507+/* { dg-final { scan-assembler "vzip\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17508 /* { dg-final { cleanup-saved-temps } } */
17509
17510=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipp8.c'
17511--- old/gcc/testsuite/gcc.target/arm/neon/vzipp8.c 2010-07-29 15:38:15 +0000
17512+++ new/gcc/testsuite/gcc.target/arm/neon/vzipp8.c 2010-08-20 13:27:11 +0000
17513@@ -17,5 +17,5 @@
17514 out_poly8x8x2_t = vzip_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
17515 }
17516
17517-/* { dg-final { scan-assembler "vzip\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17518+/* { dg-final { scan-assembler "vzip\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17519 /* { dg-final { cleanup-saved-temps } } */
17520
17521=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzips16.c'
17522--- old/gcc/testsuite/gcc.target/arm/neon/vzips16.c 2010-07-29 15:38:15 +0000
17523+++ new/gcc/testsuite/gcc.target/arm/neon/vzips16.c 2010-08-20 13:27:11 +0000
17524@@ -17,5 +17,5 @@
17525 out_int16x4x2_t = vzip_s16 (arg0_int16x4_t, arg1_int16x4_t);
17526 }
17527
17528-/* { dg-final { scan-assembler "vzip\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17529+/* { dg-final { scan-assembler "vzip\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17530 /* { dg-final { cleanup-saved-temps } } */
17531
17532=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzips32.c'
17533--- old/gcc/testsuite/gcc.target/arm/neon/vzips32.c 2010-07-29 15:38:15 +0000
17534+++ new/gcc/testsuite/gcc.target/arm/neon/vzips32.c 2010-08-20 13:27:11 +0000
17535@@ -17,5 +17,5 @@
17536 out_int32x2x2_t = vzip_s32 (arg0_int32x2_t, arg1_int32x2_t);
17537 }
17538
17539-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17540+/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17541 /* { dg-final { cleanup-saved-temps } } */
17542
17543=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzips8.c'
17544--- old/gcc/testsuite/gcc.target/arm/neon/vzips8.c 2010-07-29 15:38:15 +0000
17545+++ new/gcc/testsuite/gcc.target/arm/neon/vzips8.c 2010-08-20 13:27:11 +0000
17546@@ -17,5 +17,5 @@
17547 out_int8x8x2_t = vzip_s8 (arg0_int8x8_t, arg1_int8x8_t);
17548 }
17549
17550-/* { dg-final { scan-assembler "vzip\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17551+/* { dg-final { scan-assembler "vzip\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17552 /* { dg-final { cleanup-saved-temps } } */
17553
17554=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipu16.c'
17555--- old/gcc/testsuite/gcc.target/arm/neon/vzipu16.c 2010-07-29 15:38:15 +0000
17556+++ new/gcc/testsuite/gcc.target/arm/neon/vzipu16.c 2010-08-20 13:27:11 +0000
17557@@ -17,5 +17,5 @@
17558 out_uint16x4x2_t = vzip_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
17559 }
17560
17561-/* { dg-final { scan-assembler "vzip\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17562+/* { dg-final { scan-assembler "vzip\.16\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17563 /* { dg-final { cleanup-saved-temps } } */
17564
17565=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipu32.c'
17566--- old/gcc/testsuite/gcc.target/arm/neon/vzipu32.c 2010-07-29 15:38:15 +0000
17567+++ new/gcc/testsuite/gcc.target/arm/neon/vzipu32.c 2010-08-20 13:27:11 +0000
17568@@ -17,5 +17,5 @@
17569 out_uint32x2x2_t = vzip_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
17570 }
17571
17572-/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17573+/* { dg-final { scan-assembler "vzip\.32\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17574 /* { dg-final { cleanup-saved-temps } } */
17575
17576=== modified file 'gcc/testsuite/gcc.target/arm/neon/vzipu8.c'
17577--- old/gcc/testsuite/gcc.target/arm/neon/vzipu8.c 2010-07-29 15:38:15 +0000
17578+++ new/gcc/testsuite/gcc.target/arm/neon/vzipu8.c 2010-08-20 13:27:11 +0000
17579@@ -17,5 +17,5 @@
17580 out_uint8x8x2_t = vzip_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
17581 }
17582
17583-/* { dg-final { scan-assembler "vzip\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
17584+/* { dg-final { scan-assembler "vzip\.8\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@.*\)?\n" } } */
17585 /* { dg-final { cleanup-saved-temps } } */
17586
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch
new file mode 100644
index 000000000..7003cf837
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99363.patch
@@ -0,0 +1,95 @@
12010-08-05 Jie Zhang <jie@codesourcery.com>
2
3 Issue #7257
4
5 Backport from mainline:
6
7 gcc/
8 2010-08-05 Jie Zhang <jie@codesourcery.com>
9 PR tree-optimization/45144
10 * tree-sra.c (type_consists_of_records_p): Return false
11 if the record contains bit-field.
12
13 gcc/testsuite/
14 2010-08-05 Jie Zhang <jie@codesourcery.com>
15 PR tree-optimization/45144
16 * gcc.dg/tree-ssa/pr45144.c: New test.
17
18 2010-08-04 Mark Mitchell <mark@codesourcery.com>
19
20 Backport from mainline:
21
22=== added file 'gcc/testsuite/gcc.dg/tree-ssa/pr45144.c'
23--- old/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c 1970-01-01 00:00:00 +0000
24+++ new/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c 2010-08-20 16:04:44 +0000
25@@ -0,0 +1,46 @@
26+/* { dg-do compile } */
27+/* { dg-options "-O2 -fdump-tree-optimized" } */
28+
29+void baz (unsigned);
30+
31+extern unsigned buf[];
32+
33+struct A
34+{
35+ unsigned a1:10;
36+ unsigned a2:3;
37+ unsigned:19;
38+};
39+
40+union TMP
41+{
42+ struct A a;
43+ unsigned int b;
44+};
45+
46+static unsigned
47+foo (struct A *p)
48+{
49+ union TMP t;
50+ struct A x;
51+
52+ x = *p;
53+ t.a = x;
54+ return t.b;
55+}
56+
57+void
58+bar (unsigned orig, unsigned *new)
59+{
60+ struct A a;
61+ union TMP s;
62+
63+ s.b = orig;
64+ a = s.a;
65+ if (a.a1)
66+ baz (a.a2);
67+ *new = foo (&a);
68+}
69+
70+/* { dg-final { scan-tree-dump "x = a;" "optimized"} } */
71+/* { dg-final { cleanup-tree-dump "optimized" } } */
72
73=== modified file 'gcc/tree-sra.c'
74--- old/gcc/tree-sra.c 2010-08-10 13:31:21 +0000
75+++ new/gcc/tree-sra.c 2010-08-20 16:04:44 +0000
76@@ -805,7 +805,7 @@
77 /* Return true iff TYPE is a RECORD_TYPE with fields that are either of gimple
78 register types or (recursively) records with only these two kinds of fields.
79 It also returns false if any of these records has a zero-size field as its
80- last field. */
81+ last field or has a bit-field. */
82
83 static bool
84 type_consists_of_records_p (tree type)
85@@ -821,6 +821,9 @@
86 {
87 tree ft = TREE_TYPE (fld);
88
89+ if (DECL_BIT_FIELD (fld))
90+ return false;
91+
92 if (!is_gimple_reg_type (ft)
93 && !type_consists_of_records_p (ft))
94 return false;
95
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99364.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99364.patch
new file mode 100644
index 000000000..8ae781eca
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99364.patch
@@ -0,0 +1,511 @@
12010-08-05 Julian Brown <julian@codesourcery.com>
2
3 Backport from mainline (candidate patch):
4
5 gcc/
6 * expr.c (expand_assignment): Add assertion to prevent emitting null
7 rtx for movmisalign pattern.
8 (expand_expr_real_1): Likewise.
9 * config/arm/arm.c (arm_builtin_support_vector_misalignment): New.
10 (TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT): New. Use above.
11 (arm_vector_alignment_reachable): New.
12 (TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE): New. Use above.
13 (neon_vector_mem_operand): Disallow PRE_DEC for misaligned loads.
14 (arm_print_operand): Include alignment qualifier in %A.
15 * config/arm/neon.md (UNSPEC_MISALIGNED_ACCESS): New constant.
16 (movmisalign<mode>): New expander.
17 (movmisalign<mode>_neon_store, movmisalign<mode>_neon_load): New
18 insn patterns.
19
20 gcc/testsuite/
21 * gcc.dg/vect/vect-42.c: Use vect_element_align instead of
22 vect_hw_misalign.
23 * gcc.dg/vect/vect-60.c: Likewise.
24 * gcc.dg/vect/vect-56.c: Likewise.
25 * gcc.dg/vect/vect-93.c: Likewise.
26 * gcc.dg/vect/no-scevccp-outer-8.c: Likewise.
27 * gcc.dg/vect/vect-95.c: Likewise.
28 * gcc.dg/vect/vect-96.c: Likewise.
29 * gcc.dg/vect/vect-outer-5.c: Use quad-word vectors when available.
30 * gcc.dg/vect/slp-25.c: Likewise.
31 * gcc.dg/vect/slp-3.c: Likewise.
32 * gcc.dg/vect/vect-multitypes-1.c: Likewise.
33 * gcc.dg/vect/no-vfa-pr29145.c: Likewise.
34 * gcc.dg/vect/vect-multitypes-4.c: Likewise. Use vect_element_align.
35 * gcc.dg/vect/vect-109.c: Likewise.
36 * gcc.dg/vect/vect-peel-1.c: Likewise.
37 * gcc.dg/vect/vect-peel-2.c: Likewise.
38 * lib/target-supports.exp
39 (check_effective_target_arm_vect_no_misalign): New.
40 (check_effective_target_vect_no_align): Use above.
41 (check_effective_target_vect_element_align): New.
42 (add_options_for_quad_vectors): New.
43
44 2010-08-05 Jie Zhang <jie@codesourcery.com>
45
46 Issue #7257
47
48=== modified file 'gcc/config/arm/arm.c'
49--- old/gcc/config/arm/arm.c 2010-08-16 09:41:58 +0000
50+++ new/gcc/config/arm/arm.c 2010-08-20 16:21:01 +0000
51@@ -228,6 +228,11 @@
52 static void arm_trampoline_init (rtx, tree, rtx);
53 static rtx arm_trampoline_adjust_address (rtx);
54 static rtx arm_pic_static_addr (rtx orig, rtx reg);
55+static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
56+static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
57+ const_tree type,
58+ int misalignment,
59+ bool is_packed);
60
61
62 /* Table of machine attributes. */
63@@ -514,6 +519,14 @@
64 #undef TARGET_CAN_ELIMINATE
65 #define TARGET_CAN_ELIMINATE arm_can_eliminate
66
67+#undef TARGET_VECTOR_ALIGNMENT_REACHABLE
68+#define TARGET_VECTOR_ALIGNMENT_REACHABLE \
69+ arm_vector_alignment_reachable
70+
71+#undef TARGET_SUPPORT_VECTOR_MISALIGNMENT
72+#define TARGET_SUPPORT_VECTOR_MISALIGNMENT \
73+ arm_builtin_support_vector_misalignment
74+
75 struct gcc_target targetm = TARGET_INITIALIZER;
76
77 /* Obstack for minipool constant handling. */
78@@ -9084,7 +9097,8 @@
79 return arm_address_register_rtx_p (ind, 0);
80
81 /* Allow post-increment with Neon registers. */
82- if (type != 1 && (GET_CODE (ind) == POST_INC || GET_CODE (ind) == PRE_DEC))
83+ if ((type != 1 && GET_CODE (ind) == POST_INC)
84+ || (type == 0 && GET_CODE (ind) == PRE_DEC))
85 return arm_address_register_rtx_p (XEXP (ind, 0), 0);
86
87 /* FIXME: vld1 allows register post-modify. */
88@@ -16365,6 +16379,8 @@
89 {
90 rtx addr;
91 bool postinc = FALSE;
92+ unsigned align, modesize, align_bits;
93+
94 gcc_assert (GET_CODE (x) == MEM);
95 addr = XEXP (x, 0);
96 if (GET_CODE (addr) == POST_INC)
97@@ -16372,7 +16388,29 @@
98 postinc = 1;
99 addr = XEXP (addr, 0);
100 }
101- asm_fprintf (stream, "[%r]", REGNO (addr));
102+ asm_fprintf (stream, "[%r", REGNO (addr));
103+
104+ /* We know the alignment of this access, so we can emit a hint in the
105+ instruction (for some alignments) as an aid to the memory subsystem
106+ of the target. */
107+ align = MEM_ALIGN (x) >> 3;
108+ modesize = GET_MODE_SIZE (GET_MODE (x));
109+
110+ /* Only certain alignment specifiers are supported by the hardware. */
111+ if (modesize == 16 && (align % 32) == 0)
112+ align_bits = 256;
113+ else if ((modesize == 8 || modesize == 16) && (align % 16) == 0)
114+ align_bits = 128;
115+ else if ((align % 8) == 0)
116+ align_bits = 64;
117+ else
118+ align_bits = 0;
119+
120+ if (align_bits != 0)
121+ asm_fprintf (stream, ", :%d", align_bits);
122+
123+ asm_fprintf (stream, "]");
124+
125 if (postinc)
126 fputs("!", stream);
127 }
128@@ -22450,4 +22488,43 @@
129 return !TARGET_THUMB1;
130 }
131
132+static bool
133+arm_vector_alignment_reachable (const_tree type, bool is_packed)
134+{
135+ /* Vectors which aren't in packed structures will not be less aligned than
136+ the natural alignment of their element type, so this is safe. */
137+ if (TARGET_NEON && !BYTES_BIG_ENDIAN)
138+ return !is_packed;
139+
140+ return default_builtin_vector_alignment_reachable (type, is_packed);
141+}
142+
143+static bool
144+arm_builtin_support_vector_misalignment (enum machine_mode mode,
145+ const_tree type, int misalignment,
146+ bool is_packed)
147+{
148+ if (TARGET_NEON && !BYTES_BIG_ENDIAN)
149+ {
150+ HOST_WIDE_INT align = TYPE_ALIGN_UNIT (type);
151+
152+ if (is_packed)
153+ return align == 1;
154+
155+ /* If the misalignment is unknown, we should be able to handle the access
156+ so long as it is not to a member of a packed data structure. */
157+ if (misalignment == -1)
158+ return true;
159+
160+ /* Return true if the misalignment is a multiple of the natural alignment
161+ of the vector's element type. This is probably always going to be
162+ true in practice, since we've already established that this isn't a
163+ packed access. */
164+ return ((misalignment % align) == 0);
165+ }
166+
167+ return default_builtin_support_vector_misalignment (mode, type, misalignment,
168+ is_packed);
169+}
170+
171 #include "gt-arm.h"
172
173=== modified file 'gcc/config/arm/neon.md'
174--- old/gcc/config/arm/neon.md 2010-08-13 11:40:17 +0000
175+++ new/gcc/config/arm/neon.md 2010-08-20 16:21:01 +0000
176@@ -140,7 +140,8 @@
177 (UNSPEC_VUZP1 201)
178 (UNSPEC_VUZP2 202)
179 (UNSPEC_VZIP1 203)
180- (UNSPEC_VZIP2 204)])
181+ (UNSPEC_VZIP2 204)
182+ (UNSPEC_MISALIGNED_ACCESS 205)])
183
184 ;; Double-width vector modes.
185 (define_mode_iterator VD [V8QI V4HI V2SI V2SF])
186@@ -660,6 +661,52 @@
187 neon_disambiguate_copy (operands, dest, src, 4);
188 })
189
190+(define_expand "movmisalign<mode>"
191+ [(set (match_operand:VDQX 0 "nonimmediate_operand" "")
192+ (unspec:VDQX [(match_operand:VDQX 1 "general_operand" "")]
193+ UNSPEC_MISALIGNED_ACCESS))]
194+ "TARGET_NEON && !BYTES_BIG_ENDIAN"
195+{
196+ /* This pattern is not permitted to fail during expansion: if both arguments
197+ are non-registers (e.g. memory := constant, which can be created by the
198+ auto-vectorizer), force operand 1 into a register. */
199+ if (!s_register_operand (operands[0], <MODE>mode)
200+ && !s_register_operand (operands[1], <MODE>mode))
201+ operands[1] = force_reg (<MODE>mode, operands[1]);
202+})
203+
204+(define_insn "*movmisalign<mode>_neon_store"
205+ [(set (match_operand:VDX 0 "memory_operand" "=Um")
206+ (unspec:VDX [(match_operand:VDX 1 "s_register_operand" " w")]
207+ UNSPEC_MISALIGNED_ACCESS))]
208+ "TARGET_NEON && !BYTES_BIG_ENDIAN"
209+ "vst1.<V_sz_elem>\t{%P1}, %A0"
210+ [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
211+
212+(define_insn "*movmisalign<mode>_neon_load"
213+ [(set (match_operand:VDX 0 "s_register_operand" "=w")
214+ (unspec:VDX [(match_operand:VDX 1 "memory_operand" " Um")]
215+ UNSPEC_MISALIGNED_ACCESS))]
216+ "TARGET_NEON && !BYTES_BIG_ENDIAN"
217+ "vld1.<V_sz_elem>\t{%P0}, %A1"
218+ [(set_attr "neon_type" "neon_vld1_1_2_regs")])
219+
220+(define_insn "*movmisalign<mode>_neon_store"
221+ [(set (match_operand:VQX 0 "memory_operand" "=Um")
222+ (unspec:VQX [(match_operand:VQX 1 "s_register_operand" " w")]
223+ UNSPEC_MISALIGNED_ACCESS))]
224+ "TARGET_NEON && !BYTES_BIG_ENDIAN"
225+ "vst1.<V_sz_elem>\t{%q1}, %A0"
226+ [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")])
227+
228+(define_insn "*movmisalign<mode>_neon_load"
229+ [(set (match_operand:VQX 0 "s_register_operand" "=w")
230+ (unspec:VQX [(match_operand:VQX 1 "memory_operand" " Um")]
231+ UNSPEC_MISALIGNED_ACCESS))]
232+ "TARGET_NEON && !BYTES_BIG_ENDIAN"
233+ "vld1.<V_sz_elem>\t{%q0}, %A1"
234+ [(set_attr "neon_type" "neon_vld1_1_2_regs")])
235+
236 (define_insn "vec_set<mode>_internal"
237 [(set (match_operand:VD 0 "s_register_operand" "=w")
238 (vec_merge:VD
239
240=== modified file 'gcc/expr.c'
241--- old/gcc/expr.c 2010-08-12 13:51:16 +0000
242+++ new/gcc/expr.c 2010-08-20 16:21:01 +0000
243@@ -4362,7 +4362,10 @@
244 && op_mode1 != VOIDmode)
245 reg = copy_to_mode_reg (op_mode1, reg);
246
247- insn = GEN_FCN (icode) (mem, reg);
248+ insn = GEN_FCN (icode) (mem, reg);
249+ /* The movmisalign<mode> pattern cannot fail, else the assignment would
250+ silently be omitted. */
251+ gcc_assert (insn != NULL_RTX);
252 emit_insn (insn);
253 return;
254 }
255@@ -8742,6 +8745,7 @@
256
257 /* Nor can the insn generator. */
258 insn = GEN_FCN (icode) (reg, temp);
259+ gcc_assert (insn != NULL_RTX);
260 emit_insn (insn);
261
262 return reg;
263
264=== modified file 'gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c'
265--- old/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c 2009-06-05 14:28:50 +0000
266+++ new/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c 2010-08-20 16:21:01 +0000
267@@ -46,5 +46,5 @@
268 return 0;
269 }
270
271-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! { vect_hw_misalign } } } } } */
272+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! { vect_element_align } } } } } */
273 /* { dg-final { cleanup-tree-dump "vect" } } */
274
275=== modified file 'gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c'
276--- old/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c 2008-08-18 19:36:03 +0000
277+++ new/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c 2010-08-20 16:21:01 +0000
278@@ -1,4 +1,5 @@
279 /* { dg-require-effective-target vect_int } */
280+/* { dg-add-options quad_vectors } */
281
282 #include <stdarg.h>
283 #include "tree-vect.h"
284
285=== modified file 'gcc/testsuite/gcc.dg/vect/slp-25.c'
286--- old/gcc/testsuite/gcc.dg/vect/slp-25.c 2009-10-27 11:46:07 +0000
287+++ new/gcc/testsuite/gcc.dg/vect/slp-25.c 2010-08-20 16:21:01 +0000
288@@ -1,4 +1,5 @@
289 /* { dg-require-effective-target vect_int } */
290+/* { dg-add-options quad_vectors } */
291
292 #include <stdarg.h>
293 #include "tree-vect.h"
294
295=== modified file 'gcc/testsuite/gcc.dg/vect/slp-3.c'
296--- old/gcc/testsuite/gcc.dg/vect/slp-3.c 2009-05-12 13:05:28 +0000
297+++ new/gcc/testsuite/gcc.dg/vect/slp-3.c 2010-08-20 16:21:01 +0000
298@@ -1,4 +1,5 @@
299 /* { dg-require-effective-target vect_int } */
300+/* { dg-add-options quad_vectors } */
301
302 #include <stdarg.h>
303 #include <stdio.h>
304
305=== modified file 'gcc/testsuite/gcc.dg/vect/vect-109.c'
306--- old/gcc/testsuite/gcc.dg/vect/vect-109.c 2010-07-10 20:38:32 +0000
307+++ new/gcc/testsuite/gcc.dg/vect/vect-109.c 2010-08-20 16:21:01 +0000
308@@ -1,4 +1,5 @@
309 /* { dg-require-effective-target vect_int } */
310+/* { dg-add-options quad_vectors } */
311
312 #include <stdarg.h>
313 #include "tree-vect.h"
314@@ -72,8 +73,8 @@
315 return 0;
316 }
317
318-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_hw_misalign } } } */
319-/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" { xfail vect_hw_misalign } } } */
320-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 10 "vect" { target vect_hw_misalign } } } */
321+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_element_align } } } */
322+/* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" { xfail vect_element_align } } } */
323+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 10 "vect" { target vect_element_align } } } */
324 /* { dg-final { cleanup-tree-dump "vect" } } */
325
326
327=== modified file 'gcc/testsuite/gcc.dg/vect/vect-42.c'
328--- old/gcc/testsuite/gcc.dg/vect/vect-42.c 2009-11-04 10:22:22 +0000
329+++ new/gcc/testsuite/gcc.dg/vect/vect-42.c 2010-08-20 16:21:01 +0000
330@@ -64,7 +64,7 @@
331
332 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
333 /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target vect_no_align } } } */
334-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { { ! vector_alignment_reachable } && { ! vect_hw_misalign } } } } } */
335+/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { { ! vector_alignment_reachable } && { ! vect_element_align } } } } } */
336 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || { ! vector_alignment_reachable } } } } } */
337 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || { ! vector_alignment_reachable } } } } } */
338 /* { dg-final { cleanup-tree-dump "vect" } } */
339
340=== modified file 'gcc/testsuite/gcc.dg/vect/vect-95.c'
341--- old/gcc/testsuite/gcc.dg/vect/vect-95.c 2009-10-27 11:46:07 +0000
342+++ new/gcc/testsuite/gcc.dg/vect/vect-95.c 2010-08-20 16:21:01 +0000
343@@ -56,14 +56,14 @@
344 }
345
346 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
347-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail {vect_hw_misalign} } } } */
348+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail {vect_element_align} } } } */
349
350 /* For targets that support unaligned loads we version for the two unaligned
351 stores and generate misaligned accesses for the loads. For targets that
352 don't support unaligned loads we version for all four accesses. */
353
354-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_hw_misalign} } } } */
355-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
356+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align} } } } */
357+/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
358 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target vect_no_align } } } */
359 /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target vect_no_align } } } */
360 /* { dg-final { cleanup-tree-dump "vect" } } */
361
362=== modified file 'gcc/testsuite/gcc.dg/vect/vect-96.c'
363--- old/gcc/testsuite/gcc.dg/vect/vect-96.c 2009-10-27 11:46:07 +0000
364+++ new/gcc/testsuite/gcc.dg/vect/vect-96.c 2010-08-20 16:21:01 +0000
365@@ -45,5 +45,5 @@
366 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
367 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_no_align} && vector_alignment_reachable } } } } */
368 /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || {! vector_alignment_reachable} } } } } */
369-/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align || { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } } */
370+/* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align || { {! vector_alignment_reachable} && {! vect_element_align} } } } } } */
371 /* { dg-final { cleanup-tree-dump "vect" } } */
372
373=== modified file 'gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c'
374--- old/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c 2009-10-27 11:46:07 +0000
375+++ new/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c 2010-08-20 16:21:01 +0000
376@@ -1,4 +1,5 @@
377 /* { dg-require-effective-target vect_int } */
378+/* { dg-add-options quad_vectors } */
379
380 #include <stdarg.h>
381 #include "tree-vect.h"
382@@ -78,11 +79,11 @@
383 return 0;
384 }
385
386-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail {! vect_hw_misalign} } } } */
387-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
388-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vect_hw_misalign} } } } */
389-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
390+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail {! vect_element_align} } } } */
391+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
392+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vect_element_align} } } } */
393+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
394 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail *-*-* } } } */
395-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
396+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
397 /* { dg-final { cleanup-tree-dump "vect" } } */
398
399
400=== modified file 'gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c'
401--- old/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c 2009-10-27 11:46:07 +0000
402+++ new/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c 2010-08-20 16:21:01 +0000
403@@ -1,4 +1,5 @@
404 /* { dg-require-effective-target vect_int } */
405+/* { dg-add-options quad_vectors } */
406
407 #include <stdarg.h>
408 #include "tree-vect.h"
409@@ -85,11 +86,11 @@
410 return 0;
411 }
412
413-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail {! vect_hw_misalign} } } } */
414-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
415-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vect_hw_misalign} } } } */
416-/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
417+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail {! vect_element_align} } } } */
418+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
419+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {! vect_element_align} } } } */
420+/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || vect_element_align } } } } */
421 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 8 "vect" { xfail *-*-* } } } */
422-/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || vect_hw_misalign } } } } */
423+/* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || vect_element_align } } } } */
424 /* { dg-final { cleanup-tree-dump "vect" } } */
425
426
427=== modified file 'gcc/testsuite/gcc.dg/vect/vect-outer-5.c'
428--- old/gcc/testsuite/gcc.dg/vect/vect-outer-5.c 2009-05-08 12:39:01 +0000
429+++ new/gcc/testsuite/gcc.dg/vect/vect-outer-5.c 2010-08-20 16:21:01 +0000
430@@ -1,4 +1,5 @@
431 /* { dg-require-effective-target vect_float } */
432+/* { dg-add-options quad_vectors } */
433
434 #include <stdio.h>
435 #include <stdarg.h>
436
437=== modified file 'gcc/testsuite/lib/target-supports.exp'
438--- old/gcc/testsuite/lib/target-supports.exp 2010-08-10 13:31:21 +0000
439+++ new/gcc/testsuite/lib/target-supports.exp 2010-08-20 16:21:01 +0000
440@@ -1642,6 +1642,18 @@
441 }]
442 }
443
444+# Return 1 if this is an ARM target that only supports aligned vector accesses
445+proc check_effective_target_arm_vect_no_misalign { } {
446+ return [check_no_compiler_messages arm_vect_no_misalign assembly {
447+ #if !defined(__arm__) \
448+ || (defined(__ARMEL__) \
449+ && (!defined(__thumb__) || defined(__thumb2__)))
450+ #error FOO
451+ #endif
452+ }]
453+}
454+
455+
456 # Return 1 if this is an ARM target supporting -mfpu=vfp
457 # -mfloat-abi=softfp. Some multilibs may be incompatible with these
458 # options.
459@@ -2547,7 +2559,7 @@
460 if { [istarget mipsisa64*-*-*]
461 || [istarget sparc*-*-*]
462 || [istarget ia64-*-*]
463- || [check_effective_target_arm32] } {
464+ || [check_effective_target_arm_vect_no_misalign] } {
465 set et_vect_no_align_saved 1
466 }
467 }
468@@ -2682,6 +2694,25 @@
469 return $et_vector_alignment_reachable_for_64bit_saved
470 }
471
472+# Return 1 if the target only requires element alignment for vector accesses
473+
474+proc check_effective_target_vect_element_align { } {
475+ global et_vect_element_align
476+
477+ if [info exists et_vect_element_align] {
478+ verbose "check_effective_target_vect_element_align: using cached result" 2
479+ } else {
480+ set et_vect_element_align 0
481+ if { [istarget arm*-*-*]
482+ || [check_effective_target_vect_hw_misalign] } {
483+ set et_vect_element_align 1
484+ }
485+ }
486+
487+ verbose "check_effective_target_vect_element_align: returning $et_vect_element_align" 2
488+ return $et_vect_element_align
489+}
490+
491 # Return 1 if the target supports vector conditional operations, 0 otherwise.
492
493 proc check_effective_target_vect_condition { } {
494@@ -3239,6 +3270,16 @@
495 return $flags
496 }
497
498+# Add to FLAGS the flags needed to enable 128-bit vectors.
499+
500+proc add_options_for_quad_vectors { flags } {
501+ if [is-effective-target arm_neon_ok] {
502+ return "$flags -mvectorize-with-neon-quad"
503+ }
504+
505+ return $flags
506+}
507+
508 # Return 1 if the target provides a full C99 runtime.
509
510 proc check_effective_target_c99_runtime { } {
511
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99365.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99365.patch
new file mode 100644
index 000000000..36a942118
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99365.patch
@@ -0,0 +1,38 @@
12010-08-12 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/testsuite/
6 2010-08-12 Jie Zhang <jie@codesourcery.com>
7 * gcc.dg/graphite/interchange-9.c (M): Define to be 111.
8 (N): Likewise.
9 (main): Adjust accordingly.
10
11 2010-08-05 Julian Brown <julian@codesourcery.com>
12
13 Backport from mainline (candidate patch):
14
15=== modified file 'gcc/testsuite/gcc.dg/graphite/interchange-9.c'
16--- old/gcc/testsuite/gcc.dg/graphite/interchange-9.c 2010-02-07 19:49:26 +0000
17+++ new/gcc/testsuite/gcc.dg/graphite/interchange-9.c 2010-08-20 16:32:45 +0000
18@@ -5,8 +5,8 @@
19 #include <stdio.h>
20 #endif
21
22-#define N 1111
23-#define M 1111
24+#define N 111
25+#define M 111
26
27 static int __attribute__((noinline))
28 foo (int *x)
29@@ -38,7 +38,7 @@
30 fprintf (stderr, "res = %d \n", res);
31 #endif
32
33- if (res != 2468642)
34+ if (res != 24642)
35 abort ();
36
37 return 0;
38
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99366.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99366.patch
new file mode 100644
index 000000000..0998c812e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99366.patch
@@ -0,0 +1,26 @@
12010-08-13 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/
6 2010-08-13 Jie Zhang <jie@codesourcery.com>
7 * config/arm/arm.md (cstoredf4): Only valid when
8 !TARGET_VFP_SINGLE.
9
10 2010-08-12 Jie Zhang <jie@codesourcery.com>
11
12 Backport from mainline:
13
14=== modified file 'gcc/config/arm/arm.md'
15--- old/gcc/config/arm/arm.md 2010-08-16 09:41:58 +0000
16+++ new/gcc/config/arm/arm.md 2010-08-20 16:41:37 +0000
17@@ -8344,7 +8344,7 @@
18 (match_operator:SI 1 "arm_comparison_operator"
19 [(match_operand:DF 2 "s_register_operand" "")
20 (match_operand:DF 3 "arm_float_compare_operand" "")]))]
21- "TARGET_32BIT && TARGET_HARD_FLOAT"
22+ "TARGET_32BIT && TARGET_HARD_FLOAT && !TARGET_VFP_SINGLE"
23 "emit_insn (gen_cstore_cc (operands[0], operands[1],
24 operands[2], operands[3])); DONE;"
25 )
26
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99367.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99367.patch
new file mode 100644
index 000000000..2d572b1bb
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99367.patch
@@ -0,0 +1,49 @@
12010-08-18 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/testsuite/
6 2010-08-18 Jie Zhang <jie@codesourcery.com>
7 * gcc.dg/builtin-apply2.c (STACK_ARGUMENTS_SIZE): Define to
8 20 if __ARM_PCS is defined otherwise 64.
9 (bar): Use STACK_ARGUMENTS_SIZE for the third argument
10 instead of hard coded 64.
11
12 2010-08-13 Jie Zhang <jie@codesourcery.com>
13
14 Backport from mainline:
15
16=== modified file 'gcc/testsuite/gcc.dg/builtin-apply2.c'
17--- old/gcc/testsuite/gcc.dg/builtin-apply2.c 2009-08-06 13:27:45 +0000
18+++ new/gcc/testsuite/gcc.dg/builtin-apply2.c 2010-08-23 13:59:02 +0000
19@@ -8,10 +8,19 @@
20 /* Verify that __builtin_apply behaves correctly on targets
21 with pre-pushed arguments (e.g. SPARC). */
22
23-
24+
25
26 #define INTEGER_ARG 5
27
28+#ifdef __ARM_PCS
29+/* For Base AAPCS, NAME is passed in r0. D is passed in r2 and r3.
30+ E, F and G are passed on stack. So the size of the stack argument
31+ data is 20. */
32+#define STACK_ARGUMENTS_SIZE 20
33+#else
34+#define STACK_ARGUMENTS_SIZE 64
35+#endif
36+
37 extern void abort(void);
38
39 void foo(char *name, double d, double e, double f, int g)
40@@ -22,7 +31,7 @@
41
42 void bar(char *name, ...)
43 {
44- __builtin_apply(foo, __builtin_apply_args(), 64);
45+ __builtin_apply(foo, __builtin_apply_args(), STACK_ARGUMENTS_SIZE);
46 }
47
48 int main(void)
49
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99368.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99368.patch
new file mode 100644
index 000000000..0705e4183
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99368.patch
@@ -0,0 +1,342 @@
12010-08-18 Julian Brown <julian@codesourcery.com>
2
3 Issue #9222
4
5 gcc/
6 * config/arm/neon.md (UNSPEC_VCLE, UNSPEC_VCLT): New constants for
7 unspecs.
8 (vcond<mode>, vcondu<mode>): New expanders.
9 (neon_vceq<mode>, neon_vcge<mode>, neon_vcgt<mode>): Support
10 comparisons with zero.
11 (neon_vcle<mode>, neon_vclt<mode>): New patterns.
12 * config/arm/constraints.md (Dz): New constraint.
13
14 2010-08-18 Jie Zhang <jie@codesourcery.com>
15
16 Backport from mainline:
17
18=== modified file 'gcc/config/arm/constraints.md'
19Index: gcc-4.5/gcc/config/arm/constraints.md
20===================================================================
21--- gcc-4.5.orig/gcc/config/arm/constraints.md
22+++ gcc-4.5/gcc/config/arm/constraints.md
23@@ -29,7 +29,7 @@
24 ;; in Thumb-1 state: I, J, K, L, M, N, O
25
26 ;; The following multi-letter normal constraints have been used:
27-;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di
28+;; in ARM/Thumb-2 state: Da, Db, Dc, Dn, Dl, DL, Dv, Dy, Di, Dz
29 ;; in Thumb-1 state: Pa, Pb
30 ;; in Thumb-2 state: Ps, Pt, Pv
31
32@@ -173,6 +173,12 @@
33 (and (match_code "const_double")
34 (match_test "TARGET_32BIT && neg_const_double_rtx_ok_for_fpa (op)")))
35
36+(define_constraint "Dz"
37+ "@internal
38+ In ARM/Thumb-2 state a vector of constant zeros."
39+ (and (match_code "const_vector")
40+ (match_test "TARGET_NEON && op == CONST0_RTX (mode)")))
41+
42 (define_constraint "Da"
43 "@internal
44 In ARM/Thumb-2 state a const_int, const_double or const_vector that can
45Index: gcc-4.5/gcc/config/arm/neon.md
46===================================================================
47--- gcc-4.5.orig/gcc/config/arm/neon.md
48+++ gcc-4.5/gcc/config/arm/neon.md
49@@ -141,7 +141,9 @@
50 (UNSPEC_VUZP2 202)
51 (UNSPEC_VZIP1 203)
52 (UNSPEC_VZIP2 204)
53- (UNSPEC_MISALIGNED_ACCESS 205)])
54+ (UNSPEC_MISALIGNED_ACCESS 205)
55+ (UNSPEC_VCLE 206)
56+ (UNSPEC_VCLT 207)])
57
58 ;; Double-width vector modes.
59 (define_mode_iterator VD [V8QI V4HI V2SI V2SF])
60@@ -1804,6 +1806,169 @@
61 [(set_attr "neon_type" "neon_int_5")]
62 )
63
64+;; Conditional instructions. These are comparisons with conditional moves for
65+;; vectors. They perform the assignment:
66+;;
67+;; Vop0 = (Vop4 <op3> Vop5) ? Vop1 : Vop2;
68+;;
69+;; where op3 is <, <=, ==, !=, >= or >. Operations are performed
70+;; element-wise.
71+
72+(define_expand "vcond<mode>"
73+ [(set (match_operand:VDQW 0 "s_register_operand" "")
74+ (if_then_else:VDQW
75+ (match_operator 3 "arm_comparison_operator"
76+ [(match_operand:VDQW 4 "s_register_operand" "")
77+ (match_operand:VDQW 5 "nonmemory_operand" "")])
78+ (match_operand:VDQW 1 "s_register_operand" "")
79+ (match_operand:VDQW 2 "s_register_operand" "")))]
80+ "TARGET_NEON && (!<Is_float_mode> || flag_unsafe_math_optimizations)"
81+{
82+ rtx mask;
83+ int inverse = 0, immediate_zero = 0;
84+ /* See the description of "magic" bits in the 'T' case of
85+ arm_print_operand. */
86+ HOST_WIDE_INT magic_word = (<MODE>mode == V2SFmode || <MODE>mode == V4SFmode)
87+ ? 3 : 1;
88+ rtx magic_rtx = GEN_INT (magic_word);
89+
90+ mask = gen_reg_rtx (<V_cmp_result>mode);
91+
92+ if (operands[5] == CONST0_RTX (<MODE>mode))
93+ immediate_zero = 1;
94+ else if (!REG_P (operands[5]))
95+ operands[5] = force_reg (<MODE>mode, operands[5]);
96+
97+ switch (GET_CODE (operands[3]))
98+ {
99+ case GE:
100+ emit_insn (gen_neon_vcge<mode> (mask, operands[4], operands[5],
101+ magic_rtx));
102+ break;
103+
104+ case GT:
105+ emit_insn (gen_neon_vcgt<mode> (mask, operands[4], operands[5],
106+ magic_rtx));
107+ break;
108+
109+ case EQ:
110+ emit_insn (gen_neon_vceq<mode> (mask, operands[4], operands[5],
111+ magic_rtx));
112+ break;
113+
114+ case LE:
115+ if (immediate_zero)
116+ emit_insn (gen_neon_vcle<mode> (mask, operands[4], operands[5],
117+ magic_rtx));
118+ else
119+ emit_insn (gen_neon_vcge<mode> (mask, operands[5], operands[4],
120+ magic_rtx));
121+ break;
122+
123+ case LT:
124+ if (immediate_zero)
125+ emit_insn (gen_neon_vclt<mode> (mask, operands[4], operands[5],
126+ magic_rtx));
127+ else
128+ emit_insn (gen_neon_vcgt<mode> (mask, operands[5], operands[4],
129+ magic_rtx));
130+ break;
131+
132+ case NE:
133+ emit_insn (gen_neon_vceq<mode> (mask, operands[4], operands[5],
134+ magic_rtx));
135+ inverse = 1;
136+ break;
137+
138+ default:
139+ gcc_unreachable ();
140+ }
141+
142+ if (inverse)
143+ emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[2],
144+ operands[1]));
145+ else
146+ emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[1],
147+ operands[2]));
148+
149+ DONE;
150+})
151+
152+(define_expand "vcondu<mode>"
153+ [(set (match_operand:VDQIW 0 "s_register_operand" "")
154+ (if_then_else:VDQIW
155+ (match_operator 3 "arm_comparison_operator"
156+ [(match_operand:VDQIW 4 "s_register_operand" "")
157+ (match_operand:VDQIW 5 "s_register_operand" "")])
158+ (match_operand:VDQIW 1 "s_register_operand" "")
159+ (match_operand:VDQIW 2 "s_register_operand" "")))]
160+ "TARGET_NEON"
161+{
162+ rtx mask;
163+ int inverse = 0, immediate_zero = 0;
164+
165+ mask = gen_reg_rtx (<V_cmp_result>mode);
166+
167+ if (operands[5] == CONST0_RTX (<MODE>mode))
168+ immediate_zero = 1;
169+ else if (!REG_P (operands[5]))
170+ operands[5] = force_reg (<MODE>mode, operands[5]);
171+
172+ switch (GET_CODE (operands[3]))
173+ {
174+ case GEU:
175+ emit_insn (gen_neon_vcge<mode> (mask, operands[4], operands[5],
176+ const0_rtx));
177+ break;
178+
179+ case GTU:
180+ emit_insn (gen_neon_vcgt<mode> (mask, operands[4], operands[5],
181+ const0_rtx));
182+ break;
183+
184+ case EQ:
185+ emit_insn (gen_neon_vceq<mode> (mask, operands[4], operands[5],
186+ const0_rtx));
187+ break;
188+
189+ case LEU:
190+ if (immediate_zero)
191+ emit_insn (gen_neon_vcle<mode> (mask, operands[4], operands[5],
192+ const0_rtx));
193+ else
194+ emit_insn (gen_neon_vcge<mode> (mask, operands[5], operands[4],
195+ const0_rtx));
196+ break;
197+
198+ case LTU:
199+ if (immediate_zero)
200+ emit_insn (gen_neon_vclt<mode> (mask, operands[4], operands[5],
201+ const0_rtx));
202+ else
203+ emit_insn (gen_neon_vcgt<mode> (mask, operands[5], operands[4],
204+ const0_rtx));
205+ break;
206+
207+ case NE:
208+ emit_insn (gen_neon_vceq<mode> (mask, operands[4], operands[5],
209+ const0_rtx));
210+ inverse = 1;
211+ break;
212+
213+ default:
214+ gcc_unreachable ();
215+ }
216+
217+ if (inverse)
218+ emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[2],
219+ operands[1]));
220+ else
221+ emit_insn (gen_neon_vbsl<mode> (operands[0], mask, operands[1],
222+ operands[2]));
223+
224+ DONE;
225+})
226+
227 ;; Patterns for builtins.
228
229 ; good for plain vadd, vaddq.
230@@ -2215,13 +2380,16 @@
231 )
232
233 (define_insn "neon_vceq<mode>"
234- [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
235- (unspec:<V_cmp_result> [(match_operand:VDQW 1 "s_register_operand" "w")
236- (match_operand:VDQW 2 "s_register_operand" "w")
237- (match_operand:SI 3 "immediate_operand" "i")]
238- UNSPEC_VCEQ))]
239+ [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
240+ (unspec:<V_cmp_result>
241+ [(match_operand:VDQW 1 "s_register_operand" "w,w")
242+ (match_operand:VDQW 2 "nonmemory_operand" "w,Dz")
243+ (match_operand:SI 3 "immediate_operand" "i,i")]
244+ UNSPEC_VCEQ))]
245 "TARGET_NEON"
246- "vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
247+ "@
248+ vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
249+ vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, #0"
250 [(set (attr "neon_type")
251 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
252 (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
253@@ -2231,13 +2399,16 @@
254 )
255
256 (define_insn "neon_vcge<mode>"
257- [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
258- (unspec:<V_cmp_result> [(match_operand:VDQW 1 "s_register_operand" "w")
259- (match_operand:VDQW 2 "s_register_operand" "w")
260- (match_operand:SI 3 "immediate_operand" "i")]
261- UNSPEC_VCGE))]
262+ [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
263+ (unspec:<V_cmp_result>
264+ [(match_operand:VDQW 1 "s_register_operand" "w,w")
265+ (match_operand:VDQW 2 "nonmemory_operand" "w,Dz")
266+ (match_operand:SI 3 "immediate_operand" "i,i")]
267+ UNSPEC_VCGE))]
268 "TARGET_NEON"
269- "vcge.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
270+ "@
271+ vcge.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
272+ vcge.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
273 [(set (attr "neon_type")
274 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
275 (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
276@@ -2247,13 +2418,16 @@
277 )
278
279 (define_insn "neon_vcgt<mode>"
280- [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
281- (unspec:<V_cmp_result> [(match_operand:VDQW 1 "s_register_operand" "w")
282- (match_operand:VDQW 2 "s_register_operand" "w")
283- (match_operand:SI 3 "immediate_operand" "i")]
284- UNSPEC_VCGT))]
285+ [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
286+ (unspec:<V_cmp_result>
287+ [(match_operand:VDQW 1 "s_register_operand" "w,w")
288+ (match_operand:VDQW 2 "nonmemory_operand" "w,Dz")
289+ (match_operand:SI 3 "immediate_operand" "i,i")]
290+ UNSPEC_VCGT))]
291 "TARGET_NEON"
292- "vcgt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
293+ "@
294+ vcgt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
295+ vcgt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
296 [(set (attr "neon_type")
297 (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
298 (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
299@@ -2262,6 +2436,43 @@
300 (const_string "neon_int_5")))]
301 )
302
303+;; VCLE and VCLT only support comparisons with immediate zero (register
304+;; variants are VCGE and VCGT with operands reversed).
305+
306+(define_insn "neon_vcle<mode>"
307+ [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
308+ (unspec:<V_cmp_result>
309+ [(match_operand:VDQW 1 "s_register_operand" "w")
310+ (match_operand:VDQW 2 "nonmemory_operand" "Dz")
311+ (match_operand:SI 3 "immediate_operand" "i")]
312+ UNSPEC_VCLE))]
313+ "TARGET_NEON"
314+ "vcle.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
315+ [(set (attr "neon_type")
316+ (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
317+ (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
318+ (const_string "neon_fp_vadd_ddd_vabs_dd")
319+ (const_string "neon_fp_vadd_qqq_vabs_qq"))
320+ (const_string "neon_int_5")))]
321+)
322+
323+(define_insn "neon_vclt<mode>"
324+ [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
325+ (unspec:<V_cmp_result>
326+ [(match_operand:VDQW 1 "s_register_operand" "w")
327+ (match_operand:VDQW 2 "nonmemory_operand" "Dz")
328+ (match_operand:SI 3 "immediate_operand" "i")]
329+ UNSPEC_VCLT))]
330+ "TARGET_NEON"
331+ "vclt.%T3%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, #0"
332+ [(set (attr "neon_type")
333+ (if_then_else (ne (symbol_ref "<Is_float_mode>") (const_int 0))
334+ (if_then_else (ne (symbol_ref "<Is_d_reg>") (const_int 0))
335+ (const_string "neon_fp_vadd_ddd_vabs_dd")
336+ (const_string "neon_fp_vadd_qqq_vabs_qq"))
337+ (const_string "neon_int_5")))]
338+)
339+
340 (define_insn "neon_vcage<mode>"
341 [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
342 (unspec:<V_cmp_result> [(match_operand:VCVTF 1 "s_register_operand" "w")
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99369.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99369.patch
new file mode 100644
index 000000000..9bbc02062
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99369.patch
@@ -0,0 +1,53 @@
12010-08-20 Jie Zhang <jie@codesourcery.com>
2
3 Merged from Sourcery G++ 4.4:
4
5 gcc/
6 2009-05-29 Julian Brown <julian@codesourcery.com>
7 Merged from Sourcery G++ 4.3:
8 * config/arm/arm.md (movsi): Don't split symbol refs here.
9 (define_split): New.
10
11 2010-08-18 Julian Brown <julian@codesourcery.com>
12
13 Issue #9222
14
15=== modified file 'gcc/config/arm/arm.md'
16--- old/gcc/config/arm/arm.md 2010-08-20 16:41:37 +0000
17+++ new/gcc/config/arm/arm.md 2010-08-23 14:39:12 +0000
18@@ -5150,14 +5150,6 @@
19 optimize && can_create_pseudo_p ());
20 DONE;
21 }
22-
23- if (TARGET_USE_MOVT && !target_word_relocations
24- && GET_CODE (operands[1]) == SYMBOL_REF
25- && !flag_pic && !arm_tls_referenced_p (operands[1]))
26- {
27- arm_emit_movpair (operands[0], operands[1]);
28- DONE;
29- }
30 }
31 else /* TARGET_THUMB1... */
32 {
33@@ -5265,6 +5257,19 @@
34 "
35 )
36
37+(define_split
38+ [(set (match_operand:SI 0 "arm_general_register_operand" "")
39+ (match_operand:SI 1 "general_operand" ""))]
40+ "TARGET_32BIT
41+ && TARGET_USE_MOVT && GET_CODE (operands[1]) == SYMBOL_REF
42+ && !flag_pic && !target_word_relocations
43+ && !arm_tls_referenced_p (operands[1])"
44+ [(clobber (const_int 0))]
45+{
46+ arm_emit_movpair (operands[0], operands[1]);
47+ DONE;
48+})
49+
50 (define_insn "*thumb1_movsi_insn"
51 [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*lhk")
52 (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*lhk"))]
53
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99371.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99371.patch
new file mode 100644
index 000000000..be102160c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99371.patch
@@ -0,0 +1,663 @@
12010-08-24 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from FSF:
4
5 2010-08-07 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6
7 * config/arm/cortex-a9.md: Rewrite VFP Pipeline description.
8 * config/arm/arm.c (arm_xscale_tune): Initialize sched_adjust_cost.
9 (arm_fastmul_tune,arm_slowmul_tune, arm_9e_tune): Likewise.
10 (arm_adjust_cost): Split into xscale_sched_adjust_cost and a
11 generic part.
12 (cortex_a9_sched_adjust_cost): New function.
13 (xscale_sched_adjust_cost): New function.
14 * config/arm/arm-protos.h (struct tune_params): New field
15 sched_adjust_cost.
16 * config/arm/arm-cores.def: Adjust costs for cortex-a9.
17
18 2010-04-17 Richard Earnshaw <rearnsha@arm.com>
19
20 * arm-protos.h (tune_params): New structure.
21 * arm.c (current_tune): New variable.
22 (arm_constant_limit): Delete.
23 (struct processors): Add pointer to the tune parameters.
24 (arm_slowmul_tune): New tuning option.
25 (arm_fastmul_tune, arm_xscale_tune, arm_9e_tune): Likewise.
26 (all_cores): Adjust to pick up the tuning model.
27 (arm_constant_limit): New function.
28 (arm_override_options): Select the appropriate tuning model. Delete
29 initialization of arm_const_limit.
30 (arm_split_constant): Use the new constant-limit model.
31 (arm_rtx_costs): Pick up the current tuning model.
32 * arm.md (is_strongarm, is_xscale): Delete.
33 * arm-generic.md (load_ldsched_x, load_ldsched): Test explicitly
34 for Xscale variant architectures.
35 (mult_ldsched_strongarm, mult_ldsched): Similarly for StrongARM.
36
37 2010-08-23 Andrew Stubbs <ams@codesourcery.com>
38
39 Backport from FSF:
40
41=== modified file 'gcc/config/arm/arm-cores.def'
42--- old/gcc/config/arm/arm-cores.def 2010-07-29 15:53:39 +0000
43+++ new/gcc/config/arm/arm-cores.def 2010-08-24 13:15:54 +0000
44@@ -120,7 +120,7 @@
45 ARM_CORE("arm1156t2f-s", arm1156t2fs, 6T2, FL_LDSCHED | FL_VFPV2, 9e)
46 ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, 9e)
47 ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, 9e)
48-ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, 9e)
49+ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, cortex_a9)
50 ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, 9e)
51 ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, 9e)
52 ARM_CORE("cortex-m4", cortexm4, 7EM, FL_LDSCHED, 9e)
53
54=== modified file 'gcc/config/arm/arm-generic.md'
55--- old/gcc/config/arm/arm-generic.md 2007-08-02 09:49:31 +0000
56+++ new/gcc/config/arm/arm-generic.md 2010-08-24 13:15:54 +0000
57@@ -104,14 +104,14 @@
58 (and (eq_attr "generic_sched" "yes")
59 (and (eq_attr "ldsched" "yes")
60 (and (eq_attr "type" "load_byte,load1")
61- (eq_attr "is_xscale" "yes"))))
62+ (eq_attr "tune" "xscale,iwmmxt,iwmmxt2"))))
63 "core")
64
65 (define_insn_reservation "load_ldsched" 2
66 (and (eq_attr "generic_sched" "yes")
67 (and (eq_attr "ldsched" "yes")
68 (and (eq_attr "type" "load_byte,load1")
69- (eq_attr "is_xscale" "no"))))
70+ (eq_attr "tune" "!xscale,iwmmxt,iwmmxt2"))))
71 "core")
72
73 (define_insn_reservation "load_or_store" 2
74@@ -128,14 +128,16 @@
75 (define_insn_reservation "mult_ldsched_strongarm" 3
76 (and (eq_attr "generic_sched" "yes")
77 (and (eq_attr "ldsched" "yes")
78- (and (eq_attr "is_strongarm" "yes")
79+ (and (eq_attr "tune"
80+ "strongarm,strongarm110,strongarm1100,strongarm1110")
81 (eq_attr "type" "mult"))))
82 "core*2")
83
84 (define_insn_reservation "mult_ldsched" 4
85 (and (eq_attr "generic_sched" "yes")
86 (and (eq_attr "ldsched" "yes")
87- (and (eq_attr "is_strongarm" "no")
88+ (and (eq_attr "tune"
89+ "!strongarm,strongarm110,strongarm1100,strongarm1110")
90 (eq_attr "type" "mult"))))
91 "core*4")
92
93
94=== modified file 'gcc/config/arm/arm-protos.h'
95--- old/gcc/config/arm/arm-protos.h 2010-08-10 13:31:21 +0000
96+++ new/gcc/config/arm/arm-protos.h 2010-08-24 13:15:54 +0000
97@@ -214,4 +214,17 @@
98
99 extern void arm_order_regs_for_local_alloc (void);
100
101+#ifdef RTX_CODE
102+/* This needs to be here because we need RTX_CODE and similar. */
103+
104+struct tune_params
105+{
106+ bool (*rtx_costs) (rtx, RTX_CODE, RTX_CODE, int *, bool);
107+ bool (*sched_adjust_cost) (rtx, rtx, rtx, int *);
108+ int constant_limit;
109+};
110+
111+extern const struct tune_params *current_tune;
112+#endif /* RTX_CODE */
113+
114 #endif /* ! GCC_ARM_PROTOS_H */
115
116=== modified file 'gcc/config/arm/arm.c'
117--- old/gcc/config/arm/arm.c 2010-08-20 16:21:01 +0000
118+++ new/gcc/config/arm/arm.c 2010-08-24 13:15:54 +0000
119@@ -228,6 +228,8 @@
120 static void arm_trampoline_init (rtx, tree, rtx);
121 static rtx arm_trampoline_adjust_address (rtx);
122 static rtx arm_pic_static_addr (rtx orig, rtx reg);
123+static bool cortex_a9_sched_adjust_cost (rtx, rtx, rtx, int *);
124+static bool xscale_sched_adjust_cost (rtx, rtx, rtx, int *);
125 static bool arm_vector_alignment_reachable (const_tree type, bool is_packed);
126 static bool arm_builtin_support_vector_misalignment (enum machine_mode mode,
127 const_tree type,
128@@ -545,6 +547,9 @@
129 /* The processor for which instructions should be scheduled. */
130 enum processor_type arm_tune = arm_none;
131
132+/* The current tuning set. */
133+const struct tune_params *current_tune;
134+
135 /* The default processor used if not overridden by commandline. */
136 static enum processor_type arm_default_cpu = arm_none;
137
138@@ -720,9 +725,6 @@
139 the next function. */
140 static int after_arm_reorg = 0;
141
142-/* The maximum number of insns to be used when loading a constant. */
143-static int arm_constant_limit = 3;
144-
145 enum arm_pcs arm_pcs_default;
146
147 /* For an explanation of these variables, see final_prescan_insn below. */
148@@ -761,8 +763,44 @@
149 enum processor_type core;
150 const char *arch;
151 const unsigned long flags;
152- bool (* rtx_costs) (rtx, enum rtx_code, enum rtx_code, int *, bool);
153-};
154+ const struct tune_params *const tune;
155+};
156+
157+const struct tune_params arm_slowmul_tune =
158+{
159+ arm_slowmul_rtx_costs,
160+ NULL,
161+ 3
162+};
163+
164+const struct tune_params arm_fastmul_tune =
165+{
166+ arm_fastmul_rtx_costs,
167+ NULL,
168+ 1
169+};
170+
171+const struct tune_params arm_xscale_tune =
172+{
173+ arm_xscale_rtx_costs,
174+ xscale_sched_adjust_cost,
175+ 2
176+};
177+
178+const struct tune_params arm_9e_tune =
179+{
180+ arm_9e_rtx_costs,
181+ NULL,
182+ 1
183+};
184+
185+const struct tune_params arm_cortex_a9_tune =
186+{
187+ arm_9e_rtx_costs,
188+ cortex_a9_sched_adjust_cost,
189+ 1
190+};
191+
192
193 /* Not all of these give usefully different compilation alternatives,
194 but there is no simple way of generalizing them. */
195@@ -770,7 +808,7 @@
196 {
197 /* ARM Cores */
198 #define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
199- {NAME, arm_none, #ARCH, FLAGS | FL_FOR_ARCH##ARCH, arm_##COSTS##_rtx_costs},
200+ {NAME, arm_none, #ARCH, FLAGS | FL_FOR_ARCH##ARCH, &arm_##COSTS##_tune},
201 #include "arm-cores.def"
202 #undef ARM_CORE
203 {NULL, arm_none, NULL, 0, NULL}
204@@ -779,7 +817,7 @@
205 static const struct processors all_architectures[] =
206 {
207 /* ARM Architectures */
208- /* We don't specify rtx_costs here as it will be figured out
209+ /* We don't specify tuning costs here as it will be figured out
210 from the core. */
211
212 {"armv2", arm2, "2", FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2, NULL},
213@@ -928,6 +966,13 @@
214 TLS_LE32
215 };
216
217+/* The maximum number of insns to be used when loading a constant. */
218+inline static int
219+arm_constant_limit (bool size_p)
220+{
221+ return size_p ? 1 : current_tune->constant_limit;
222+}
223+
224 /* Emit an insn that's a simple single-set. Both the operands must be known
225 to be valid. */
226 inline static rtx
227@@ -1478,6 +1523,7 @@
228 }
229
230 tune_flags = all_cores[(int)arm_tune].flags;
231+ current_tune = all_cores[(int)arm_tune].tune;
232
233 if (target_fp16_format_name)
234 {
235@@ -1875,26 +1921,12 @@
236
237 if (optimize_size)
238 {
239- arm_constant_limit = 1;
240-
241 /* If optimizing for size, bump the number of instructions that we
242 are prepared to conditionally execute (even on a StrongARM). */
243 max_insns_skipped = 6;
244 }
245 else
246 {
247- /* For processors with load scheduling, it never costs more than
248- 2 cycles to load a constant, and the load scheduler may well
249- reduce that to 1. */
250- if (arm_ld_sched)
251- arm_constant_limit = 1;
252-
253- /* On XScale the longer latency of a load makes it more difficult
254- to achieve a good schedule, so it's faster to synthesize
255- constants that can be done in two insns. */
256- if (arm_tune_xscale)
257- arm_constant_limit = 2;
258-
259 /* StrongARM has early execution of branches, so a sequence
260 that is worth skipping is shorter. */
261 if (arm_tune_strongarm)
262@@ -2423,7 +2455,8 @@
263 && !cond
264 && (arm_gen_constant (code, mode, NULL_RTX, val, target, source,
265 1, 0)
266- > arm_constant_limit + (code != SET)))
267+ > (arm_constant_limit (optimize_function_for_size_p (cfun))
268+ + (code != SET))))
269 {
270 if (code == SET)
271 {
272@@ -7771,9 +7804,9 @@
273 (enum rtx_code) outer_code, total);
274 }
275 else
276- return all_cores[(int)arm_tune].rtx_costs (x, (enum rtx_code) code,
277- (enum rtx_code) outer_code,
278- total, speed);
279+ return current_tune->rtx_costs (x, (enum rtx_code) code,
280+ (enum rtx_code) outer_code,
281+ total, speed);
282 }
283
284 /* RTX costs for cores with a slow MUL implementation. Thumb-2 is not
285@@ -7918,7 +7951,8 @@
286 so it can be ignored. */
287
288 static bool
289-arm_xscale_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code, int *total, bool speed)
290+arm_xscale_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
291+ int *total, bool speed)
292 {
293 enum machine_mode mode = GET_MODE (x);
294
295@@ -8119,15 +8153,15 @@
296 return TARGET_32BIT ? arm_arm_address_cost (x) : arm_thumb_address_cost (x);
297 }
298
299-static int
300-arm_adjust_cost (rtx insn, rtx link, rtx dep, int cost)
301+/* Adjust cost hook for XScale. */
302+static bool
303+xscale_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost)
304 {
305 rtx i_pat, d_pat;
306
307 /* Some true dependencies can have a higher cost depending
308 on precisely how certain input operands are used. */
309- if (arm_tune_xscale
310- && REG_NOTE_KIND (link) == 0
311+ if (REG_NOTE_KIND (link) == 0
312 && recog_memoized (insn) >= 0
313 && recog_memoized (dep) >= 0)
314 {
315@@ -8161,10 +8195,106 @@
316
317 if (reg_overlap_mentioned_p (recog_data.operand[opno],
318 shifted_operand))
319- return 2;
320+ {
321+ *cost = 2;
322+ return false;
323+ }
324 }
325 }
326 }
327+ return true;
328+}
329+
330+/* Adjust cost hook for Cortex A9. */
331+static bool
332+cortex_a9_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost)
333+{
334+ switch (REG_NOTE_KIND (link))
335+ {
336+ case REG_DEP_ANTI:
337+ *cost = 0;
338+ return false;
339+
340+ case REG_DEP_TRUE:
341+ case REG_DEP_OUTPUT:
342+ if (recog_memoized (insn) >= 0
343+ && recog_memoized (dep) >= 0)
344+ {
345+ if (GET_CODE (PATTERN (insn)) == SET)
346+ {
347+ if (GET_MODE_CLASS
348+ (GET_MODE (SET_DEST (PATTERN (insn)))) == MODE_FLOAT
349+ || GET_MODE_CLASS
350+ (GET_MODE (SET_SRC (PATTERN (insn)))) == MODE_FLOAT)
351+ {
352+ enum attr_type attr_type_insn = get_attr_type (insn);
353+ enum attr_type attr_type_dep = get_attr_type (dep);
354+
355+ /* By default all dependencies of the form
356+ s0 = s0 <op> s1
357+ s0 = s0 <op> s2
358+ have an extra latency of 1 cycle because
359+ of the input and output dependency in this
360+ case. However this gets modeled as an true
361+ dependency and hence all these checks. */
362+ if (REG_P (SET_DEST (PATTERN (insn)))
363+ && REG_P (SET_DEST (PATTERN (dep)))
364+ && reg_overlap_mentioned_p (SET_DEST (PATTERN (insn)),
365+ SET_DEST (PATTERN (dep))))
366+ {
367+ /* FMACS is a special case where the dependant
368+ instruction can be issued 3 cycles before
369+ the normal latency in case of an output
370+ dependency. */
371+ if ((attr_type_insn == TYPE_FMACS
372+ || attr_type_insn == TYPE_FMACD)
373+ && (attr_type_dep == TYPE_FMACS
374+ || attr_type_dep == TYPE_FMACD))
375+ {
376+ if (REG_NOTE_KIND (link) == REG_DEP_OUTPUT)
377+ *cost = insn_default_latency (dep) - 3;
378+ else
379+ *cost = insn_default_latency (dep);
380+ return false;
381+ }
382+ else
383+ {
384+ if (REG_NOTE_KIND (link) == REG_DEP_OUTPUT)
385+ *cost = insn_default_latency (dep) + 1;
386+ else
387+ *cost = insn_default_latency (dep);
388+ }
389+ return false;
390+ }
391+ }
392+ }
393+ }
394+ break;
395+
396+ default:
397+ gcc_unreachable ();
398+ }
399+
400+ return true;
401+}
402+
403+/* This function implements the target macro TARGET_SCHED_ADJUST_COST.
404+ It corrects the value of COST based on the relationship between
405+ INSN and DEP through the dependence LINK. It returns the new
406+ value. There is a per-core adjust_cost hook to adjust scheduler costs
407+ and the per-core hook can choose to completely override the generic
408+ adjust_cost function. Only put bits of code into arm_adjust_cost that
409+ are common across all cores. */
410+static int
411+arm_adjust_cost (rtx insn, rtx link, rtx dep, int cost)
412+{
413+ rtx i_pat, d_pat;
414+
415+ if (current_tune->sched_adjust_cost != NULL)
416+ {
417+ if (!current_tune->sched_adjust_cost (insn, link, dep, &cost))
418+ return cost;
419+ }
420
421 /* XXX This is not strictly true for the FPA. */
422 if (REG_NOTE_KIND (link) == REG_DEP_ANTI
423@@ -8187,7 +8317,8 @@
424 constant pool are cached, and that others will miss. This is a
425 hack. */
426
427- if ((GET_CODE (src_mem) == SYMBOL_REF && CONSTANT_POOL_ADDRESS_P (src_mem))
428+ if ((GET_CODE (src_mem) == SYMBOL_REF
429+ && CONSTANT_POOL_ADDRESS_P (src_mem))
430 || reg_mentioned_p (stack_pointer_rtx, src_mem)
431 || reg_mentioned_p (frame_pointer_rtx, src_mem)
432 || reg_mentioned_p (hard_frame_pointer_rtx, src_mem))
433
434=== modified file 'gcc/config/arm/arm.md'
435--- old/gcc/config/arm/arm.md 2010-08-23 14:39:12 +0000
436+++ new/gcc/config/arm/arm.md 2010-08-24 13:15:54 +0000
437@@ -150,13 +150,6 @@
438 ; patterns that share the same RTL in both ARM and Thumb code.
439 (define_attr "is_thumb" "no,yes" (const (symbol_ref "thumb_code")))
440
441-; IS_STRONGARM is set to 'yes' when compiling for StrongARM, it affects
442-; scheduling decisions for the load unit and the multiplier.
443-(define_attr "is_strongarm" "no,yes" (const (symbol_ref "arm_tune_strongarm")))
444-
445-; IS_XSCALE is set to 'yes' when compiling for XScale.
446-(define_attr "is_xscale" "no,yes" (const (symbol_ref "arm_tune_xscale")))
447-
448 ;; Operand number of an input operand that is shifted. Zero if the
449 ;; given instruction does not shift one of its input operands.
450 (define_attr "shift" "" (const_int 0))
451
452=== modified file 'gcc/config/arm/cortex-a9.md'
453--- old/gcc/config/arm/cortex-a9.md 2009-10-31 16:40:03 +0000
454+++ new/gcc/config/arm/cortex-a9.md 2010-08-24 13:15:54 +0000
455@@ -2,8 +2,10 @@
456 ;; Copyright (C) 2008, 2009 Free Software Foundation, Inc.
457 ;; Originally written by CodeSourcery for VFP.
458 ;;
459-;; Integer core pipeline description contributed by ARM Ltd.
460-;;
461+;; Rewritten by Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
462+;; Integer Pipeline description contributed by ARM Ltd.
463+;; VFP Pipeline description rewritten and contributed by ARM Ltd.
464+
465 ;; This file is part of GCC.
466 ;;
467 ;; GCC is free software; you can redistribute it and/or modify it
468@@ -22,28 +24,27 @@
469
470 (define_automaton "cortex_a9")
471
472-;; The Cortex-A9 integer core is modelled as a dual issue pipeline that has
473+;; The Cortex-A9 core is modelled as a dual issue pipeline that has
474 ;; the following components.
475 ;; 1. 1 Load Store Pipeline.
476 ;; 2. P0 / main pipeline for data processing instructions.
477 ;; 3. P1 / Dual pipeline for Data processing instructions.
478 ;; 4. MAC pipeline for multiply as well as multiply
479 ;; and accumulate instructions.
480-;; 5. 1 VFP / Neon pipeline.
481-;; The Load/Store and VFP/Neon pipeline are multiplexed.
482+;; 5. 1 VFP and an optional Neon unit.
483+;; The Load/Store, VFP and Neon issue pipeline are multiplexed.
484 ;; The P0 / main pipeline and M1 stage of the MAC pipeline are
485 ;; multiplexed.
486 ;; The P1 / dual pipeline and M2 stage of the MAC pipeline are
487 ;; multiplexed.
488-;; There are only 4 register read ports and hence at any point of
489+;; There are only 4 integer register read ports and hence at any point of
490 ;; time we can't have issue down the E1 and the E2 ports unless
491 ;; of course there are bypass paths that get exercised.
492 ;; Both P0 and P1 have 2 stages E1 and E2.
493 ;; Data processing instructions issue to E1 or E2 depending on
494 ;; whether they have an early shift or not.
495
496-
497-(define_cpu_unit "cortex_a9_vfp, cortex_a9_ls" "cortex_a9")
498+(define_cpu_unit "ca9_issue_vfp_neon, cortex_a9_ls" "cortex_a9")
499 (define_cpu_unit "cortex_a9_p0_e1, cortex_a9_p0_e2" "cortex_a9")
500 (define_cpu_unit "cortex_a9_p1_e1, cortex_a9_p1_e2" "cortex_a9")
501 (define_cpu_unit "cortex_a9_p0_wb, cortex_a9_p1_wb" "cortex_a9")
502@@ -71,11 +72,7 @@
503
504 ;; Issue at the same time along the load store pipeline and
505 ;; the VFP / Neon pipeline is not possible.
506-;; FIXME:: At some point we need to model the issue
507-;; of the load store and the vfp being shared rather than anything else.
508-
509-(exclusion_set "cortex_a9_ls" "cortex_a9_vfp")
510-
511+(exclusion_set "cortex_a9_ls" "ca9_issue_vfp_neon")
512
513 ;; Default data processing instruction without any shift
514 ;; The only exception to this is the mov instruction
515@@ -101,18 +98,13 @@
516
517 (define_insn_reservation "cortex_a9_load1_2" 4
518 (and (eq_attr "tune" "cortexa9")
519- (eq_attr "type" "load1, load2, load_byte"))
520+ (eq_attr "type" "load1, load2, load_byte, f_loads, f_loadd"))
521 "cortex_a9_ls")
522
523 ;; Loads multiples and store multiples can't be issued for 2 cycles in a
524 ;; row. The description below assumes that addresses are 64 bit aligned.
525 ;; If not, there is an extra cycle latency which is not modelled.
526
527-;; FIXME:: This bit might need to be reworked when we get to
528-;; tuning for the VFP because strictly speaking the ldm
529-;; is sent to the LSU unit as is and there is only an
530-;; issue restriction between the LSU and the VFP/ Neon unit.
531-
532 (define_insn_reservation "cortex_a9_load3_4" 5
533 (and (eq_attr "tune" "cortexa9")
534 (eq_attr "type" "load3, load4"))
535@@ -120,12 +112,13 @@
536
537 (define_insn_reservation "cortex_a9_store1_2" 0
538 (and (eq_attr "tune" "cortexa9")
539- (eq_attr "type" "store1, store2"))
540+ (eq_attr "type" "store1, store2, f_stores, f_stored"))
541 "cortex_a9_ls")
542
543 ;; Almost all our store multiples use an auto-increment
544 ;; form. Don't issue back to back load and store multiples
545 ;; because the load store unit will stall.
546+
547 (define_insn_reservation "cortex_a9_store3_4" 0
548 (and (eq_attr "tune" "cortexa9")
549 (eq_attr "type" "store3, store4"))
550@@ -193,47 +186,79 @@
551 (define_insn_reservation "cortex_a9_call" 0
552 (and (eq_attr "tune" "cortexa9")
553 (eq_attr "type" "call"))
554- "cortex_a9_issue_branch + cortex_a9_multcycle1 + cortex_a9_ls + cortex_a9_vfp")
555+ "cortex_a9_issue_branch + cortex_a9_multcycle1 + cortex_a9_ls + ca9_issue_vfp_neon")
556
557
558 ;; Pipelining for VFP instructions.
559-
560-(define_insn_reservation "cortex_a9_ffarith" 1
561+;; Issue happens either along load store unit or the VFP / Neon unit.
562+;; Pipeline Instruction Classification.
563+;; FPS - fcpys, ffariths, ffarithd,r_2_f,f_2_r
564+;; FP_ADD - fadds, faddd, fcmps (1)
565+;; FPMUL - fmul{s,d}, fmac{s,d}
566+;; FPDIV - fdiv{s,d}
567+(define_cpu_unit "ca9fps" "cortex_a9")
568+(define_cpu_unit "ca9fp_add1, ca9fp_add2, ca9fp_add3, ca9fp_add4" "cortex_a9")
569+(define_cpu_unit "ca9fp_mul1, ca9fp_mul2 , ca9fp_mul3, ca9fp_mul4" "cortex_a9")
570+(define_cpu_unit "ca9fp_ds1" "cortex_a9")
571+
572+
573+;; fmrs, fmrrd, fmstat and fmrx - The data is available after 1 cycle.
574+(define_insn_reservation "cortex_a9_fps" 2
575 (and (eq_attr "tune" "cortexa9")
576- (eq_attr "type" "fcpys,ffariths,ffarithd,fcmps,fcmpd,fconsts,fconstd"))
577- "cortex_a9_vfp")
578+ (eq_attr "type" "fcpys, fconsts, fconstd, ffariths, ffarithd, r_2_f, f_2_r, f_flag"))
579+ "ca9_issue_vfp_neon + ca9fps")
580+
581+(define_bypass 1
582+ "cortex_a9_fps"
583+ "cortex_a9_fadd, cortex_a9_fps, cortex_a9_fcmp, cortex_a9_dp, cortex_a9_dp_shift, cortex_a9_multiply")
584+
585+;; Scheduling on the FP_ADD pipeline.
586+(define_reservation "ca9fp_add" "ca9_issue_vfp_neon + ca9fp_add1, ca9fp_add2, ca9fp_add3, ca9fp_add4")
587
588 (define_insn_reservation "cortex_a9_fadd" 4
589- (and (eq_attr "tune" "cortexa9")
590- (eq_attr "type" "fadds,faddd,f_cvt"))
591- "cortex_a9_vfp")
592-
593-(define_insn_reservation "cortex_a9_fmuls" 5
594- (and (eq_attr "tune" "cortexa9")
595- (eq_attr "type" "fmuls"))
596- "cortex_a9_vfp")
597-
598-(define_insn_reservation "cortex_a9_fmuld" 6
599- (and (eq_attr "tune" "cortexa9")
600- (eq_attr "type" "fmuld"))
601- "cortex_a9_vfp*2")
602+ (and (eq_attr "tune" "cortexa9")
603+ (eq_attr "type" "fadds, faddd, f_cvt"))
604+ "ca9fp_add")
605+
606+(define_insn_reservation "cortex_a9_fcmp" 1
607+ (and (eq_attr "tune" "cortexa9")
608+ (eq_attr "type" "fcmps, fcmpd"))
609+ "ca9_issue_vfp_neon + ca9fp_add1")
610+
611+;; Scheduling for the Multiply and MAC instructions.
612+(define_reservation "ca9fmuls"
613+ "ca9fp_mul1 + ca9_issue_vfp_neon, ca9fp_mul2, ca9fp_mul3, ca9fp_mul4")
614+
615+(define_reservation "ca9fmuld"
616+ "ca9fp_mul1 + ca9_issue_vfp_neon, (ca9fp_mul1 + ca9fp_mul2), ca9fp_mul2, ca9fp_mul3, ca9fp_mul4")
617+
618+(define_insn_reservation "cortex_a9_fmuls" 4
619+ (and (eq_attr "tune" "cortexa9")
620+ (eq_attr "type" "fmuls"))
621+ "ca9fmuls")
622+
623+(define_insn_reservation "cortex_a9_fmuld" 5
624+ (and (eq_attr "tune" "cortexa9")
625+ (eq_attr "type" "fmuld"))
626+ "ca9fmuld")
627
628 (define_insn_reservation "cortex_a9_fmacs" 8
629- (and (eq_attr "tune" "cortexa9")
630- (eq_attr "type" "fmacs"))
631- "cortex_a9_vfp")
632-
633-(define_insn_reservation "cortex_a9_fmacd" 8
634- (and (eq_attr "tune" "cortexa9")
635- (eq_attr "type" "fmacd"))
636- "cortex_a9_vfp*2")
637-
638+ (and (eq_attr "tune" "cortexa9")
639+ (eq_attr "type" "fmacs"))
640+ "ca9fmuls, ca9fp_add")
641+
642+(define_insn_reservation "cortex_a9_fmacd" 9
643+ (and (eq_attr "tune" "cortexa9")
644+ (eq_attr "type" "fmacd"))
645+ "ca9fmuld, ca9fp_add")
646+
647+;; Division pipeline description.
648 (define_insn_reservation "cortex_a9_fdivs" 15
649- (and (eq_attr "tune" "cortexa9")
650- (eq_attr "type" "fdivs"))
651- "cortex_a9_vfp*10")
652+ (and (eq_attr "tune" "cortexa9")
653+ (eq_attr "type" "fdivs"))
654+ "ca9fp_ds1 + ca9_issue_vfp_neon, nothing*14")
655
656 (define_insn_reservation "cortex_a9_fdivd" 25
657- (and (eq_attr "tune" "cortexa9")
658- (eq_attr "type" "fdivd"))
659- "cortex_a9_vfp*20")
660+ (and (eq_attr "tune" "cortexa9")
661+ (eq_attr "type" "fdivd"))
662+ "ca9fp_ds1 + ca9_issue_vfp_neon, nothing*24")
663
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99372.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99372.patch
new file mode 100644
index 000000000..03b478b79
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99372.patch
@@ -0,0 +1,380 @@
12010-08-25 Andrew Stubbs <ams@codesourcery.com>
2
3 Revert:
4
5 2010-07-26 Julian Brown <julian@codesourcery.com>
6
7 Merge from Sourcery G++ 4.4:
8
9 2010-04-11 Julian Brown <julian@codesourcery.com>
10
11 Issue #7326
12
13 gcc/
14 * config/arm/arm.c (arm_issue_rate): Return 2 for Cortex-A5.
15 * config/arm/arm.md (generic_sched): No for Cortex-A5.
16 (generic_vfp): Likewise.
17 (cortex-a5.md): Include.
18 * config/arm/cortex-a5.md: New.
19
20 2010-08-24 Andrew Stubbs <ams@codesourcery.com>
21
22 Backport from FSF:
23
24=== modified file 'gcc/config/arm/arm.c'
25--- old/gcc/config/arm/arm.c 2010-08-24 13:15:54 +0000
26+++ new/gcc/config/arm/arm.c 2010-08-25 16:20:13 +0000
27@@ -22472,7 +22472,6 @@
28 {
29 case cortexr4:
30 case cortexr4f:
31- case cortexa5:
32 case cortexa8:
33 case cortexa9:
34 return 2;
35
36=== modified file 'gcc/config/arm/arm.md'
37--- old/gcc/config/arm/arm.md 2010-08-24 13:15:54 +0000
38+++ new/gcc/config/arm/arm.md 2010-08-25 16:20:13 +0000
39@@ -412,7 +412,7 @@
40
41 (define_attr "generic_sched" "yes,no"
42 (const (if_then_else
43- (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9")
44+ (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa8,cortexa9")
45 (eq_attr "tune_cortexr4" "yes"))
46 (const_string "no")
47 (const_string "yes"))))
48@@ -420,7 +420,7 @@
49 (define_attr "generic_vfp" "yes,no"
50 (const (if_then_else
51 (and (eq_attr "fpu" "vfp")
52- (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa8,cortexa9")
53+ (eq_attr "tune" "!arm1020e,arm1022e,cortexa8,cortexa9")
54 (eq_attr "tune_cortexr4" "no"))
55 (const_string "yes")
56 (const_string "no"))))
57@@ -444,7 +444,6 @@
58 (include "arm1020e.md")
59 (include "arm1026ejs.md")
60 (include "arm1136jfs.md")
61-(include "cortex-a5.md")
62 (include "cortex-a8.md")
63 (include "cortex-a9.md")
64 (include "cortex-r4.md")
65
66=== removed file 'gcc/config/arm/cortex-a5.md'
67--- old/gcc/config/arm/cortex-a5.md 2010-08-13 15:15:12 +0000
68+++ new/gcc/config/arm/cortex-a5.md 1970-01-01 00:00:00 +0000
69@@ -1,310 +0,0 @@
70-;; ARM Cortex-A5 pipeline description
71-;; Copyright (C) 2010 Free Software Foundation, Inc.
72-;; Contributed by CodeSourcery.
73-;;
74-;; This file is part of GCC.
75-;;
76-;; GCC is free software; you can redistribute it and/or modify it
77-;; under the terms of the GNU General Public License as published by
78-;; the Free Software Foundation; either version 3, or (at your option)
79-;; any later version.
80-;;
81-;; GCC is distributed in the hope that it will be useful, but
82-;; WITHOUT ANY WARRANTY; without even the implied warranty of
83-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
84-;; General Public License for more details.
85-;;
86-;; You should have received a copy of the GNU General Public License
87-;; along with GCC; see the file COPYING3. If not see
88-;; <http://www.gnu.org/licenses/>.
89-
90-(define_automaton "cortex_a5")
91-
92-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
93-;; Functional units.
94-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
95-
96-;; The integer (ALU) pipeline. There are five DPU pipeline stages. However the
97-;; decode/issue stages operate the same for all instructions, so do not model
98-;; them. We only need to model the first execute stage because instructions
99-;; always advance one stage per cycle in order. Only branch instructions may
100-;; dual-issue, so a single unit covers all of the LS, ALU, MAC and FPU
101-;; pipelines.
102-
103-(define_cpu_unit "cortex_a5_ex1" "cortex_a5")
104-
105-;; The branch pipeline. Branches can dual-issue with other instructions
106-;; (except when those instructions take multiple cycles to issue).
107-
108-(define_cpu_unit "cortex_a5_branch" "cortex_a5")
109-
110-;; Pseudo-unit for blocking the multiply pipeline when a double-precision
111-;; multiply is in progress.
112-
113-(define_cpu_unit "cortex_a5_fpmul_pipe" "cortex_a5")
114-
115-;; The floating-point add pipeline (ex1/f1 stage), used to model the usage
116-;; of the add pipeline by fmac instructions, etc.
117-
118-(define_cpu_unit "cortex_a5_fpadd_pipe" "cortex_a5")
119-
120-;; Floating-point div/sqrt (long latency, out-of-order completion).
121-
122-(define_cpu_unit "cortex_a5_fp_div_sqrt" "cortex_a5")
123-
124-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
125-;; ALU instructions.
126-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
127-
128-(define_insn_reservation "cortex_a5_alu" 2
129- (and (eq_attr "tune" "cortexa5")
130- (eq_attr "type" "alu"))
131- "cortex_a5_ex1")
132-
133-(define_insn_reservation "cortex_a5_alu_shift" 2
134- (and (eq_attr "tune" "cortexa5")
135- (eq_attr "type" "alu_shift,alu_shift_reg"))
136- "cortex_a5_ex1")
137-
138-;; Forwarding path for unshifted operands.
139-
140-(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift"
141- "cortex_a5_alu")
142-
143-(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift"
144- "cortex_a5_alu_shift"
145- "arm_no_early_alu_shift_dep")
146-
147-;; The multiplier pipeline can forward results from wr stage only (so I don't
148-;; think there's any need to specify bypasses).
149-
150-(define_insn_reservation "cortex_a5_mul" 2
151- (and (eq_attr "tune" "cortexa5")
152- (eq_attr "type" "mult"))
153- "cortex_a5_ex1")
154-
155-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
156-;; Load/store instructions.
157-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
158-
159-;; Address-generation happens in the issue stage, which is one stage behind
160-;; the ex1 stage (the first stage we care about for scheduling purposes). The
161-;; dc1 stage is parallel with ex1, dc2 with ex2 and rot with wr.
162-
163-;; FIXME: These might not be entirely accurate for load2, load3, load4. I think
164-;; they make sense since there's a 32-bit interface between the DPU and the DCU,
165-;; so we can't load more than that per cycle. The store2, store3, store4
166-;; reservations are similarly guessed.
167-
168-(define_insn_reservation "cortex_a5_load1" 2
169- (and (eq_attr "tune" "cortexa5")
170- (eq_attr "type" "load_byte,load1"))
171- "cortex_a5_ex1")
172-
173-(define_insn_reservation "cortex_a5_store1" 0
174- (and (eq_attr "tune" "cortexa5")
175- (eq_attr "type" "store1"))
176- "cortex_a5_ex1")
177-
178-(define_insn_reservation "cortex_a5_load2" 3
179- (and (eq_attr "tune" "cortexa5")
180- (eq_attr "type" "load2"))
181- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
182-
183-(define_insn_reservation "cortex_a5_store2" 0
184- (and (eq_attr "tune" "cortexa5")
185- (eq_attr "type" "store2"))
186- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
187-
188-(define_insn_reservation "cortex_a5_load3" 4
189- (and (eq_attr "tune" "cortexa5")
190- (eq_attr "type" "load3"))
191- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
192- cortex_a5_ex1")
193-
194-(define_insn_reservation "cortex_a5_store3" 0
195- (and (eq_attr "tune" "cortexa5")
196- (eq_attr "type" "store3"))
197- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
198- cortex_a5_ex1")
199-
200-(define_insn_reservation "cortex_a5_load4" 5
201- (and (eq_attr "tune" "cortexa5")
202- (eq_attr "type" "load3"))
203- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
204- cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
205-
206-(define_insn_reservation "cortex_a5_store4" 0
207- (and (eq_attr "tune" "cortexa5")
208- (eq_attr "type" "store3"))
209- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
210- cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
211-
212-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
213-;; Branches.
214-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
215-
216-;; Direct branches are the only instructions we can dual-issue (also IT and
217-;; nop, but those aren't very interesting for scheduling). (The latency here
218-;; is meant to represent when the branch actually takes place, but may not be
219-;; entirely correct.)
220-
221-(define_insn_reservation "cortex_a5_branch" 3
222- (and (eq_attr "tune" "cortexa5")
223- (eq_attr "type" "branch,call"))
224- "cortex_a5_branch")
225-
226-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
227-;; Floating-point arithmetic.
228-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
229-
230-(define_insn_reservation "cortex_a5_fpalu" 4
231- (and (eq_attr "tune" "cortexa5")
232- (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fcpys, fmuls, f_cvt,\
233- fcmps, fcmpd"))
234- "cortex_a5_ex1+cortex_a5_fpadd_pipe")
235-
236-;; For fconsts and fconstd, 8-bit immediate data is passed directly from
237-;; f1 to f3 (which I think reduces the latency by one cycle).
238-
239-(define_insn_reservation "cortex_a5_fconst" 3
240- (and (eq_attr "tune" "cortexa5")
241- (eq_attr "type" "fconsts,fconstd"))
242- "cortex_a5_ex1+cortex_a5_fpadd_pipe")
243-
244-;; We should try not to attempt to issue a single-precision multiplication in
245-;; the middle of a double-precision multiplication operation (the usage of
246-;; cortex_a5_fpmul_pipe).
247-
248-(define_insn_reservation "cortex_a5_fpmuls" 4
249- (and (eq_attr "tune" "cortexa5")
250- (eq_attr "type" "fmuls"))
251- "cortex_a5_ex1+cortex_a5_fpmul_pipe")
252-
253-;; For single-precision multiply-accumulate, the add (accumulate) is issued
254-;; whilst the multiply is in F4. The multiply result can then be forwarded
255-;; from F5 to F1. The issue unit is only used once (when we first start
256-;; processing the instruction), but the usage of the FP add pipeline could
257-;; block other instructions attempting to use it simultaneously. We try to
258-;; avoid that using cortex_a5_fpadd_pipe.
259-
260-(define_insn_reservation "cortex_a5_fpmacs" 8
261- (and (eq_attr "tune" "cortexa5")
262- (eq_attr "type" "fmacs"))
263- "cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe")
264-
265-;; Non-multiply instructions can issue in the middle two instructions of a
266-;; double-precision multiply. Note that it isn't entirely clear when a branch
267-;; can dual-issue when a multi-cycle multiplication is in progress; we ignore
268-;; that for now though.
269-
270-(define_insn_reservation "cortex_a5_fpmuld" 7
271- (and (eq_attr "tune" "cortexa5")
272- (eq_attr "type" "fmuld"))
273- "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\
274- cortex_a5_ex1+cortex_a5_fpmul_pipe")
275-
276-(define_insn_reservation "cortex_a5_fpmacd" 11
277- (and (eq_attr "tune" "cortexa5")
278- (eq_attr "type" "fmacd"))
279- "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\
280- cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe")
281-
282-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
283-;; Floating-point divide/square root instructions.
284-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
285-
286-;; ??? Not sure if the 14 cycles taken for single-precision divide to complete
287-;; includes the time taken for the special instruction used to collect the
288-;; result to travel down the multiply pipeline, or not. Assuming so. (If
289-;; that's wrong, the latency should be increased by a few cycles.)
290-
291-;; fsqrt takes one cycle less, but that is not modelled, nor is the use of the
292-;; multiply pipeline to collect the divide/square-root result.
293-
294-(define_insn_reservation "cortex_a5_fdivs" 14
295- (and (eq_attr "tune" "cortexa5")
296- (eq_attr "type" "fdivs"))
297- "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 13")
298-
299-;; ??? Similarly for fdivd.
300-
301-(define_insn_reservation "cortex_a5_fdivd" 29
302- (and (eq_attr "tune" "cortexa5")
303- (eq_attr "type" "fdivd"))
304- "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 28")
305-
306-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
307-;; VFP to/from core transfers.
308-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
309-
310-;; FP loads take data from wr/rot/f3. Might need to define bypasses to model
311-;; this?
312-
313-;; Core-to-VFP transfers use the multiply pipeline.
314-;; Not sure about this at all... I think we need some bypasses too.
315-
316-(define_insn_reservation "cortex_a5_r2f" 4
317- (and (eq_attr "tune" "cortexa5")
318- (eq_attr "type" "r_2_f"))
319- "cortex_a5_ex1")
320-
321-;; Not sure about this either. 6.8.7 says "Additionally, the store pipe used
322-;; for store and FP->core register transfers can forward into the F2 and F3
323-;; stages."
324-;; This doesn't correspond to what we have though.
325-
326-(define_insn_reservation "cortex_a5_f2r" 2
327- (and (eq_attr "tune" "cortexa5")
328- (eq_attr "type" "f_2_r"))
329- "cortex_a5_ex1")
330-
331-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
332-;; VFP flag transfer.
333-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
334-
335-;; ??? The flag forwarding described in section 6.8.11 of the Cortex-A5 DPU
336-;; specification (from fmstat to the ex2 stage of the second instruction) is
337-;; not modeled at present.
338-
339-(define_insn_reservation "cortex_a5_f_flags" 4
340- (and (eq_attr "tune" "cortexa5")
341- (eq_attr "type" "f_flag"))
342- "cortex_a5_ex1")
343-
344-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
345-;; VFP load/store.
346-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
347-
348-(define_insn_reservation "cortex_a5_f_loads" 4
349- (and (eq_attr "tune" "cortexa5")
350- (eq_attr "type" "f_loads"))
351- "cortex_a5_ex1")
352-
353-(define_insn_reservation "cortex_a5_f_loadd" 5
354- (and (eq_attr "tune" "cortexa5")
355- (eq_attr "type" "f_load,f_loadd"))
356- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
357-
358-(define_insn_reservation "cortex_a5_f_stores" 0
359- (and (eq_attr "tune" "cortexa5")
360- (eq_attr "type" "f_stores"))
361- "cortex_a5_ex1")
362-
363-(define_insn_reservation "cortex_a5_f_stored" 0
364- (and (eq_attr "tune" "cortexa5")
365- (eq_attr "type" "f_store,f_stored"))
366- "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
367-
368-;; Load-to-use for floating-point values has a penalty of one cycle, i.e. a
369-;; latency of two (6.8.3).
370-
371-(define_bypass 2 "cortex_a5_f_loads"
372- "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\
373- cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\
374- cortex_a5_f2r")
375-
376-(define_bypass 3 "cortex_a5_f_loadd"
377- "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\
378- cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\
379- cortex_a5_f2r")
380
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99373.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99373.patch
new file mode 100644
index 000000000..60608e481
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99373.patch
@@ -0,0 +1,360 @@
1 Backport from FSF:
2
3 2010-08-25 Julian Brown <julian@codesourcery.com>
4
5 * config/arm/arm.c (arm_issue_rate): Return 2 for Cortex-A5.
6 * config/arm/arm.md (generic_sched): No for Cortex-A5.
7 (generic_vfp): Likewise.
8 (cortex-a5.md): Include.
9 * config/arm/cortex-a5.md: New.
10
112010-08-25 Andrew Stubbs <ams@codesourcery.com>
12
13 Revert:
14
15 2010-07-26 Julian Brown <julian@codesourcery.com>
16
17=== modified file 'gcc/config/arm/arm.c'
18--- old/gcc/config/arm/arm.c 2010-08-25 16:20:13 +0000
19+++ new/gcc/config/arm/arm.c 2010-08-25 16:22:17 +0000
20@@ -22472,6 +22472,7 @@
21 {
22 case cortexr4:
23 case cortexr4f:
24+ case cortexa5:
25 case cortexa8:
26 case cortexa9:
27 return 2;
28
29=== modified file 'gcc/config/arm/arm.md'
30--- old/gcc/config/arm/arm.md 2010-08-25 16:20:13 +0000
31+++ new/gcc/config/arm/arm.md 2010-08-25 16:22:17 +0000
32@@ -412,7 +412,7 @@
33
34 (define_attr "generic_sched" "yes,no"
35 (const (if_then_else
36- (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa8,cortexa9")
37+ (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9")
38 (eq_attr "tune_cortexr4" "yes"))
39 (const_string "no")
40 (const_string "yes"))))
41@@ -420,7 +420,7 @@
42 (define_attr "generic_vfp" "yes,no"
43 (const (if_then_else
44 (and (eq_attr "fpu" "vfp")
45- (eq_attr "tune" "!arm1020e,arm1022e,cortexa8,cortexa9")
46+ (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa8,cortexa9")
47 (eq_attr "tune_cortexr4" "no"))
48 (const_string "yes")
49 (const_string "no"))))
50@@ -444,6 +444,7 @@
51 (include "arm1020e.md")
52 (include "arm1026ejs.md")
53 (include "arm1136jfs.md")
54+(include "cortex-a5.md")
55 (include "cortex-a8.md")
56 (include "cortex-a9.md")
57 (include "cortex-r4.md")
58
59=== added file 'gcc/config/arm/cortex-a5.md'
60--- old/gcc/config/arm/cortex-a5.md 1970-01-01 00:00:00 +0000
61+++ new/gcc/config/arm/cortex-a5.md 2010-08-25 16:22:17 +0000
62@@ -0,0 +1,297 @@
63+;; ARM Cortex-A5 pipeline description
64+;; Copyright (C) 2010 Free Software Foundation, Inc.
65+;; Contributed by CodeSourcery.
66+;;
67+;; This file is part of GCC.
68+;;
69+;; GCC is free software; you can redistribute it and/or modify it
70+;; under the terms of the GNU General Public License as published by
71+;; the Free Software Foundation; either version 3, or (at your option)
72+;; any later version.
73+;;
74+;; GCC is distributed in the hope that it will be useful, but
75+;; WITHOUT ANY WARRANTY; without even the implied warranty of
76+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
77+;; General Public License for more details.
78+;;
79+;; You should have received a copy of the GNU General Public License
80+;; along with GCC; see the file COPYING3. If not see
81+;; <http://www.gnu.org/licenses/>.
82+
83+(define_automaton "cortex_a5")
84+
85+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
86+;; Functional units.
87+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
88+
89+;; The integer (ALU) pipeline. There are five DPU pipeline
90+;; stages. However the decode/issue stages operate the same for all
91+;; instructions, so do not model them. We only need to model the
92+;; first execute stage because instructions always advance one stage
93+;; per cycle in order. Only branch instructions may dual-issue, so a
94+;; single unit covers all of the LS, ALU, MAC and FPU pipelines.
95+
96+(define_cpu_unit "cortex_a5_ex1" "cortex_a5")
97+
98+;; The branch pipeline. Branches can dual-issue with other instructions
99+;; (except when those instructions take multiple cycles to issue).
100+
101+(define_cpu_unit "cortex_a5_branch" "cortex_a5")
102+
103+;; Pseudo-unit for blocking the multiply pipeline when a double-precision
104+;; multiply is in progress.
105+
106+(define_cpu_unit "cortex_a5_fpmul_pipe" "cortex_a5")
107+
108+;; The floating-point add pipeline (ex1/f1 stage), used to model the usage
109+;; of the add pipeline by fmac instructions, etc.
110+
111+(define_cpu_unit "cortex_a5_fpadd_pipe" "cortex_a5")
112+
113+;; Floating-point div/sqrt (long latency, out-of-order completion).
114+
115+(define_cpu_unit "cortex_a5_fp_div_sqrt" "cortex_a5")
116+
117+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
118+;; ALU instructions.
119+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
120+
121+(define_insn_reservation "cortex_a5_alu" 2
122+ (and (eq_attr "tune" "cortexa5")
123+ (eq_attr "type" "alu"))
124+ "cortex_a5_ex1")
125+
126+(define_insn_reservation "cortex_a5_alu_shift" 2
127+ (and (eq_attr "tune" "cortexa5")
128+ (eq_attr "type" "alu_shift,alu_shift_reg"))
129+ "cortex_a5_ex1")
130+
131+;; Forwarding path for unshifted operands.
132+
133+(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift"
134+ "cortex_a5_alu")
135+
136+(define_bypass 1 "cortex_a5_alu,cortex_a5_alu_shift"
137+ "cortex_a5_alu_shift"
138+ "arm_no_early_alu_shift_dep")
139+
140+;; The multiplier pipeline can forward results from wr stage only so
141+;; there's no need to specify bypasses).
142+
143+(define_insn_reservation "cortex_a5_mul" 2
144+ (and (eq_attr "tune" "cortexa5")
145+ (eq_attr "type" "mult"))
146+ "cortex_a5_ex1")
147+
148+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
149+;; Load/store instructions.
150+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
151+
152+;; Address-generation happens in the issue stage, which is one stage behind
153+;; the ex1 stage (the first stage we care about for scheduling purposes). The
154+;; dc1 stage is parallel with ex1, dc2 with ex2 and rot with wr.
155+
156+(define_insn_reservation "cortex_a5_load1" 2
157+ (and (eq_attr "tune" "cortexa5")
158+ (eq_attr "type" "load_byte,load1"))
159+ "cortex_a5_ex1")
160+
161+(define_insn_reservation "cortex_a5_store1" 0
162+ (and (eq_attr "tune" "cortexa5")
163+ (eq_attr "type" "store1"))
164+ "cortex_a5_ex1")
165+
166+(define_insn_reservation "cortex_a5_load2" 3
167+ (and (eq_attr "tune" "cortexa5")
168+ (eq_attr "type" "load2"))
169+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
170+
171+(define_insn_reservation "cortex_a5_store2" 0
172+ (and (eq_attr "tune" "cortexa5")
173+ (eq_attr "type" "store2"))
174+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
175+
176+(define_insn_reservation "cortex_a5_load3" 4
177+ (and (eq_attr "tune" "cortexa5")
178+ (eq_attr "type" "load3"))
179+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
180+ cortex_a5_ex1")
181+
182+(define_insn_reservation "cortex_a5_store3" 0
183+ (and (eq_attr "tune" "cortexa5")
184+ (eq_attr "type" "store3"))
185+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
186+ cortex_a5_ex1")
187+
188+(define_insn_reservation "cortex_a5_load4" 5
189+ (and (eq_attr "tune" "cortexa5")
190+ (eq_attr "type" "load3"))
191+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
192+ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
193+
194+(define_insn_reservation "cortex_a5_store4" 0
195+ (and (eq_attr "tune" "cortexa5")
196+ (eq_attr "type" "store3"))
197+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1+cortex_a5_branch,\
198+ cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
199+
200+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
201+;; Branches.
202+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
203+
204+;; Direct branches are the only instructions we can dual-issue (also IT and
205+;; nop, but those aren't very interesting for scheduling). (The latency here
206+;; is meant to represent when the branch actually takes place, but may not be
207+;; entirely correct.)
208+
209+(define_insn_reservation "cortex_a5_branch" 3
210+ (and (eq_attr "tune" "cortexa5")
211+ (eq_attr "type" "branch,call"))
212+ "cortex_a5_branch")
213+
214+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
215+;; Floating-point arithmetic.
216+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
217+
218+(define_insn_reservation "cortex_a5_fpalu" 4
219+ (and (eq_attr "tune" "cortexa5")
220+ (eq_attr "type" "ffariths, fadds, ffarithd, faddd, fcpys, fmuls, f_cvt,\
221+ fcmps, fcmpd"))
222+ "cortex_a5_ex1+cortex_a5_fpadd_pipe")
223+
224+;; For fconsts and fconstd, 8-bit immediate data is passed directly from
225+;; f1 to f3 (which I think reduces the latency by one cycle).
226+
227+(define_insn_reservation "cortex_a5_fconst" 3
228+ (and (eq_attr "tune" "cortexa5")
229+ (eq_attr "type" "fconsts,fconstd"))
230+ "cortex_a5_ex1+cortex_a5_fpadd_pipe")
231+
232+;; We should try not to attempt to issue a single-precision multiplication in
233+;; the middle of a double-precision multiplication operation (the usage of
234+;; cortex_a5_fpmul_pipe).
235+
236+(define_insn_reservation "cortex_a5_fpmuls" 4
237+ (and (eq_attr "tune" "cortexa5")
238+ (eq_attr "type" "fmuls"))
239+ "cortex_a5_ex1+cortex_a5_fpmul_pipe")
240+
241+;; For single-precision multiply-accumulate, the add (accumulate) is issued
242+;; whilst the multiply is in F4. The multiply result can then be forwarded
243+;; from F5 to F1. The issue unit is only used once (when we first start
244+;; processing the instruction), but the usage of the FP add pipeline could
245+;; block other instructions attempting to use it simultaneously. We try to
246+;; avoid that using cortex_a5_fpadd_pipe.
247+
248+(define_insn_reservation "cortex_a5_fpmacs" 8
249+ (and (eq_attr "tune" "cortexa5")
250+ (eq_attr "type" "fmacs"))
251+ "cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe")
252+
253+;; Non-multiply instructions can issue in the middle two instructions of a
254+;; double-precision multiply. Note that it isn't entirely clear when a branch
255+;; can dual-issue when a multi-cycle multiplication is in progress; we ignore
256+;; that for now though.
257+
258+(define_insn_reservation "cortex_a5_fpmuld" 7
259+ (and (eq_attr "tune" "cortexa5")
260+ (eq_attr "type" "fmuld"))
261+ "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\
262+ cortex_a5_ex1+cortex_a5_fpmul_pipe")
263+
264+(define_insn_reservation "cortex_a5_fpmacd" 11
265+ (and (eq_attr "tune" "cortexa5")
266+ (eq_attr "type" "fmacd"))
267+ "cortex_a5_ex1+cortex_a5_fpmul_pipe, cortex_a5_fpmul_pipe*2,\
268+ cortex_a5_ex1+cortex_a5_fpmul_pipe, nothing*3, cortex_a5_fpadd_pipe")
269+
270+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
271+;; Floating-point divide/square root instructions.
272+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
273+
274+;; ??? Not sure if the 14 cycles taken for single-precision divide to complete
275+;; includes the time taken for the special instruction used to collect the
276+;; result to travel down the multiply pipeline, or not. Assuming so. (If
277+;; that's wrong, the latency should be increased by a few cycles.)
278+
279+;; fsqrt takes one cycle less, but that is not modelled, nor is the use of the
280+;; multiply pipeline to collect the divide/square-root result.
281+
282+(define_insn_reservation "cortex_a5_fdivs" 14
283+ (and (eq_attr "tune" "cortexa5")
284+ (eq_attr "type" "fdivs"))
285+ "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 13")
286+
287+;; ??? Similarly for fdivd.
288+
289+(define_insn_reservation "cortex_a5_fdivd" 29
290+ (and (eq_attr "tune" "cortexa5")
291+ (eq_attr "type" "fdivd"))
292+ "cortex_a5_ex1, cortex_a5_fp_div_sqrt * 28")
293+
294+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
295+;; VFP to/from core transfers.
296+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
297+
298+;; FP loads take data from wr/rot/f3.
299+
300+;; Core-to-VFP transfers use the multiply pipeline.
301+
302+(define_insn_reservation "cortex_a5_r2f" 4
303+ (and (eq_attr "tune" "cortexa5")
304+ (eq_attr "type" "r_2_f"))
305+ "cortex_a5_ex1")
306+
307+(define_insn_reservation "cortex_a5_f2r" 2
308+ (and (eq_attr "tune" "cortexa5")
309+ (eq_attr "type" "f_2_r"))
310+ "cortex_a5_ex1")
311+
312+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
313+;; VFP flag transfer.
314+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
315+
316+;; ??? The flag forwarding from fmstat to the ex2 stage of the second
317+;; instruction is not modeled at present.
318+
319+(define_insn_reservation "cortex_a5_f_flags" 4
320+ (and (eq_attr "tune" "cortexa5")
321+ (eq_attr "type" "f_flag"))
322+ "cortex_a5_ex1")
323+
324+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
325+;; VFP load/store.
326+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
327+
328+(define_insn_reservation "cortex_a5_f_loads" 4
329+ (and (eq_attr "tune" "cortexa5")
330+ (eq_attr "type" "f_loads"))
331+ "cortex_a5_ex1")
332+
333+(define_insn_reservation "cortex_a5_f_loadd" 5
334+ (and (eq_attr "tune" "cortexa5")
335+ (eq_attr "type" "f_load,f_loadd"))
336+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
337+
338+(define_insn_reservation "cortex_a5_f_stores" 0
339+ (and (eq_attr "tune" "cortexa5")
340+ (eq_attr "type" "f_stores"))
341+ "cortex_a5_ex1")
342+
343+(define_insn_reservation "cortex_a5_f_stored" 0
344+ (and (eq_attr "tune" "cortexa5")
345+ (eq_attr "type" "f_store,f_stored"))
346+ "cortex_a5_ex1+cortex_a5_branch, cortex_a5_ex1")
347+
348+;; Load-to-use for floating-point values has a penalty of one cycle,
349+;; i.e. a latency of two.
350+
351+(define_bypass 2 "cortex_a5_f_loads"
352+ "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\
353+ cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\
354+ cortex_a5_f2r")
355+
356+(define_bypass 3 "cortex_a5_f_loadd"
357+ "cortex_a5_fpalu, cortex_a5_fpmacs, cortex_a5_fpmuld,\
358+ cortex_a5_fpmacd, cortex_a5_fdivs, cortex_a5_fdivd,\
359+ cortex_a5_f2r")
360
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99374.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99374.patch
new file mode 100644
index 000000000..dfe193ff2
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99374.patch
@@ -0,0 +1,72 @@
12010-08-26 Andrew Stubbs <ams@codesourcery.com>
2
3 Merge from Ubuntu GCC:
4
5 GCC bugzilla PR objc/41848.
6
7 gcc/
8 * objc/lang-specs.h: Work around ObjC and -fsection-anchors.
9
10 gcc/testsuite/
11 * objc/execute/forward-1.x: Update for ARM.
12
13 2010-08-25 Andrew Stubbs <ams@codesourcery.com>
14
15 Backport from FSF:
16
17=== modified file 'gcc/objc/lang-specs.h'
18--- old/gcc/objc/lang-specs.h 2007-08-02 09:37:36 +0000
19+++ new/gcc/objc/lang-specs.h 2010-08-26 14:02:04 +0000
20@@ -26,29 +26,33 @@
21 {"@objective-c",
22 "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\
23 %(cpp_options) %(cpp_debug_options)}\
24+ %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} \
25 %{!E:%{!M:%{!MM:\
26 %{traditional|ftraditional|traditional-cpp:\
27 %eGNU Objective C no longer supports traditional compilation}\
28 %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\
29- cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
30+ cc1obj -fpreprocessed -fno-section-anchors %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
31 %{!save-temps:%{!no-integrated-cpp:\
32- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
33+ cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
34 %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
35 {".mi", "@objc-cpp-output", 0, 0, 0},
36 {"@objc-cpp-output",
37- "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
38- %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
39+ "%{!M:%{!MM:%{!E:cc1obj -fno-section-anchors -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
40+ %{!fsyntax-only:%(invoke_as)}}}} \
41+ %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} ", 0, 0, 0},
42 {"@objective-c-header",
43 "%{E|M|MM:cc1obj -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}\
44 %(cpp_options) %(cpp_debug_options)}\
45+ %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} \
46 %{!E:%{!M:%{!MM:\
47 %{traditional|ftraditional|traditional-cpp:\
48 %eGNU Objective C no longer supports traditional compilation}\
49 %{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\
50- cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
51+ cc1obj -fpreprocessed %b.mi %(cc1_options) -fno-section-anchors %{print-objc-runtime-info} %{gen-decls}\
52 -o %g.s %{!o*:--output-pch=%i.gch}\
53 %W{o*:--output-pch=%*}%V}\
54+ %{fsection-anchors: %eGNU Objective C can't use -fsection-anchors} \
55 %{!save-temps:%{!no-integrated-cpp:\
56- cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
57+ cc1obj %(cpp_unique_options) -fno-section-anchors %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
58 -o %g.s %{!o*:--output-pch=%i.gch}\
59 %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
60
61=== modified file 'gcc/testsuite/objc/execute/forward-1.x'
62--- old/gcc/testsuite/objc/execute/forward-1.x 2010-03-25 22:25:05 +0000
63+++ new/gcc/testsuite/objc/execute/forward-1.x 2010-08-26 14:02:04 +0000
64@@ -4,6 +4,7 @@
65
66 if { ([istarget x86_64-*-linux*] && [check_effective_target_lp64] )
67 || [istarget powerpc*-*-linux*]
68+ || [istarget arm*]
69 || [istarget powerpc*-*-aix*]
70 || [istarget s390*-*-*-linux*]
71 || [istarget sh4-*-linux*]
72
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch
new file mode 100644
index 000000000..fac64b964
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99375.patch
@@ -0,0 +1,146 @@
12010-08-26 Maciej Rozycki <macro@codesourcery.com>
2
3 Merge from Sourcery G++ 4.4:
4
5 2009-02-17 Andrew Jenner <andrew@codesourcery.com>
6 Maciej Rozycki <macro@codesourcery.com>
7
8 gcc/
9 * unwind.inc (_Unwind_RaiseException): Use return value of
10 uw_init_context.
11 * unwind-dw2.c (uw_init_context): Make macro an expression instead of
12 a statement.
13 (uw_init_context_1): Add return value.
14 * unwind-sjlj.c (uw_init_context): Add return value.
15
16 2010-08-26 Andrew Stubbs <ams@codesourcery.com>
17
18 Merge from Ubuntu GCC:
19
20=== modified file 'gcc/unwind-dw2.c'
21--- old/gcc/unwind-dw2.c 2010-04-27 08:41:30 +0000
22+++ new/gcc/unwind-dw2.c 2010-08-26 15:38:19 +0000
23@@ -1414,16 +1414,12 @@
24 /* Fill in CONTEXT for top-of-stack. The only valid registers at this
25 level will be the return address and the CFA. */
26
27-#define uw_init_context(CONTEXT) \
28- do \
29- { \
30- /* Do any necessary initialization to access arbitrary stack frames. \
31- On the SPARC, this means flushing the register windows. */ \
32- __builtin_unwind_init (); \
33- uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (), \
34- __builtin_return_address (0)); \
35- } \
36- while (0)
37+#define uw_init_context(CONTEXT) \
38+ /* Do any necessary initialization to access arbitrary stack frames. \
39+ On the SPARC, this means flushing the register windows. */ \
40+ (__builtin_unwind_init (), \
41+ uw_init_context_1 ((CONTEXT), __builtin_dwarf_cfa (), \
42+ __builtin_return_address (0)))
43
44 static inline void
45 init_dwarf_reg_size_table (void)
46@@ -1431,7 +1427,7 @@
47 __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
48 }
49
50-static void __attribute__((noinline))
51+static _Unwind_Reason_Code __attribute__((noinline))
52 uw_init_context_1 (struct _Unwind_Context *context,
53 void *outer_cfa, void *outer_ra)
54 {
55@@ -1445,7 +1441,8 @@
56 context->flags = EXTENDED_CONTEXT_BIT;
57
58 code = uw_frame_state_for (context, &fs);
59- gcc_assert (code == _URC_NO_REASON);
60+ if (code != _URC_NO_REASON)
61+ return code;
62
63 #if __GTHREADS
64 {
65@@ -1471,6 +1468,8 @@
66 initialization context, then we can't see it in the given
67 call frame data. So have the initialization context tell us. */
68 context->ra = __builtin_extract_return_addr (outer_ra);
69+
70+ return _URC_NO_REASON;
71 }
72
73 static void _Unwind_DebugHook (void *, void *)
74
75=== modified file 'gcc/unwind-sjlj.c'
76--- old/gcc/unwind-sjlj.c 2009-04-09 14:00:19 +0000
77+++ new/gcc/unwind-sjlj.c 2010-08-26 15:38:19 +0000
78@@ -292,10 +292,11 @@
79 uw_update_context (context, fs);
80 }
81
82-static inline void
83+static inline _Unwind_Reason_Code
84 uw_init_context (struct _Unwind_Context *context)
85 {
86 context->fc = _Unwind_SjLj_GetContext ();
87+ return _URC_NO_REASON;
88 }
89
90 static void __attribute__((noreturn))
91
92=== modified file 'gcc/unwind.inc'
93--- old/gcc/unwind.inc 2009-04-09 14:00:19 +0000
94+++ new/gcc/unwind.inc 2010-08-26 15:38:19 +0000
95@@ -85,7 +85,8 @@
96 _Unwind_Reason_Code code;
97
98 /* Set up this_context to describe the current stack frame. */
99- uw_init_context (&this_context);
100+ code = uw_init_context (&this_context);
101+ gcc_assert (code == _URC_NO_REASON);
102 cur_context = this_context;
103
104 /* Phase 1: Search. Unwind the stack, calling the personality routine
105@@ -198,7 +199,8 @@
106 struct _Unwind_Context this_context, cur_context;
107 _Unwind_Reason_Code code;
108
109- uw_init_context (&this_context);
110+ code = uw_init_context (&this_context);
111+ gcc_assert (code == _URC_NO_REASON);
112 cur_context = this_context;
113
114 exc->private_1 = (_Unwind_Ptr) stop;
115@@ -221,7 +223,8 @@
116 struct _Unwind_Context this_context, cur_context;
117 _Unwind_Reason_Code code;
118
119- uw_init_context (&this_context);
120+ code = uw_init_context (&this_context);
121+ gcc_assert (code == _URC_NO_REASON);
122 cur_context = this_context;
123
124 /* Choose between continuing to process _Unwind_RaiseException
125@@ -251,7 +254,8 @@
126 if (exc->private_1 == 0)
127 return _Unwind_RaiseException (exc);
128
129- uw_init_context (&this_context);
130+ code = uw_init_context (&this_context);
131+ gcc_assert (code == _URC_NO_REASON);
132 cur_context = this_context;
133
134 code = _Unwind_ForcedUnwind_Phase2 (exc, &cur_context);
135@@ -280,7 +284,9 @@
136 struct _Unwind_Context context;
137 _Unwind_Reason_Code code;
138
139- uw_init_context (&context);
140+ code = uw_init_context (&context);
141+ if (code != _URC_NO_REASON)
142+ return _URC_FATAL_PHASE1_ERROR;
143
144 while (1)
145 {
146
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99376.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99376.patch
new file mode 100644
index 000000000..5e402a753
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99376.patch
@@ -0,0 +1,35 @@
12010-08-26 Paul Brook <paul@codesourcery.com>
2
3 Merge from Sourcery G++ 4.3/4.4:
4 2007-03-30 Paul Brook <paul@codesourcery.com>
5 gcc/
6 * calls.c (store_one_arg): Check alignment of mode used for save.
7
8 2010-08-26 Maciej Rozycki <macro@codesourcery.com>
9
10 Merge from Sourcery G++ 4.4:
11
12=== modified file 'gcc/calls.c'
13--- old/gcc/calls.c 2010-08-13 10:50:45 +0000
14+++ new/gcc/calls.c 2010-08-26 15:44:20 +0000
15@@ -4048,8 +4048,17 @@
16 /* We need to make a save area. */
17 unsigned int size = arg->locate.size.constant * BITS_PER_UNIT;
18 enum machine_mode save_mode = mode_for_size (size, MODE_INT, 1);
19- rtx adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
20- rtx stack_area = gen_rtx_MEM (save_mode, adr);
21+ rtx adr;
22+ rtx stack_area;
23+
24+ /* We can only use save_mode if the arg is sufficiently
25+ aligned. */
26+ if (STRICT_ALIGNMENT
27+ && GET_MODE_ALIGNMENT (save_mode) > arg->locate.boundary)
28+ save_mode = BLKmode;
29+
30+ adr = memory_address (save_mode, XEXP (arg->stack_slot, 0));
31+ stack_area = gen_rtx_MEM (save_mode, adr);
32
33 if (save_mode == BLKmode)
34 {
35
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99377.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99377.patch
new file mode 100644
index 000000000..d51f0874e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99377.patch
@@ -0,0 +1,28 @@
1 Issue #1510
2 2007-04-27 Paul Brook <paul@codesourcery.com>
3 gcc/
4 * cse.c (cse_process_notes): Make sure PLUS are canonical.
5
62010-08-26 Paul Brook <paul@codesourcery.com>
7
8 Merge from Sourcery G++ 4.3/4.4:
9 2007-03-30 Paul Brook <paul@codesourcery.com>
10 gcc/
11 * calls.c (store_one_arg): Check alignment of mode used for save.
12
13=== modified file 'gcc/cse.c'
14--- old/gcc/cse.c 2010-01-12 20:25:10 +0000
15+++ new/gcc/cse.c 2010-08-26 15:53:20 +0000
16@@ -6061,6 +6061,11 @@
17 validate_change (object, &XEXP (x, i),
18 cse_process_notes (XEXP (x, i), object, changed), 0);
19
20+ /* Rebuild a PLUS expression in canonical form if the first operand
21+ ends up as a constant. */
22+ if (code == PLUS && GET_CODE (XEXP (x, 0)) == CONST_INT)
23+ return plus_constant (XEXP(x, 1), INTVAL (XEXP (x, 0)));
24+
25 return x;
26 }
27
28
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99378.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99378.patch
new file mode 100644
index 000000000..aacf19b7c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99378.patch
@@ -0,0 +1,159 @@
12010-08-27 Paul Brook <paul@codesourcery.com>
2
3 gcc/
4 * config/arm/thumb2.md (thumb_andsi_not_shiftsi_si,
5 thumb2_notsi_shiftsi, thumb2_notsi_shiftsi_compare0,
6 thumb2_not_shiftsi_compare0_scratch, thumb2_cmpsi_shiftsi,
7 thumb2_cmpsi_shiftsi_swp, thumb2_cmpsi_neg_shiftsi,
8 thumb2_arith_shiftsi, thumb2_arith_shiftsi_compare0,
9 thumb2_arith_shiftsi_compare0_scratch, thumb2_sub_shiftsi,
10 thumb2_sub_shiftsi_compare0, thumb2_sub_shiftsi_compare0_scratch):
11 Use const_shift_count predicate for "M" constraints.
12 * config/arm/predicates.md (const_shift_operand): Remove.
13 (const_shift_count): New.
14
15 gcc/testsuite/
16 * gcc.dg/long-long-shift-1.c: New test.
17
18 2010-08-26 Paul Brook <paul@codesourcery.com>
19
20 Merge from Sourcery G++ 4.3/4.4:
21
22=== modified file 'gcc/config/arm/predicates.md'
23--- old/gcc/config/arm/predicates.md 2010-08-12 13:35:39 +0000
24+++ new/gcc/config/arm/predicates.md 2010-08-31 09:40:16 +0000
25@@ -318,10 +318,9 @@
26 (and (match_code "reg,subreg,mem")
27 (match_operand 0 "nonimmediate_soft_df_operand"))))
28
29-(define_predicate "const_shift_operand"
30+(define_predicate "const_shift_count"
31 (and (match_code "const_int")
32- (ior (match_operand 0 "power_of_two_operand")
33- (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) < 32"))))
34+ (match_test "((unsigned HOST_WIDE_INT) INTVAL (op)) < 32")))
35
36
37 (define_special_predicate "load_multiple_operation"
38
39=== modified file 'gcc/config/arm/thumb2.md'
40--- old/gcc/config/arm/thumb2.md 2010-08-13 16:00:58 +0000
41+++ new/gcc/config/arm/thumb2.md 2010-08-31 09:40:16 +0000
42@@ -55,7 +55,7 @@
43 [(set (match_operand:SI 0 "s_register_operand" "=r")
44 (and:SI (not:SI (match_operator:SI 4 "shift_operator"
45 [(match_operand:SI 2 "s_register_operand" "r")
46- (match_operand:SI 3 "const_int_operand" "M")]))
47+ (match_operand:SI 3 "const_shift_count" "M")]))
48 (match_operand:SI 1 "s_register_operand" "r")))]
49 "TARGET_THUMB2"
50 "bic%?\\t%0, %1, %2%S4"
51@@ -124,7 +124,7 @@
52 [(set (match_operand:SI 0 "s_register_operand" "=r")
53 (not:SI (match_operator:SI 3 "shift_operator"
54 [(match_operand:SI 1 "s_register_operand" "r")
55- (match_operand:SI 2 "const_int_operand" "M")])))]
56+ (match_operand:SI 2 "const_shift_count" "M")])))]
57 "TARGET_THUMB2"
58 "mvn%?\\t%0, %1%S3"
59 [(set_attr "predicable" "yes")
60@@ -136,7 +136,7 @@
61 [(set (reg:CC_NOOV CC_REGNUM)
62 (compare:CC_NOOV (not:SI (match_operator:SI 3 "shift_operator"
63 [(match_operand:SI 1 "s_register_operand" "r")
64- (match_operand:SI 2 "const_int_operand" "M")]))
65+ (match_operand:SI 2 "const_shift_count" "M")]))
66 (const_int 0)))
67 (set (match_operand:SI 0 "s_register_operand" "=r")
68 (not:SI (match_op_dup 3 [(match_dup 1) (match_dup 2)])))]
69@@ -151,7 +151,7 @@
70 [(set (reg:CC_NOOV CC_REGNUM)
71 (compare:CC_NOOV (not:SI (match_operator:SI 3 "shift_operator"
72 [(match_operand:SI 1 "s_register_operand" "r")
73- (match_operand:SI 2 "const_int_operand" "M")]))
74+ (match_operand:SI 2 "const_shift_count" "M")]))
75 (const_int 0)))
76 (clobber (match_scratch:SI 0 "=r"))]
77 "TARGET_THUMB2"
78@@ -328,7 +328,7 @@
79 (compare:CC (match_operand:SI 0 "s_register_operand" "r")
80 (match_operator:SI 3 "shift_operator"
81 [(match_operand:SI 1 "s_register_operand" "r")
82- (match_operand:SI 2 "const_int_operand" "M")])))]
83+ (match_operand:SI 2 "const_shift_count" "M")])))]
84 "TARGET_THUMB2"
85 "cmp%?\\t%0, %1%S3"
86 [(set_attr "conds" "set")
87@@ -340,7 +340,7 @@
88 [(set (reg:CC_SWP CC_REGNUM)
89 (compare:CC_SWP (match_operator:SI 3 "shift_operator"
90 [(match_operand:SI 1 "s_register_operand" "r")
91- (match_operand:SI 2 "const_int_operand" "M")])
92+ (match_operand:SI 2 "const_shift_count" "M")])
93 (match_operand:SI 0 "s_register_operand" "r")))]
94 "TARGET_THUMB2"
95 "cmp%?\\t%0, %1%S3"
96@@ -354,7 +354,7 @@
97 (compare:CC (match_operand:SI 0 "s_register_operand" "r")
98 (neg:SI (match_operator:SI 3 "shift_operator"
99 [(match_operand:SI 1 "s_register_operand" "r")
100- (match_operand:SI 2 "const_int_operand" "M")]))))]
101+ (match_operand:SI 2 "const_shift_count" "M")]))))]
102 "TARGET_THUMB2"
103 "cmn%?\\t%0, %1%S3"
104 [(set_attr "conds" "set")
105@@ -466,7 +466,7 @@
106 (match_operator:SI 1 "shiftable_operator"
107 [(match_operator:SI 3 "shift_operator"
108 [(match_operand:SI 4 "s_register_operand" "r")
109- (match_operand:SI 5 "const_int_operand" "M")])
110+ (match_operand:SI 5 "const_shift_count" "M")])
111 (match_operand:SI 2 "s_register_operand" "r")]))]
112 "TARGET_THUMB2"
113 "%i1%?\\t%0, %2, %4%S3"
114@@ -499,7 +499,7 @@
115 (compare:CC_NOOV (match_operator:SI 1 "shiftable_operator"
116 [(match_operator:SI 3 "shift_operator"
117 [(match_operand:SI 4 "s_register_operand" "r")
118- (match_operand:SI 5 "const_int_operand" "M")])
119+ (match_operand:SI 5 "const_shift_count" "M")])
120 (match_operand:SI 2 "s_register_operand" "r")])
121 (const_int 0)))
122 (set (match_operand:SI 0 "s_register_operand" "=r")
123@@ -517,7 +517,7 @@
124 (compare:CC_NOOV (match_operator:SI 1 "shiftable_operator"
125 [(match_operator:SI 3 "shift_operator"
126 [(match_operand:SI 4 "s_register_operand" "r")
127- (match_operand:SI 5 "const_int_operand" "M")])
128+ (match_operand:SI 5 "const_shift_count" "M")])
129 (match_operand:SI 2 "s_register_operand" "r")])
130 (const_int 0)))
131 (clobber (match_scratch:SI 0 "=r"))]
132@@ -533,7 +533,7 @@
133 (minus:SI (match_operand:SI 1 "s_register_operand" "r")
134 (match_operator:SI 2 "shift_operator"
135 [(match_operand:SI 3 "s_register_operand" "r")
136- (match_operand:SI 4 "const_int_operand" "M")])))]
137+ (match_operand:SI 4 "const_shift_count" "M")])))]
138 "TARGET_THUMB2"
139 "sub%?\\t%0, %1, %3%S2"
140 [(set_attr "predicable" "yes")
141@@ -547,7 +547,7 @@
142 (minus:SI (match_operand:SI 1 "s_register_operand" "r")
143 (match_operator:SI 2 "shift_operator"
144 [(match_operand:SI 3 "s_register_operand" "r")
145- (match_operand:SI 4 "const_int_operand" "M")]))
146+ (match_operand:SI 4 "const_shift_count" "M")]))
147 (const_int 0)))
148 (set (match_operand:SI 0 "s_register_operand" "=r")
149 (minus:SI (match_dup 1) (match_op_dup 2 [(match_dup 3)
150@@ -565,7 +565,7 @@
151 (minus:SI (match_operand:SI 1 "s_register_operand" "r")
152 (match_operator:SI 2 "shift_operator"
153 [(match_operand:SI 3 "s_register_operand" "r")
154- (match_operand:SI 4 "const_int_operand" "M")]))
155+ (match_operand:SI 4 "const_shift_count" "M")]))
156 (const_int 0)))
157 (clobber (match_scratch:SI 0 "=r"))]
158 "TARGET_THUMB2"
159
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99379.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99379.patch
new file mode 100644
index 000000000..e1e89bf8a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99379.patch
@@ -0,0 +1,2011 @@
12010-08-29 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-04-16 Bernd Schmidt <bernds@codesourcery.com>
6
7 PR target/41514
8 gcc/
9 * config/arm/arm.md (cbranchsi4_insn): Renamed from "*cbranchsi4_insn".
10 If the previous insn is a cbranchsi4_insn with the same arguments,
11 omit the compare instruction.
12
13 gcc/testsuite/
14 * gcc.target/arm/thumb-comparisons.c: New test.
15
16 gcc/
17 * config/arm/arm.md (addsi3_cbranch): If destination is a high
18 register, inputs must be low registers and we need a low register
19 scratch. Handle alternative 2 like alternative 3.
20
21 PR target/40603
22 gcc/
23 * config/arm/arm.md (cbranchqi4): New pattern.
24 * config/arm/predicates.md (const0_operand,
25 cbranchqi4_comparison_operator): New predicates.
26
27 gcc/testsuite/
28 * gcc.target/arm/thumb-cbranchqi.c: New test.
29
30 2010-04-27 Bernd Schmidt <bernds@codesourcery.com>
31
32 PR target/40657
33 gcc/
34 * config/arm/arm.c (thumb1_extra_regs_pushed): New function.
35 (thumb1_expand_prologue, thumb1_output_function_prologue): Call it
36 here to determine which regs to push and how much stack to reserve.
37
38 gcc/testsuite/
39 * gcc.target/arm/thumb-stackframe.c: New test.
40
41 2010-07-02 Bernd Schmidt <bernds@codesourcery.com>
42
43 PR target/42835
44 gcc/
45 * config/arm/arm-modes.def (CC_NOTB): New mode.
46 * config/arm/arm.c (get_arm_condition_code): Handle it.
47 * config/arm/thumb2.md (thumb2_compare_scc): Delete pattern.
48 * config/arm/arm.md (subsi3_compare0_c): New pattern.
49 (compare_scc): Now a define_and_split. Add a number of extra
50 splitters before it.
51
52 gcc/testsuite/
53 * gcc.target/arm/pr42835.c: New test.
54
55 PR target/42172
56 gcc/
57 * config/arm/arm.c (thumb1_rtx_costs): Improve support for SIGN_EXTEND
58 and ZERO_EXTEND.
59 (arm_rtx_costs_1): Likewise.
60 (arm_size_rtx_costs): Use arm_rtx_costs_1 for these codes.
61 * config/arm/arm.md (is_arch6): New attribute.
62 (zero_extendhisi2, zero_extendqisi2, extendhisi2,
63 extendqisi2): Tighten the code somewhat, avoiding invalid
64 RTL to occur in the expander patterns.
65 (thumb1_zero_extendhisi2): Merge with thumb1_zero_extendhisi2_v6.
66 (thumb1_zero_extendhisi2_v6): Delete.
67 (thumb1_extendhisi2): Merge with thumb1_extendhisi2_v6.
68 (thumb1_extendhisi2_v6): Delete.
69 (thumb1_extendqisi2): Merge with thumb1_extendhisi2_v6.
70 (thumb1_extendqisi2_v6): Delete.
71 (zero_extendhisi2 for register input splitter): New.
72 (zero_extendqisi2 for register input splitter): New.
73 (thumb1_extendhisi2 for register input splitter): New.
74 (extendhisi2 for register input splitter): New.
75 (extendqisi2 for register input splitter): New.
76 (TARGET_THUMB1 extendqisi2 for memory input splitter): New.
77 (arm_zero_extendhisi2): Allow nonimmediate_operand for operand 1,
78 and add support for a register alternative requiring a split.
79 (thumb1_zero_extendqisi2): Likewise.
80 (arm_zero_extendqisi2): Likewise.
81 (arm_extendhisi2): Likewise.
82 (arm_extendqisi2): Likewise.
83
84 gcc/testsuite/
85 * gcc.target/arm/pr42172-1.c: New test.
86
87 2010-07-05 Bernd Schmidt <bernds@codesourcery.com>
88
89 * config/arm/arm.c (get_arm_condition_code): Remove CC_NOTBmode case.
90 * arm-modes.def (CC_NOTB): Don't define.
91 * config/arm/arm.md (arm_adddi3): Generate canonical RTL.
92 (adddi_sesidi_di, adddi_zesidi_di): Likewise.
93 (LTUGEU): New code_iterator.
94 (cnb, optab): New corresponding code_attrs.
95 (addsi3_carryin_<optab>): Renamed from addsi3_carryin. Change pattern
96 to canonical form. Operands 1 and 2 are commutative. Parametrize
97 using LTUGEU.
98 (addsi3_carryin_shift_<optab>): Likewise.
99 (addsi3_carryin_alt2_<optab>): Renamed from addsi3_carryin_alt2.
100 Operands 1 and 2 are commutative. Parametrize using LTUGEU.
101 (addsi3_carryin_alt1, addsi3_carryin_alt3): Remove.
102 (subsi3_compare): Renamed from subsi3_compare0_c. Change CC_NOTB to
103 CC.
104 (arm_subsi3_insn): Allow constants for operand 0.
105 (compare_scc peephole for eq case): New.
106 (compare_scc splitters): Change CC_NOTB to CC.
107
108 2010-07-09 Bernd Schmidt <bernds@codesourcery.com>
109
110 PR target/40657
111 gcc/
112 * config/arm/arm.c (thumb1_extra_regs_pushed): New arg FOR_PROLOGUE.
113 All callers changed.
114 Handle the case when we're called for the epilogue.
115 (thumb_unexpanded_epilogue): Use it.
116 (thumb1_expand_epilogue): Likewise.
117
118 gcc/testsuite/
119 * gcc.target/arm/pr40657-1.c: New test.
120 * gcc.target/arm/pr40657-2.c: New test.
121 * gcc.c-torture/execute/pr40657.c: New test.
122
123 gcc/
124 * config/arm/arm.md (addsi3_cbranch): Switch alternatives 0 and 1.
125
126 * config/arm/arm.md (Thumb-1 ldrsb peephole): New.
127
128 * config/arm/arm.md (cbranchqi4): Fix array size.
129 (addsi3_cbranch): Also andle alternative 2 like alternative 3 when
130 calculating length.
131
132 2010-08-27 Paul Brook <paul@codesourcery.com>
133
134 gcc/
135
136=== modified file 'gcc/config/arm/arm-modes.def'
137--- old/gcc/config/arm/arm-modes.def 2010-07-29 16:58:56 +0000
138+++ new/gcc/config/arm/arm-modes.def 2010-08-31 10:00:27 +0000
139@@ -34,6 +34,8 @@
140 CCFPmode should be used with floating equalities.
141 CC_NOOVmode should be used with SImode integer equalities.
142 CC_Zmode should be used if only the Z flag is set correctly
143+ CC_Cmode should be used if only the C flag is set correctly, after an
144+ addition.
145 CC_Nmode should be used if only the N (sign) flag is set correctly
146 CC_CZmode should be used if only the C and Z flags are correct
147 (used for DImode unsigned comparisons).
148
149=== modified file 'gcc/config/arm/arm.c'
150--- old/gcc/config/arm/arm.c 2010-08-25 16:22:17 +0000
151+++ new/gcc/config/arm/arm.c 2010-08-31 10:00:27 +0000
152@@ -6443,6 +6443,7 @@
153 thumb1_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer)
154 {
155 enum machine_mode mode = GET_MODE (x);
156+ int total;
157
158 switch (code)
159 {
160@@ -6545,24 +6546,20 @@
161 return 14;
162 return 2;
163
164+ case SIGN_EXTEND:
165 case ZERO_EXTEND:
166- /* XXX still guessing. */
167- switch (GET_MODE (XEXP (x, 0)))
168- {
169- case QImode:
170- return (1 + (mode == DImode ? 4 : 0)
171- + (GET_CODE (XEXP (x, 0)) == MEM ? 10 : 0));
172-
173- case HImode:
174- return (4 + (mode == DImode ? 4 : 0)
175- + (GET_CODE (XEXP (x, 0)) == MEM ? 10 : 0));
176-
177- case SImode:
178- return (1 + (GET_CODE (XEXP (x, 0)) == MEM ? 10 : 0));
179-
180- default:
181- return 99;
182- }
183+ total = mode == DImode ? COSTS_N_INSNS (1) : 0;
184+ total += thumb1_rtx_costs (XEXP (x, 0), GET_CODE (XEXP (x, 0)), code);
185+
186+ if (mode == SImode)
187+ return total;
188+
189+ if (arm_arch6)
190+ return total + COSTS_N_INSNS (1);
191+
192+ /* Assume a two-shift sequence. Increase the cost slightly so
193+ we prefer actual shifts over an extend operation. */
194+ return total + 1 + COSTS_N_INSNS (2);
195
196 default:
197 return 99;
198@@ -7046,44 +7043,39 @@
199 return false;
200
201 case SIGN_EXTEND:
202- if (GET_MODE_CLASS (mode) == MODE_INT)
203- {
204- *total = 0;
205- if (mode == DImode)
206- *total += COSTS_N_INSNS (1);
207-
208- if (GET_MODE (XEXP (x, 0)) != SImode)
209- {
210- if (arm_arch6)
211- {
212- if (GET_CODE (XEXP (x, 0)) != MEM)
213- *total += COSTS_N_INSNS (1);
214- }
215- else if (!arm_arch4 || GET_CODE (XEXP (x, 0)) != MEM)
216- *total += COSTS_N_INSNS (2);
217- }
218-
219- return false;
220- }
221-
222- /* Fall through */
223 case ZERO_EXTEND:
224 *total = 0;
225 if (GET_MODE_CLASS (mode) == MODE_INT)
226 {
227+ rtx op = XEXP (x, 0);
228+ enum machine_mode opmode = GET_MODE (op);
229+
230 if (mode == DImode)
231 *total += COSTS_N_INSNS (1);
232
233- if (GET_MODE (XEXP (x, 0)) != SImode)
234+ if (opmode != SImode)
235 {
236- if (arm_arch6)
237+ if (MEM_P (op))
238 {
239- if (GET_CODE (XEXP (x, 0)) != MEM)
240- *total += COSTS_N_INSNS (1);
241+ /* If !arm_arch4, we use one of the extendhisi2_mem
242+ or movhi_bytes patterns for HImode. For a QImode
243+ sign extension, we first zero-extend from memory
244+ and then perform a shift sequence. */
245+ if (!arm_arch4 && (opmode != QImode || code == SIGN_EXTEND))
246+ *total += COSTS_N_INSNS (2);
247 }
248- else if (!arm_arch4 || GET_CODE (XEXP (x, 0)) != MEM)
249- *total += COSTS_N_INSNS (GET_MODE (XEXP (x, 0)) == QImode ?
250- 1 : 2);
251+ else if (arm_arch6)
252+ *total += COSTS_N_INSNS (1);
253+
254+ /* We don't have the necessary insn, so we need to perform some
255+ other operation. */
256+ else if (TARGET_ARM && code == ZERO_EXTEND && mode == QImode)
257+ /* An and with constant 255. */
258+ *total += COSTS_N_INSNS (1);
259+ else
260+ /* A shift sequence. Increase costs slightly to avoid
261+ combining two shifts into an extend operation. */
262+ *total += COSTS_N_INSNS (2) + 1;
263 }
264
265 return false;
266@@ -7333,41 +7325,8 @@
267 return false;
268
269 case SIGN_EXTEND:
270- *total = 0;
271- if (GET_MODE_SIZE (GET_MODE (XEXP (x, 0))) < 4)
272- {
273- if (!(arm_arch4 && MEM_P (XEXP (x, 0))))
274- *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2);
275- }
276- if (mode == DImode)
277- *total += COSTS_N_INSNS (1);
278- return false;
279-
280 case ZERO_EXTEND:
281- *total = 0;
282- if (!(arm_arch4 && MEM_P (XEXP (x, 0))))
283- {
284- switch (GET_MODE (XEXP (x, 0)))
285- {
286- case QImode:
287- *total += COSTS_N_INSNS (1);
288- break;
289-
290- case HImode:
291- *total += COSTS_N_INSNS (arm_arch6 ? 1 : 2);
292-
293- case SImode:
294- break;
295-
296- default:
297- *total += COSTS_N_INSNS (2);
298- }
299- }
300-
301- if (mode == DImode)
302- *total += COSTS_N_INSNS (1);
303-
304- return false;
305+ return arm_rtx_costs_1 (x, outer_code, total, 0);
306
307 case CONST_INT:
308 if (const_ok_for_arm (INTVAL (x)))
309@@ -16898,11 +16857,11 @@
310
311 case CC_Cmode:
312 switch (comp_code)
313- {
314- case LTU: return ARM_CS;
315- case GEU: return ARM_CC;
316- default: gcc_unreachable ();
317- }
318+ {
319+ case LTU: return ARM_CS;
320+ case GEU: return ARM_CC;
321+ default: gcc_unreachable ();
322+ }
323
324 case CC_CZmode:
325 switch (comp_code)
326@@ -20127,6 +20086,81 @@
327 #endif
328 }
329
330+/* Given the stack offsets and register mask in OFFSETS, decide how
331+ many additional registers to push instead of subtracting a constant
332+ from SP. For epilogues the principle is the same except we use pop.
333+ FOR_PROLOGUE indicates which we're generating. */
334+static int
335+thumb1_extra_regs_pushed (arm_stack_offsets *offsets, bool for_prologue)
336+{
337+ HOST_WIDE_INT amount;
338+ unsigned long live_regs_mask = offsets->saved_regs_mask;
339+ /* Extract a mask of the ones we can give to the Thumb's push/pop
340+ instruction. */
341+ unsigned long l_mask = live_regs_mask & (for_prologue ? 0x40ff : 0xff);
342+ /* Then count how many other high registers will need to be pushed. */
343+ unsigned long high_regs_pushed = bit_count (live_regs_mask & 0x0f00);
344+ int n_free, reg_base;
345+
346+ if (!for_prologue && frame_pointer_needed)
347+ amount = offsets->locals_base - offsets->saved_regs;
348+ else
349+ amount = offsets->outgoing_args - offsets->saved_regs;
350+
351+ /* If the stack frame size is 512 exactly, we can save one load
352+ instruction, which should make this a win even when optimizing
353+ for speed. */
354+ if (!optimize_size && amount != 512)
355+ return 0;
356+
357+ /* Can't do this if there are high registers to push. */
358+ if (high_regs_pushed != 0)
359+ return 0;
360+
361+ /* Shouldn't do it in the prologue if no registers would normally
362+ be pushed at all. In the epilogue, also allow it if we'll have
363+ a pop insn for the PC. */
364+ if (l_mask == 0
365+ && (for_prologue
366+ || TARGET_BACKTRACE
367+ || (live_regs_mask & 1 << LR_REGNUM) == 0
368+ || TARGET_INTERWORK
369+ || crtl->args.pretend_args_size != 0))
370+ return 0;
371+
372+ /* Don't do this if thumb_expand_prologue wants to emit instructions
373+ between the push and the stack frame allocation. */
374+ if (for_prologue
375+ && ((flag_pic && arm_pic_register != INVALID_REGNUM)
376+ || (!frame_pointer_needed && CALLER_INTERWORKING_SLOT_SIZE > 0)))
377+ return 0;
378+
379+ reg_base = 0;
380+ n_free = 0;
381+ if (!for_prologue)
382+ {
383+ reg_base = arm_size_return_regs () / UNITS_PER_WORD;
384+ live_regs_mask >>= reg_base;
385+ }
386+
387+ while (reg_base + n_free < 8 && !(live_regs_mask & 1)
388+ && (for_prologue || call_used_regs[reg_base + n_free]))
389+ {
390+ live_regs_mask >>= 1;
391+ n_free++;
392+ }
393+
394+ if (n_free == 0)
395+ return 0;
396+ gcc_assert (amount / 4 * 4 == amount);
397+
398+ if (amount >= 512 && (amount - n_free * 4) < 512)
399+ return (amount - 508) / 4;
400+ if (amount <= n_free * 4)
401+ return amount / 4;
402+ return 0;
403+}
404+
405 /* The bits which aren't usefully expanded as rtl. */
406 const char *
407 thumb_unexpanded_epilogue (void)
408@@ -20135,6 +20169,7 @@
409 int regno;
410 unsigned long live_regs_mask = 0;
411 int high_regs_pushed = 0;
412+ int extra_pop;
413 int had_to_push_lr;
414 int size;
415
416@@ -20154,6 +20189,13 @@
417 the register is used to hold a return value. */
418 size = arm_size_return_regs ();
419
420+ extra_pop = thumb1_extra_regs_pushed (offsets, false);
421+ if (extra_pop > 0)
422+ {
423+ unsigned long extra_mask = (1 << extra_pop) - 1;
424+ live_regs_mask |= extra_mask << (size / UNITS_PER_WORD);
425+ }
426+
427 /* The prolog may have pushed some high registers to use as
428 work registers. e.g. the testsuite file:
429 gcc/testsuite/gcc/gcc.c-torture/execute/complex-2.c
430@@ -20237,7 +20279,9 @@
431 live_regs_mask);
432
433 /* We have either just popped the return address into the
434- PC or it is was kept in LR for the entire function. */
435+ PC or it is was kept in LR for the entire function.
436+ Note that thumb_pushpop has already called thumb_exit if the
437+ PC was in the list. */
438 if (!had_to_push_lr)
439 thumb_exit (asm_out_file, LR_REGNUM);
440 }
441@@ -20419,6 +20463,7 @@
442 stack_pointer_rtx);
443
444 amount = offsets->outgoing_args - offsets->saved_regs;
445+ amount -= 4 * thumb1_extra_regs_pushed (offsets, true);
446 if (amount)
447 {
448 if (amount < 512)
449@@ -20503,6 +20548,7 @@
450 emit_insn (gen_movsi (stack_pointer_rtx, hard_frame_pointer_rtx));
451 amount = offsets->locals_base - offsets->saved_regs;
452 }
453+ amount -= 4 * thumb1_extra_regs_pushed (offsets, false);
454
455 gcc_assert (amount >= 0);
456 if (amount)
457@@ -20723,7 +20769,11 @@
458 register. */
459 else if ((l_mask & 0xff) != 0
460 || (high_regs_pushed == 0 && l_mask))
461- thumb_pushpop (f, l_mask, 1, &cfa_offset, l_mask);
462+ {
463+ unsigned long mask = l_mask;
464+ mask |= (1 << thumb1_extra_regs_pushed (offsets, true)) - 1;
465+ thumb_pushpop (f, mask, 1, &cfa_offset, mask);
466+ }
467
468 if (high_regs_pushed)
469 {
470
471=== modified file 'gcc/config/arm/arm.md'
472--- old/gcc/config/arm/arm.md 2010-08-25 16:22:17 +0000
473+++ new/gcc/config/arm/arm.md 2010-08-31 10:00:27 +0000
474@@ -150,6 +150,9 @@
475 ; patterns that share the same RTL in both ARM and Thumb code.
476 (define_attr "is_thumb" "no,yes" (const (symbol_ref "thumb_code")))
477
478+; IS_ARCH6 is set to 'yes' when we are generating code form ARMv6.
479+(define_attr "is_arch6" "no,yes" (const (symbol_ref "arm_arch6")))
480+
481 ;; Operand number of an input operand that is shifted. Zero if the
482 ;; given instruction does not shift one of its input operands.
483 (define_attr "shift" "" (const_int 0))
484@@ -515,8 +518,8 @@
485 (compare:CC_C (plus:SI (match_dup 1) (match_dup 2))
486 (match_dup 1)))
487 (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])
488- (set (match_dup 3) (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
489- (plus:SI (match_dup 4) (match_dup 5))))]
490+ (set (match_dup 3) (plus:SI (plus:SI (match_dup 4) (match_dup 5))
491+ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))]
492 "
493 {
494 operands[3] = gen_highpart (SImode, operands[0]);
495@@ -543,10 +546,10 @@
496 (compare:CC_C (plus:SI (match_dup 1) (match_dup 2))
497 (match_dup 1)))
498 (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])
499- (set (match_dup 3) (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
500- (plus:SI (ashiftrt:SI (match_dup 2)
501+ (set (match_dup 3) (plus:SI (plus:SI (ashiftrt:SI (match_dup 2)
502 (const_int 31))
503- (match_dup 4))))]
504+ (match_dup 4))
505+ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))]
506 "
507 {
508 operands[3] = gen_highpart (SImode, operands[0]);
509@@ -572,8 +575,8 @@
510 (compare:CC_C (plus:SI (match_dup 1) (match_dup 2))
511 (match_dup 1)))
512 (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 2)))])
513- (set (match_dup 3) (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
514- (plus:SI (match_dup 4) (const_int 0))))]
515+ (set (match_dup 3) (plus:SI (plus:SI (match_dup 4) (const_int 0))
516+ (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))]
517 "
518 {
519 operands[3] = gen_highpart (SImode, operands[0]);
520@@ -861,24 +864,38 @@
521 [(set_attr "conds" "set")]
522 )
523
524-(define_insn "*addsi3_carryin"
525- [(set (match_operand:SI 0 "s_register_operand" "=r")
526- (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
527- (plus:SI (match_operand:SI 1 "s_register_operand" "r")
528- (match_operand:SI 2 "arm_rhs_operand" "rI"))))]
529- "TARGET_32BIT"
530- "adc%?\\t%0, %1, %2"
531- [(set_attr "conds" "use")]
532-)
533-
534-(define_insn "*addsi3_carryin_shift"
535- [(set (match_operand:SI 0 "s_register_operand" "=r")
536- (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
537- (plus:SI
538- (match_operator:SI 2 "shift_operator"
539- [(match_operand:SI 3 "s_register_operand" "r")
540- (match_operand:SI 4 "reg_or_int_operand" "rM")])
541- (match_operand:SI 1 "s_register_operand" "r"))))]
542+(define_code_iterator LTUGEU [ltu geu])
543+(define_code_attr cnb [(ltu "CC_C") (geu "CC")])
544+(define_code_attr optab [(ltu "ltu") (geu "geu")])
545+
546+(define_insn "*addsi3_carryin_<optab>"
547+ [(set (match_operand:SI 0 "s_register_operand" "=r")
548+ (plus:SI (plus:SI (match_operand:SI 1 "s_register_operand" "%r")
549+ (match_operand:SI 2 "arm_rhs_operand" "rI"))
550+ (LTUGEU:SI (reg:<cnb> CC_REGNUM) (const_int 0))))]
551+ "TARGET_32BIT"
552+ "adc%?\\t%0, %1, %2"
553+ [(set_attr "conds" "use")]
554+)
555+
556+(define_insn "*addsi3_carryin_alt2_<optab>"
557+ [(set (match_operand:SI 0 "s_register_operand" "=r")
558+ (plus:SI (plus:SI (LTUGEU:SI (reg:<cnb> CC_REGNUM) (const_int 0))
559+ (match_operand:SI 1 "s_register_operand" "%r"))
560+ (match_operand:SI 2 "arm_rhs_operand" "rI")))]
561+ "TARGET_32BIT"
562+ "adc%?\\t%0, %1, %2"
563+ [(set_attr "conds" "use")]
564+)
565+
566+(define_insn "*addsi3_carryin_shift_<optab>"
567+ [(set (match_operand:SI 0 "s_register_operand" "=r")
568+ (plus:SI (plus:SI
569+ (match_operator:SI 2 "shift_operator"
570+ [(match_operand:SI 3 "s_register_operand" "r")
571+ (match_operand:SI 4 "reg_or_int_operand" "rM")])
572+ (match_operand:SI 1 "s_register_operand" "r"))
573+ (LTUGEU:SI (reg:<cnb> CC_REGNUM) (const_int 0))))]
574 "TARGET_32BIT"
575 "adc%?\\t%0, %1, %3%S2"
576 [(set_attr "conds" "use")
577@@ -887,36 +904,6 @@
578 (const_string "alu_shift_reg")))]
579 )
580
581-(define_insn "*addsi3_carryin_alt1"
582- [(set (match_operand:SI 0 "s_register_operand" "=r")
583- (plus:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r")
584- (match_operand:SI 2 "arm_rhs_operand" "rI"))
585- (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))]
586- "TARGET_32BIT"
587- "adc%?\\t%0, %1, %2"
588- [(set_attr "conds" "use")]
589-)
590-
591-(define_insn "*addsi3_carryin_alt2"
592- [(set (match_operand:SI 0 "s_register_operand" "=r")
593- (plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
594- (match_operand:SI 1 "s_register_operand" "r"))
595- (match_operand:SI 2 "arm_rhs_operand" "rI")))]
596- "TARGET_32BIT"
597- "adc%?\\t%0, %1, %2"
598- [(set_attr "conds" "use")]
599-)
600-
601-(define_insn "*addsi3_carryin_alt3"
602- [(set (match_operand:SI 0 "s_register_operand" "=r")
603- (plus:SI (plus:SI (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))
604- (match_operand:SI 2 "arm_rhs_operand" "rI"))
605- (match_operand:SI 1 "s_register_operand" "r")))]
606- "TARGET_32BIT"
607- "adc%?\\t%0, %1, %2"
608- [(set_attr "conds" "use")]
609-)
610-
611 (define_expand "incscc"
612 [(set (match_operand:SI 0 "s_register_operand" "=r,r")
613 (plus:SI (match_operator:SI 2 "arm_comparison_operator"
614@@ -1116,24 +1103,27 @@
615
616 ; ??? Check Thumb-2 split length
617 (define_insn_and_split "*arm_subsi3_insn"
618- [(set (match_operand:SI 0 "s_register_operand" "=r,rk,r")
619- (minus:SI (match_operand:SI 1 "reg_or_int_operand" "rI,!k,?n")
620- (match_operand:SI 2 "s_register_operand" "r, r, r")))]
621+ [(set (match_operand:SI 0 "s_register_operand" "=r,r,rk,r,r")
622+ (minus:SI (match_operand:SI 1 "reg_or_int_operand" "rI,r,!k,?n,r")
623+ (match_operand:SI 2 "reg_or_int_operand" "r,rI, r, r,?n")))]
624 "TARGET_32BIT"
625 "@
626 rsb%?\\t%0, %2, %1
627 sub%?\\t%0, %1, %2
628+ sub%?\\t%0, %1, %2
629+ #
630 #"
631- "TARGET_32BIT
632- && GET_CODE (operands[1]) == CONST_INT
633- && !const_ok_for_arm (INTVAL (operands[1]))"
634+ "&& ((GET_CODE (operands[1]) == CONST_INT
635+ && !const_ok_for_arm (INTVAL (operands[1])))
636+ || (GET_CODE (operands[2]) == CONST_INT
637+ && !const_ok_for_arm (INTVAL (operands[2]))))"
638 [(clobber (const_int 0))]
639 "
640 arm_split_constant (MINUS, SImode, curr_insn,
641 INTVAL (operands[1]), operands[0], operands[2], 0);
642 DONE;
643 "
644- [(set_attr "length" "4,4,16")
645+ [(set_attr "length" "4,4,4,16,16")
646 (set_attr "predicable" "yes")]
647 )
648
649@@ -1165,6 +1155,19 @@
650 [(set_attr "conds" "set")]
651 )
652
653+(define_insn "*subsi3_compare"
654+ [(set (reg:CC CC_REGNUM)
655+ (compare:CC (match_operand:SI 1 "arm_rhs_operand" "r,I")
656+ (match_operand:SI 2 "arm_rhs_operand" "rI,r")))
657+ (set (match_operand:SI 0 "s_register_operand" "=r,r")
658+ (minus:SI (match_dup 1) (match_dup 2)))]
659+ "TARGET_32BIT"
660+ "@
661+ sub%.\\t%0, %1, %2
662+ rsb%.\\t%0, %2, %1"
663+ [(set_attr "conds" "set")]
664+)
665+
666 (define_expand "decscc"
667 [(set (match_operand:SI 0 "s_register_operand" "=r,r")
668 (minus:SI (match_operand:SI 1 "s_register_operand" "0,?r")
669@@ -4050,93 +4053,46 @@
670 )
671
672 (define_expand "zero_extendhisi2"
673- [(set (match_dup 2)
674- (ashift:SI (match_operand:HI 1 "nonimmediate_operand" "")
675- (const_int 16)))
676- (set (match_operand:SI 0 "s_register_operand" "")
677- (lshiftrt:SI (match_dup 2) (const_int 16)))]
678+ [(set (match_operand:SI 0 "s_register_operand" "")
679+ (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
680 "TARGET_EITHER"
681- "
682- {
683- if ((TARGET_THUMB1 || arm_arch4) && GET_CODE (operands[1]) == MEM)
684- {
685- emit_insn (gen_rtx_SET (VOIDmode, operands[0],
686- gen_rtx_ZERO_EXTEND (SImode, operands[1])));
687- DONE;
688- }
689-
690- if (TARGET_ARM && GET_CODE (operands[1]) == MEM)
691- {
692- emit_insn (gen_movhi_bytes (operands[0], operands[1]));
693- DONE;
694- }
695-
696- if (!s_register_operand (operands[1], HImode))
697- operands[1] = copy_to_mode_reg (HImode, operands[1]);
698-
699- if (arm_arch6)
700- {
701- emit_insn (gen_rtx_SET (VOIDmode, operands[0],
702- gen_rtx_ZERO_EXTEND (SImode, operands[1])));
703- DONE;
704- }
705-
706- operands[1] = gen_lowpart (SImode, operands[1]);
707- operands[2] = gen_reg_rtx (SImode);
708- }"
709-)
710+{
711+ if (TARGET_ARM && !arm_arch4 && MEM_P (operands[1]))
712+ {
713+ emit_insn (gen_movhi_bytes (operands[0], operands[1]));
714+ DONE;
715+ }
716+ if (!arm_arch6 && !MEM_P (operands[1]))
717+ {
718+ rtx t = gen_lowpart (SImode, operands[1]);
719+ rtx tmp = gen_reg_rtx (SImode);
720+ emit_insn (gen_ashlsi3 (tmp, t, GEN_INT (16)));
721+ emit_insn (gen_lshrsi3 (operands[0], tmp, GEN_INT (16)));
722+ DONE;
723+ }
724+})
725+
726+(define_split
727+ [(set (match_operand:SI 0 "register_operand" "")
728+ (zero_extend:SI (match_operand:HI 1 "register_operand" "l,m")))]
729+ "!TARGET_THUMB2 && !arm_arch6"
730+ [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16)))
731+ (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))]
732+{
733+ operands[2] = gen_lowpart (SImode, operands[1]);
734+})
735
736 (define_insn "*thumb1_zero_extendhisi2"
737- [(set (match_operand:SI 0 "register_operand" "=l")
738- (zero_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
739- "TARGET_THUMB1 && !arm_arch6"
740- "*
741- rtx mem = XEXP (operands[1], 0);
742-
743- if (GET_CODE (mem) == CONST)
744- mem = XEXP (mem, 0);
745-
746- if (GET_CODE (mem) == LABEL_REF)
747- return \"ldr\\t%0, %1\";
748-
749- if (GET_CODE (mem) == PLUS)
750- {
751- rtx a = XEXP (mem, 0);
752- rtx b = XEXP (mem, 1);
753-
754- /* This can happen due to bugs in reload. */
755- if (GET_CODE (a) == REG && REGNO (a) == SP_REGNUM)
756- {
757- rtx ops[2];
758- ops[0] = operands[0];
759- ops[1] = a;
760-
761- output_asm_insn (\"mov %0, %1\", ops);
762-
763- XEXP (mem, 0) = operands[0];
764- }
765-
766- else if ( GET_CODE (a) == LABEL_REF
767- && GET_CODE (b) == CONST_INT)
768- return \"ldr\\t%0, %1\";
769- }
770-
771- return \"ldrh\\t%0, %1\";
772- "
773- [(set_attr "length" "4")
774- (set_attr "type" "load_byte")
775- (set_attr "pool_range" "60")]
776-)
777-
778-(define_insn "*thumb1_zero_extendhisi2_v6"
779 [(set (match_operand:SI 0 "register_operand" "=l,l")
780 (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "l,m")))]
781- "TARGET_THUMB1 && arm_arch6"
782+ "TARGET_THUMB1"
783 "*
784 rtx mem;
785
786- if (which_alternative == 0)
787+ if (which_alternative == 0 && arm_arch6)
788 return \"uxth\\t%0, %1\";
789+ if (which_alternative == 0)
790+ return \"#\";
791
792 mem = XEXP (operands[1], 0);
793
794@@ -4170,20 +4126,25 @@
795
796 return \"ldrh\\t%0, %1\";
797 "
798- [(set_attr "length" "2,4")
799+ [(set_attr_alternative "length"
800+ [(if_then_else (eq_attr "is_arch6" "yes")
801+ (const_int 2) (const_int 4))
802+ (const_int 4)])
803 (set_attr "type" "alu_shift,load_byte")
804 (set_attr "pool_range" "*,60")]
805 )
806
807 (define_insn "*arm_zero_extendhisi2"
808- [(set (match_operand:SI 0 "s_register_operand" "=r")
809- (zero_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
810+ [(set (match_operand:SI 0 "s_register_operand" "=r,r")
811+ (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
812 "TARGET_ARM && arm_arch4 && !arm_arch6"
813- "ldr%(h%)\\t%0, %1"
814- [(set_attr "type" "load_byte")
815+ "@
816+ #
817+ ldr%(h%)\\t%0, %1"
818+ [(set_attr "type" "alu_shift,load_byte")
819 (set_attr "predicable" "yes")
820- (set_attr "pool_range" "256")
821- (set_attr "neg_pool_range" "244")]
822+ (set_attr "pool_range" "*,256")
823+ (set_attr "neg_pool_range" "*,244")]
824 )
825
826 (define_insn "*arm_zero_extendhisi2_v6"
827@@ -4213,50 +4174,49 @@
828 [(set (match_operand:SI 0 "s_register_operand" "")
829 (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
830 "TARGET_EITHER"
831- "
832- if (!arm_arch6 && GET_CODE (operands[1]) != MEM)
833- {
834- if (TARGET_ARM)
835- {
836- emit_insn (gen_andsi3 (operands[0],
837- gen_lowpart (SImode, operands[1]),
838- GEN_INT (255)));
839- }
840- else /* TARGET_THUMB */
841- {
842- rtx temp = gen_reg_rtx (SImode);
843- rtx ops[3];
844-
845- operands[1] = copy_to_mode_reg (QImode, operands[1]);
846- operands[1] = gen_lowpart (SImode, operands[1]);
847-
848- ops[0] = temp;
849- ops[1] = operands[1];
850- ops[2] = GEN_INT (24);
851-
852- emit_insn (gen_rtx_SET (VOIDmode, ops[0],
853- gen_rtx_ASHIFT (SImode, ops[1], ops[2])));
854-
855- ops[0] = operands[0];
856- ops[1] = temp;
857- ops[2] = GEN_INT (24);
858-
859- emit_insn (gen_rtx_SET (VOIDmode, ops[0],
860- gen_rtx_LSHIFTRT (SImode, ops[1], ops[2])));
861- }
862- DONE;
863- }
864- "
865-)
866+{
867+ if (TARGET_ARM && !arm_arch6 && GET_CODE (operands[1]) != MEM)
868+ {
869+ emit_insn (gen_andsi3 (operands[0],
870+ gen_lowpart (SImode, operands[1]),
871+ GEN_INT (255)));
872+ DONE;
873+ }
874+ if (!arm_arch6 && !MEM_P (operands[1]))
875+ {
876+ rtx t = gen_lowpart (SImode, operands[1]);
877+ rtx tmp = gen_reg_rtx (SImode);
878+ emit_insn (gen_ashlsi3 (tmp, t, GEN_INT (24)));
879+ emit_insn (gen_lshrsi3 (operands[0], tmp, GEN_INT (24)));
880+ DONE;
881+ }
882+})
883+
884+(define_split
885+ [(set (match_operand:SI 0 "register_operand" "")
886+ (zero_extend:SI (match_operand:QI 1 "register_operand" "")))]
887+ "!arm_arch6"
888+ [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 24)))
889+ (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 24)))]
890+{
891+ operands[2] = simplify_gen_subreg (SImode, operands[1], QImode, 0);
892+ if (TARGET_ARM)
893+ {
894+ emit_insn (gen_andsi3 (operands[0], operands[2], GEN_INT (255)));
895+ DONE;
896+ }
897+})
898
899 (define_insn "*thumb1_zero_extendqisi2"
900- [(set (match_operand:SI 0 "register_operand" "=l")
901- (zero_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
902+ [(set (match_operand:SI 0 "register_operand" "=l,l")
903+ (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "l,m")))]
904 "TARGET_THUMB1 && !arm_arch6"
905- "ldrb\\t%0, %1"
906- [(set_attr "length" "2")
907- (set_attr "type" "load_byte")
908- (set_attr "pool_range" "32")]
909+ "@
910+ #
911+ ldrb\\t%0, %1"
912+ [(set_attr "length" "4,2")
913+ (set_attr "type" "alu_shift,load_byte")
914+ (set_attr "pool_range" "*,32")]
915 )
916
917 (define_insn "*thumb1_zero_extendqisi2_v6"
918@@ -4272,14 +4232,17 @@
919 )
920
921 (define_insn "*arm_zero_extendqisi2"
922- [(set (match_operand:SI 0 "s_register_operand" "=r")
923- (zero_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
924+ [(set (match_operand:SI 0 "s_register_operand" "=r,r")
925+ (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
926 "TARGET_ARM && !arm_arch6"
927- "ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2"
928- [(set_attr "type" "load_byte")
929+ "@
930+ #
931+ ldr%(b%)\\t%0, %1\\t%@ zero_extendqisi2"
932+ [(set_attr "length" "8,4")
933+ (set_attr "type" "alu_shift,load_byte")
934 (set_attr "predicable" "yes")
935- (set_attr "pool_range" "4096")
936- (set_attr "neg_pool_range" "4084")]
937+ (set_attr "pool_range" "*,4096")
938+ (set_attr "neg_pool_range" "*,4084")]
939 )
940
941 (define_insn "*arm_zero_extendqisi2_v6"
942@@ -4358,108 +4321,42 @@
943 )
944
945 (define_expand "extendhisi2"
946- [(set (match_dup 2)
947- (ashift:SI (match_operand:HI 1 "nonimmediate_operand" "")
948- (const_int 16)))
949- (set (match_operand:SI 0 "s_register_operand" "")
950- (ashiftrt:SI (match_dup 2)
951- (const_int 16)))]
952+ [(set (match_operand:SI 0 "s_register_operand" "")
953+ (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
954 "TARGET_EITHER"
955- "
956- {
957- if (GET_CODE (operands[1]) == MEM)
958- {
959- if (TARGET_THUMB1)
960- {
961- emit_insn (gen_thumb1_extendhisi2 (operands[0], operands[1]));
962- DONE;
963- }
964- else if (arm_arch4)
965- {
966- emit_insn (gen_rtx_SET (VOIDmode, operands[0],
967- gen_rtx_SIGN_EXTEND (SImode, operands[1])));
968- DONE;
969- }
970- }
971-
972- if (TARGET_ARM && GET_CODE (operands[1]) == MEM)
973- {
974- emit_insn (gen_extendhisi2_mem (operands[0], operands[1]));
975- DONE;
976- }
977-
978- if (!s_register_operand (operands[1], HImode))
979- operands[1] = copy_to_mode_reg (HImode, operands[1]);
980-
981- if (arm_arch6)
982- {
983- if (TARGET_THUMB1)
984- emit_insn (gen_thumb1_extendhisi2 (operands[0], operands[1]));
985- else
986- emit_insn (gen_rtx_SET (VOIDmode, operands[0],
987- gen_rtx_SIGN_EXTEND (SImode, operands[1])));
988-
989- DONE;
990- }
991-
992- operands[1] = gen_lowpart (SImode, operands[1]);
993- operands[2] = gen_reg_rtx (SImode);
994- }"
995-)
996-
997-(define_insn "thumb1_extendhisi2"
998- [(set (match_operand:SI 0 "register_operand" "=l")
999- (sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))
1000- (clobber (match_scratch:SI 2 "=&l"))]
1001- "TARGET_THUMB1 && !arm_arch6"
1002- "*
1003- {
1004- rtx ops[4];
1005- rtx mem = XEXP (operands[1], 0);
1006-
1007- /* This code used to try to use 'V', and fix the address only if it was
1008- offsettable, but this fails for e.g. REG+48 because 48 is outside the
1009- range of QImode offsets, and offsettable_address_p does a QImode
1010- address check. */
1011-
1012- if (GET_CODE (mem) == CONST)
1013- mem = XEXP (mem, 0);
1014-
1015- if (GET_CODE (mem) == LABEL_REF)
1016- return \"ldr\\t%0, %1\";
1017-
1018- if (GET_CODE (mem) == PLUS)
1019- {
1020- rtx a = XEXP (mem, 0);
1021- rtx b = XEXP (mem, 1);
1022-
1023- if (GET_CODE (a) == LABEL_REF
1024- && GET_CODE (b) == CONST_INT)
1025- return \"ldr\\t%0, %1\";
1026-
1027- if (GET_CODE (b) == REG)
1028- return \"ldrsh\\t%0, %1\";
1029-
1030- ops[1] = a;
1031- ops[2] = b;
1032- }
1033- else
1034- {
1035- ops[1] = mem;
1036- ops[2] = const0_rtx;
1037- }
1038-
1039- gcc_assert (GET_CODE (ops[1]) == REG);
1040-
1041- ops[0] = operands[0];
1042- ops[3] = operands[2];
1043- output_asm_insn (\"mov\\t%3, %2\;ldrsh\\t%0, [%1, %3]\", ops);
1044- return \"\";
1045- }"
1046- [(set_attr "length" "4")
1047- (set_attr "type" "load_byte")
1048- (set_attr "pool_range" "1020")]
1049-)
1050+{
1051+ if (TARGET_THUMB1)
1052+ {
1053+ emit_insn (gen_thumb1_extendhisi2 (operands[0], operands[1]));
1054+ DONE;
1055+ }
1056+ if (MEM_P (operands[1]) && TARGET_ARM && !arm_arch4)
1057+ {
1058+ emit_insn (gen_extendhisi2_mem (operands[0], operands[1]));
1059+ DONE;
1060+ }
1061+
1062+ if (!arm_arch6 && !MEM_P (operands[1]))
1063+ {
1064+ rtx t = gen_lowpart (SImode, operands[1]);
1065+ rtx tmp = gen_reg_rtx (SImode);
1066+ emit_insn (gen_ashlsi3 (tmp, t, GEN_INT (16)));
1067+ emit_insn (gen_ashrsi3 (operands[0], tmp, GEN_INT (16)));
1068+ DONE;
1069+ }
1070+})
1071+
1072+(define_split
1073+ [(parallel
1074+ [(set (match_operand:SI 0 "register_operand" "")
1075+ (sign_extend:SI (match_operand:HI 1 "register_operand" "")))
1076+ (clobber (match_scratch:SI 2 ""))])]
1077+ "!arm_arch6"
1078+ [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16)))
1079+ (set (match_dup 0) (ashiftrt:SI (match_dup 0) (const_int 16)))]
1080+{
1081+ operands[2] = simplify_gen_subreg (SImode, operands[1], HImode, 0);
1082+})
1083
1084 ;; We used to have an early-clobber on the scratch register here.
1085 ;; However, there's a bug somewhere in reload which means that this
1086@@ -4468,16 +4365,18 @@
1087 ;; we try to verify the operands. Fortunately, we don't really need
1088 ;; the early-clobber: we can always use operand 0 if operand 2
1089 ;; overlaps the address.
1090-(define_insn "*thumb1_extendhisi2_insn_v6"
1091+(define_insn "thumb1_extendhisi2"
1092 [(set (match_operand:SI 0 "register_operand" "=l,l")
1093 (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "l,m")))
1094 (clobber (match_scratch:SI 2 "=X,l"))]
1095- "TARGET_THUMB1 && arm_arch6"
1096+ "TARGET_THUMB1"
1097 "*
1098 {
1099 rtx ops[4];
1100 rtx mem;
1101
1102+ if (which_alternative == 0 && !arm_arch6)
1103+ return \"#\";
1104 if (which_alternative == 0)
1105 return \"sxth\\t%0, %1\";
1106
1107@@ -4525,7 +4424,10 @@
1108 output_asm_insn (\"mov\\t%3, %2\;ldrsh\\t%0, [%1, %3]\", ops);
1109 return \"\";
1110 }"
1111- [(set_attr "length" "2,4")
1112+ [(set_attr_alternative "length"
1113+ [(if_then_else (eq_attr "is_arch6" "yes")
1114+ (const_int 2) (const_int 4))
1115+ (const_int 4)])
1116 (set_attr "type" "alu_shift,load_byte")
1117 (set_attr "pool_range" "*,1020")]
1118 )
1119@@ -4566,15 +4468,28 @@
1120 }"
1121 )
1122
1123+(define_split
1124+ [(set (match_operand:SI 0 "register_operand" "")
1125+ (sign_extend:SI (match_operand:HI 1 "register_operand" "")))]
1126+ "!arm_arch6"
1127+ [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16)))
1128+ (set (match_dup 0) (ashiftrt:SI (match_dup 0) (const_int 16)))]
1129+{
1130+ operands[2] = simplify_gen_subreg (SImode, operands[1], HImode, 0);
1131+})
1132+
1133 (define_insn "*arm_extendhisi2"
1134- [(set (match_operand:SI 0 "s_register_operand" "=r")
1135- (sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
1136+ [(set (match_operand:SI 0 "s_register_operand" "=r,r")
1137+ (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
1138 "TARGET_ARM && arm_arch4 && !arm_arch6"
1139- "ldr%(sh%)\\t%0, %1"
1140- [(set_attr "type" "load_byte")
1141+ "@
1142+ #
1143+ ldr%(sh%)\\t%0, %1"
1144+ [(set_attr "length" "8,4")
1145+ (set_attr "type" "alu_shift,load_byte")
1146 (set_attr "predicable" "yes")
1147- (set_attr "pool_range" "256")
1148- (set_attr "neg_pool_range" "244")]
1149+ (set_attr "pool_range" "*,256")
1150+ (set_attr "neg_pool_range" "*,244")]
1151 )
1152
1153 ;; ??? Check Thumb-2 pool range
1154@@ -4636,46 +4551,45 @@
1155 )
1156
1157 (define_expand "extendqisi2"
1158- [(set (match_dup 2)
1159- (ashift:SI (match_operand:QI 1 "arm_reg_or_extendqisi_mem_op" "")
1160- (const_int 24)))
1161- (set (match_operand:SI 0 "s_register_operand" "")
1162- (ashiftrt:SI (match_dup 2)
1163- (const_int 24)))]
1164+ [(set (match_operand:SI 0 "s_register_operand" "")
1165+ (sign_extend:SI (match_operand:QI 1 "arm_reg_or_extendqisi_mem_op" "")))]
1166 "TARGET_EITHER"
1167- "
1168- {
1169- if ((TARGET_THUMB || arm_arch4) && GET_CODE (operands[1]) == MEM)
1170- {
1171- emit_insn (gen_rtx_SET (VOIDmode, operands[0],
1172- gen_rtx_SIGN_EXTEND (SImode, operands[1])));
1173- DONE;
1174- }
1175-
1176- if (!s_register_operand (operands[1], QImode))
1177- operands[1] = copy_to_mode_reg (QImode, operands[1]);
1178-
1179- if (arm_arch6)
1180- {
1181- emit_insn (gen_rtx_SET (VOIDmode, operands[0],
1182- gen_rtx_SIGN_EXTEND (SImode, operands[1])));
1183- DONE;
1184- }
1185-
1186- operands[1] = gen_lowpart (SImode, operands[1]);
1187- operands[2] = gen_reg_rtx (SImode);
1188- }"
1189-)
1190+{
1191+ if (!arm_arch4 && MEM_P (operands[1]))
1192+ operands[1] = copy_to_mode_reg (QImode, operands[1]);
1193+
1194+ if (!arm_arch6 && !MEM_P (operands[1]))
1195+ {
1196+ rtx t = gen_lowpart (SImode, operands[1]);
1197+ rtx tmp = gen_reg_rtx (SImode);
1198+ emit_insn (gen_ashlsi3 (tmp, t, GEN_INT (24)));
1199+ emit_insn (gen_ashrsi3 (operands[0], tmp, GEN_INT (24)));
1200+ DONE;
1201+ }
1202+})
1203+
1204+(define_split
1205+ [(set (match_operand:SI 0 "register_operand" "")
1206+ (sign_extend:SI (match_operand:QI 1 "register_operand" "")))]
1207+ "!arm_arch6"
1208+ [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 24)))
1209+ (set (match_dup 0) (ashiftrt:SI (match_dup 0) (const_int 24)))]
1210+{
1211+ operands[2] = simplify_gen_subreg (SImode, operands[1], QImode, 0);
1212+})
1213
1214 (define_insn "*arm_extendqisi"
1215- [(set (match_operand:SI 0 "s_register_operand" "=r")
1216- (sign_extend:SI (match_operand:QI 1 "arm_extendqisi_mem_op" "Uq")))]
1217+ [(set (match_operand:SI 0 "s_register_operand" "=r,r")
1218+ (sign_extend:SI (match_operand:QI 1 "arm_reg_or_extendqisi_mem_op" "r,Uq")))]
1219 "TARGET_ARM && arm_arch4 && !arm_arch6"
1220- "ldr%(sb%)\\t%0, %1"
1221- [(set_attr "type" "load_byte")
1222+ "@
1223+ #
1224+ ldr%(sb%)\\t%0, %1"
1225+ [(set_attr "length" "8,4")
1226+ (set_attr "type" "alu_shift,load_byte")
1227 (set_attr "predicable" "yes")
1228- (set_attr "pool_range" "256")
1229- (set_attr "neg_pool_range" "244")]
1230+ (set_attr "pool_range" "*,256")
1231+ (set_attr "neg_pool_range" "*,244")]
1232 )
1233
1234 (define_insn "*arm_extendqisi_v6"
1235@@ -4703,162 +4617,103 @@
1236 (set_attr "predicable" "yes")]
1237 )
1238
1239-(define_insn "*thumb1_extendqisi2"
1240- [(set (match_operand:SI 0 "register_operand" "=l,l")
1241- (sign_extend:SI (match_operand:QI 1 "memory_operand" "V,m")))]
1242- "TARGET_THUMB1 && !arm_arch6"
1243- "*
1244- {
1245- rtx ops[3];
1246- rtx mem = XEXP (operands[1], 0);
1247-
1248- if (GET_CODE (mem) == CONST)
1249- mem = XEXP (mem, 0);
1250-
1251- if (GET_CODE (mem) == LABEL_REF)
1252- return \"ldr\\t%0, %1\";
1253-
1254- if (GET_CODE (mem) == PLUS
1255- && GET_CODE (XEXP (mem, 0)) == LABEL_REF)
1256- return \"ldr\\t%0, %1\";
1257-
1258- if (which_alternative == 0)
1259- return \"ldrsb\\t%0, %1\";
1260-
1261- ops[0] = operands[0];
1262-
1263- if (GET_CODE (mem) == PLUS)
1264- {
1265- rtx a = XEXP (mem, 0);
1266- rtx b = XEXP (mem, 1);
1267-
1268- ops[1] = a;
1269- ops[2] = b;
1270-
1271- if (GET_CODE (a) == REG)
1272- {
1273- if (GET_CODE (b) == REG)
1274- output_asm_insn (\"ldrsb\\t%0, [%1, %2]\", ops);
1275- else if (REGNO (a) == REGNO (ops[0]))
1276- {
1277- output_asm_insn (\"ldrb\\t%0, [%1, %2]\", ops);
1278- output_asm_insn (\"lsl\\t%0, %0, #24\", ops);
1279- output_asm_insn (\"asr\\t%0, %0, #24\", ops);
1280- }
1281- else
1282- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
1283- }
1284- else
1285- {
1286- gcc_assert (GET_CODE (b) == REG);
1287- if (REGNO (b) == REGNO (ops[0]))
1288- {
1289- output_asm_insn (\"ldrb\\t%0, [%2, %1]\", ops);
1290- output_asm_insn (\"lsl\\t%0, %0, #24\", ops);
1291- output_asm_insn (\"asr\\t%0, %0, #24\", ops);
1292- }
1293- else
1294- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
1295- }
1296- }
1297- else if (GET_CODE (mem) == REG && REGNO (ops[0]) == REGNO (mem))
1298- {
1299- output_asm_insn (\"ldrb\\t%0, [%0, #0]\", ops);
1300- output_asm_insn (\"lsl\\t%0, %0, #24\", ops);
1301- output_asm_insn (\"asr\\t%0, %0, #24\", ops);
1302- }
1303- else
1304- {
1305- ops[1] = mem;
1306- ops[2] = const0_rtx;
1307-
1308- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
1309- }
1310- return \"\";
1311- }"
1312- [(set_attr "length" "2,6")
1313- (set_attr "type" "load_byte,load_byte")
1314- (set_attr "pool_range" "32,32")]
1315-)
1316-
1317-(define_insn "*thumb1_extendqisi2_v6"
1318+(define_split
1319+ [(set (match_operand:SI 0 "register_operand" "")
1320+ (sign_extend:SI (match_operand:QI 1 "memory_operand" "")))]
1321+ "TARGET_THUMB1 && reload_completed"
1322+ [(set (match_dup 0) (match_dup 2))
1323+ (set (match_dup 0) (sign_extend:SI (match_dup 3)))]
1324+{
1325+ rtx addr = XEXP (operands[1], 0);
1326+
1327+ if (GET_CODE (addr) == CONST)
1328+ addr = XEXP (addr, 0);
1329+
1330+ if (GET_CODE (addr) == PLUS
1331+ && REG_P (XEXP (addr, 0)) && REG_P (XEXP (addr, 1)))
1332+ /* No split necessary. */
1333+ FAIL;
1334+
1335+ if (GET_CODE (addr) == PLUS
1336+ && !REG_P (XEXP (addr, 0)) && !REG_P (XEXP (addr, 1)))
1337+ FAIL;
1338+
1339+ if (reg_overlap_mentioned_p (operands[0], addr))
1340+ {
1341+ rtx t = gen_lowpart (QImode, operands[0]);
1342+ emit_move_insn (t, operands[1]);
1343+ emit_insn (gen_thumb1_extendqisi2 (operands[0], t));
1344+ DONE;
1345+ }
1346+
1347+ if (REG_P (addr))
1348+ {
1349+ addr = gen_rtx_PLUS (Pmode, addr, operands[0]);
1350+ operands[2] = const0_rtx;
1351+ }
1352+ else if (GET_CODE (addr) != PLUS)
1353+ FAIL;
1354+ else if (REG_P (XEXP (addr, 0)))
1355+ {
1356+ operands[2] = XEXP (addr, 1);
1357+ addr = gen_rtx_PLUS (Pmode, XEXP (addr, 0), operands[0]);
1358+ }
1359+ else
1360+ {
1361+ operands[2] = XEXP (addr, 0);
1362+ addr = gen_rtx_PLUS (Pmode, XEXP (addr, 1), operands[0]);
1363+ }
1364+
1365+ operands[3] = change_address (operands[1], QImode, addr);
1366+})
1367+
1368+(define_peephole2
1369+ [(set (match_operand:SI 0 "register_operand" "")
1370+ (plus:SI (match_dup 0) (match_operand 1 "const_int_operand")))
1371+ (set (match_operand:SI 2 "register_operand" "") (const_int 0))
1372+ (set (match_operand:SI 3 "register_operand" "")
1373+ (sign_extend:SI (match_operand:QI 4 "memory_operand" "")))]
1374+ "TARGET_THUMB1
1375+ && GET_CODE (XEXP (operands[4], 0)) == PLUS
1376+ && rtx_equal_p (operands[0], XEXP (XEXP (operands[4], 0), 0))
1377+ && rtx_equal_p (operands[2], XEXP (XEXP (operands[4], 0), 1))
1378+ && (peep2_reg_dead_p (3, operands[0])
1379+ || rtx_equal_p (operands[0], operands[3]))
1380+ && (peep2_reg_dead_p (3, operands[2])
1381+ || rtx_equal_p (operands[2], operands[3]))"
1382+ [(set (match_dup 2) (match_dup 1))
1383+ (set (match_dup 3) (sign_extend:SI (match_dup 4)))]
1384+{
1385+ rtx addr = gen_rtx_PLUS (Pmode, operands[0], operands[2]);
1386+ operands[4] = change_address (operands[4], QImode, addr);
1387+})
1388+
1389+(define_insn "thumb1_extendqisi2"
1390 [(set (match_operand:SI 0 "register_operand" "=l,l,l")
1391 (sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "l,V,m")))]
1392- "TARGET_THUMB1 && arm_arch6"
1393- "*
1394- {
1395- rtx ops[3];
1396- rtx mem;
1397-
1398- if (which_alternative == 0)
1399- return \"sxtb\\t%0, %1\";
1400-
1401- mem = XEXP (operands[1], 0);
1402-
1403- if (GET_CODE (mem) == CONST)
1404- mem = XEXP (mem, 0);
1405-
1406- if (GET_CODE (mem) == LABEL_REF)
1407- return \"ldr\\t%0, %1\";
1408-
1409- if (GET_CODE (mem) == PLUS
1410- && GET_CODE (XEXP (mem, 0)) == LABEL_REF)
1411- return \"ldr\\t%0, %1\";
1412-
1413- if (which_alternative == 0)
1414- return \"ldrsb\\t%0, %1\";
1415-
1416- ops[0] = operands[0];
1417-
1418- if (GET_CODE (mem) == PLUS)
1419- {
1420- rtx a = XEXP (mem, 0);
1421- rtx b = XEXP (mem, 1);
1422-
1423- ops[1] = a;
1424- ops[2] = b;
1425-
1426- if (GET_CODE (a) == REG)
1427- {
1428- if (GET_CODE (b) == REG)
1429- output_asm_insn (\"ldrsb\\t%0, [%1, %2]\", ops);
1430- else if (REGNO (a) == REGNO (ops[0]))
1431- {
1432- output_asm_insn (\"ldrb\\t%0, [%1, %2]\", ops);
1433- output_asm_insn (\"sxtb\\t%0, %0\", ops);
1434- }
1435- else
1436- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
1437- }
1438- else
1439- {
1440- gcc_assert (GET_CODE (b) == REG);
1441- if (REGNO (b) == REGNO (ops[0]))
1442- {
1443- output_asm_insn (\"ldrb\\t%0, [%2, %1]\", ops);
1444- output_asm_insn (\"sxtb\\t%0, %0\", ops);
1445- }
1446- else
1447- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
1448- }
1449- }
1450- else if (GET_CODE (mem) == REG && REGNO (ops[0]) == REGNO (mem))
1451- {
1452- output_asm_insn (\"ldrb\\t%0, [%0, #0]\", ops);
1453- output_asm_insn (\"sxtb\\t%0, %0\", ops);
1454- }
1455- else
1456- {
1457- ops[1] = mem;
1458- ops[2] = const0_rtx;
1459-
1460- output_asm_insn (\"mov\\t%0, %2\;ldrsb\\t%0, [%1, %0]\", ops);
1461- }
1462- return \"\";
1463- }"
1464- [(set_attr "length" "2,2,4")
1465- (set_attr "type" "alu_shift,load_byte,load_byte")
1466- (set_attr "pool_range" "*,32,32")]
1467+ "TARGET_THUMB1"
1468+{
1469+ rtx addr;
1470+
1471+ if (which_alternative == 0 && arm_arch6)
1472+ return "sxtb\\t%0, %1";
1473+ if (which_alternative == 0)
1474+ return "#";
1475+
1476+ addr = XEXP (operands[1], 0);
1477+ if (GET_CODE (addr) == PLUS
1478+ && REG_P (XEXP (addr, 0)) && REG_P (XEXP (addr, 1)))
1479+ return "ldrsb\\t%0, %1";
1480+
1481+ return "#";
1482+}
1483+ [(set_attr_alternative "length"
1484+ [(if_then_else (eq_attr "is_arch6" "yes")
1485+ (const_int 2) (const_int 4))
1486+ (const_int 2)
1487+ (if_then_else (eq_attr "is_arch6" "yes")
1488+ (const_int 4) (const_int 6))])
1489+ (set_attr "type" "alu_shift,load_byte,load_byte")]
1490 )
1491
1492 (define_expand "extendsfdf2"
1493@@ -6784,6 +6639,30 @@
1494 operands[2] = force_reg (SImode, operands[2]);
1495 ")
1496
1497+;; A pattern to recognize a special situation and optimize for it.
1498+;; On the thumb, zero-extension from memory is preferrable to sign-extension
1499+;; due to the available addressing modes. Hence, convert a signed comparison
1500+;; with zero into an unsigned comparison with 127 if possible.
1501+(define_expand "cbranchqi4"
1502+ [(set (pc) (if_then_else
1503+ (match_operator 0 "lt_ge_comparison_operator"
1504+ [(match_operand:QI 1 "memory_operand" "")
1505+ (match_operand:QI 2 "const0_operand" "")])
1506+ (label_ref (match_operand 3 "" ""))
1507+ (pc)))]
1508+ "TARGET_THUMB1"
1509+{
1510+ rtx xops[4];
1511+ xops[1] = gen_reg_rtx (SImode);
1512+ emit_insn (gen_zero_extendqisi2 (xops[1], operands[1]));
1513+ xops[2] = GEN_INT (127);
1514+ xops[0] = gen_rtx_fmt_ee (GET_CODE (operands[0]) == GE ? LEU : GTU,
1515+ VOIDmode, xops[1], xops[2]);
1516+ xops[3] = operands[3];
1517+ emit_insn (gen_cbranchsi4 (xops[0], xops[1], xops[2], xops[3]));
1518+ DONE;
1519+})
1520+
1521 (define_expand "cbranchsf4"
1522 [(set (pc) (if_then_else
1523 (match_operator 0 "arm_comparison_operator"
1524@@ -6849,7 +6728,7 @@
1525 }"
1526 )
1527
1528-(define_insn "*cbranchsi4_insn"
1529+(define_insn "cbranchsi4_insn"
1530 [(set (pc) (if_then_else
1531 (match_operator 0 "arm_comparison_operator"
1532 [(match_operand:SI 1 "s_register_operand" "l,*h")
1533@@ -6858,7 +6737,20 @@
1534 (pc)))]
1535 "TARGET_THUMB1"
1536 "*
1537- output_asm_insn (\"cmp\\t%1, %2\", operands);
1538+ rtx t = prev_nonnote_insn (insn);
1539+ if (t != NULL_RTX
1540+ && INSN_P (t)
1541+ && INSN_CODE (t) == CODE_FOR_cbranchsi4_insn)
1542+ {
1543+ t = XEXP (SET_SRC (PATTERN (t)), 0);
1544+ if (!rtx_equal_p (XEXP (t, 0), operands[1])
1545+ || !rtx_equal_p (XEXP (t, 1), operands[2]))
1546+ t = NULL_RTX;
1547+ }
1548+ else
1549+ t = NULL_RTX;
1550+ if (t == NULL_RTX)
1551+ output_asm_insn (\"cmp\\t%1, %2\", operands);
1552
1553 switch (get_attr_length (insn))
1554 {
1555@@ -7674,15 +7566,15 @@
1556 (if_then_else
1557 (match_operator 4 "arm_comparison_operator"
1558 [(plus:SI
1559- (match_operand:SI 2 "s_register_operand" "%l,0,*0,1,1,1")
1560- (match_operand:SI 3 "reg_or_int_operand" "lL,IJ,*r,lIJ,lIJ,lIJ"))
1561+ (match_operand:SI 2 "s_register_operand" "%0,l,*l,1,1,1")
1562+ (match_operand:SI 3 "reg_or_int_operand" "IJ,lL,*l,lIJ,lIJ,lIJ"))
1563 (const_int 0)])
1564 (label_ref (match_operand 5 "" ""))
1565 (pc)))
1566 (set
1567 (match_operand:SI 0 "thumb_cbrch_target_operand" "=l,l,*!h,*?h,*?m,*?m")
1568 (plus:SI (match_dup 2) (match_dup 3)))
1569- (clobber (match_scratch:SI 1 "=X,X,X,l,&l,&l"))]
1570+ (clobber (match_scratch:SI 1 "=X,X,l,l,&l,&l"))]
1571 "TARGET_THUMB1
1572 && (GET_CODE (operands[4]) == EQ
1573 || GET_CODE (operands[4]) == NE
1574@@ -7692,8 +7584,7 @@
1575 {
1576 rtx cond[3];
1577
1578-
1579- cond[0] = (which_alternative < 3) ? operands[0] : operands[1];
1580+ cond[0] = (which_alternative < 2) ? operands[0] : operands[1];
1581 cond[1] = operands[2];
1582 cond[2] = operands[3];
1583
1584@@ -7702,13 +7593,13 @@
1585 else
1586 output_asm_insn (\"add\\t%0, %1, %2\", cond);
1587
1588- if (which_alternative >= 3
1589+ if (which_alternative >= 2
1590 && which_alternative < 4)
1591 output_asm_insn (\"mov\\t%0, %1\", operands);
1592 else if (which_alternative >= 4)
1593 output_asm_insn (\"str\\t%1, %0\", operands);
1594
1595- switch (get_attr_length (insn) - ((which_alternative >= 3) ? 2 : 0))
1596+ switch (get_attr_length (insn) - ((which_alternative >= 2) ? 2 : 0))
1597 {
1598 case 4:
1599 return \"b%d4\\t%l5\";
1600@@ -7722,7 +7613,7 @@
1601 [(set (attr "far_jump")
1602 (if_then_else
1603 (ior (and (lt (symbol_ref ("which_alternative"))
1604- (const_int 3))
1605+ (const_int 2))
1606 (eq_attr "length" "8"))
1607 (eq_attr "length" "10"))
1608 (const_string "yes")
1609@@ -7730,7 +7621,7 @@
1610 (set (attr "length")
1611 (if_then_else
1612 (lt (symbol_ref ("which_alternative"))
1613- (const_int 3))
1614+ (const_int 2))
1615 (if_then_else
1616 (and (ge (minus (match_dup 5) (pc)) (const_int -250))
1617 (le (minus (match_dup 5) (pc)) (const_int 256)))
1618@@ -9483,41 +9374,117 @@
1619 (set_attr "length" "4,8")]
1620 )
1621
1622-(define_insn "*compare_scc"
1623+; A series of splitters for the compare_scc pattern below. Note that
1624+; order is important.
1625+(define_split
1626+ [(set (match_operand:SI 0 "s_register_operand" "")
1627+ (lt:SI (match_operand:SI 1 "s_register_operand" "")
1628+ (const_int 0)))
1629+ (clobber (reg:CC CC_REGNUM))]
1630+ "TARGET_32BIT && reload_completed"
1631+ [(set (match_dup 0) (lshiftrt:SI (match_dup 1) (const_int 31)))])
1632+
1633+(define_split
1634+ [(set (match_operand:SI 0 "s_register_operand" "")
1635+ (ge:SI (match_operand:SI 1 "s_register_operand" "")
1636+ (const_int 0)))
1637+ (clobber (reg:CC CC_REGNUM))]
1638+ "TARGET_32BIT && reload_completed"
1639+ [(set (match_dup 0) (not:SI (match_dup 1)))
1640+ (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 31)))])
1641+
1642+(define_split
1643+ [(set (match_operand:SI 0 "s_register_operand" "")
1644+ (eq:SI (match_operand:SI 1 "s_register_operand" "")
1645+ (const_int 0)))
1646+ (clobber (reg:CC CC_REGNUM))]
1647+ "TARGET_32BIT && reload_completed"
1648+ [(parallel
1649+ [(set (reg:CC CC_REGNUM)
1650+ (compare:CC (const_int 1) (match_dup 1)))
1651+ (set (match_dup 0)
1652+ (minus:SI (const_int 1) (match_dup 1)))])
1653+ (cond_exec (ltu:CC (reg:CC CC_REGNUM) (const_int 0))
1654+ (set (match_dup 0) (const_int 0)))])
1655+
1656+(define_split
1657+ [(set (match_operand:SI 0 "s_register_operand" "")
1658+ (ne:SI (match_operand:SI 1 "s_register_operand" "")
1659+ (match_operand:SI 2 "const_int_operand" "")))
1660+ (clobber (reg:CC CC_REGNUM))]
1661+ "TARGET_32BIT && reload_completed"
1662+ [(parallel
1663+ [(set (reg:CC CC_REGNUM)
1664+ (compare:CC (match_dup 1) (match_dup 2)))
1665+ (set (match_dup 0) (plus:SI (match_dup 1) (match_dup 3)))])
1666+ (cond_exec (ne:CC (reg:CC CC_REGNUM) (const_int 0))
1667+ (set (match_dup 0) (const_int 1)))]
1668+{
1669+ operands[3] = GEN_INT (-INTVAL (operands[2]));
1670+})
1671+
1672+(define_split
1673+ [(set (match_operand:SI 0 "s_register_operand" "")
1674+ (ne:SI (match_operand:SI 1 "s_register_operand" "")
1675+ (match_operand:SI 2 "arm_add_operand" "")))
1676+ (clobber (reg:CC CC_REGNUM))]
1677+ "TARGET_32BIT && reload_completed"
1678+ [(parallel
1679+ [(set (reg:CC_NOOV CC_REGNUM)
1680+ (compare:CC_NOOV (minus:SI (match_dup 1) (match_dup 2))
1681+ (const_int 0)))
1682+ (set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2)))])
1683+ (cond_exec (ne:CC_NOOV (reg:CC_NOOV CC_REGNUM) (const_int 0))
1684+ (set (match_dup 0) (const_int 1)))])
1685+
1686+(define_insn_and_split "*compare_scc"
1687 [(set (match_operand:SI 0 "s_register_operand" "=r,r")
1688 (match_operator:SI 1 "arm_comparison_operator"
1689 [(match_operand:SI 2 "s_register_operand" "r,r")
1690 (match_operand:SI 3 "arm_add_operand" "rI,L")]))
1691 (clobber (reg:CC CC_REGNUM))]
1692- "TARGET_ARM"
1693- "*
1694- if (operands[3] == const0_rtx)
1695- {
1696- if (GET_CODE (operands[1]) == LT)
1697- return \"mov\\t%0, %2, lsr #31\";
1698-
1699- if (GET_CODE (operands[1]) == GE)
1700- return \"mvn\\t%0, %2\;mov\\t%0, %0, lsr #31\";
1701-
1702- if (GET_CODE (operands[1]) == EQ)
1703- return \"rsbs\\t%0, %2, #1\;movcc\\t%0, #0\";
1704- }
1705-
1706- if (GET_CODE (operands[1]) == NE)
1707- {
1708- if (which_alternative == 1)
1709- return \"adds\\t%0, %2, #%n3\;movne\\t%0, #1\";
1710- return \"subs\\t%0, %2, %3\;movne\\t%0, #1\";
1711- }
1712- if (which_alternative == 1)
1713- output_asm_insn (\"cmn\\t%2, #%n3\", operands);
1714- else
1715- output_asm_insn (\"cmp\\t%2, %3\", operands);
1716- return \"mov%D1\\t%0, #0\;mov%d1\\t%0, #1\";
1717- "
1718- [(set_attr "conds" "clob")
1719- (set_attr "length" "12")]
1720-)
1721+ "TARGET_32BIT"
1722+ "#"
1723+ "&& reload_completed"
1724+ [(set (reg:CC CC_REGNUM) (compare:CC (match_dup 2) (match_dup 3)))
1725+ (cond_exec (match_dup 4) (set (match_dup 0) (const_int 0)))
1726+ (cond_exec (match_dup 5) (set (match_dup 0) (const_int 1)))]
1727+{
1728+ rtx tmp1;
1729+ enum machine_mode mode = SELECT_CC_MODE (GET_CODE (operands[1]),
1730+ operands[2], operands[3]);
1731+ enum rtx_code rc = GET_CODE (operands[1]);
1732+
1733+ tmp1 = gen_rtx_REG (mode, CC_REGNUM);
1734+
1735+ operands[5] = gen_rtx_fmt_ee (rc, VOIDmode, tmp1, const0_rtx);
1736+ if (mode == CCFPmode || mode == CCFPEmode)
1737+ rc = reverse_condition_maybe_unordered (rc);
1738+ else
1739+ rc = reverse_condition (rc);
1740+ operands[4] = gen_rtx_fmt_ee (rc, VOIDmode, tmp1, const0_rtx);
1741+})
1742+
1743+;; Attempt to improve the sequence generated by the compare_scc splitters
1744+;; not to use conditional execution.
1745+(define_peephole2
1746+ [(set (reg:CC CC_REGNUM)
1747+ (compare:CC (match_operand:SI 1 "register_operand" "")
1748+ (match_operand:SI 2 "arm_rhs_operand" "")))
1749+ (cond_exec (ne (reg:CC CC_REGNUM) (const_int 0))
1750+ (set (match_operand:SI 0 "register_operand" "") (const_int 0)))
1751+ (cond_exec (eq (reg:CC CC_REGNUM) (const_int 0))
1752+ (set (match_dup 0) (const_int 1)))
1753+ (match_scratch:SI 3 "r")]
1754+ "TARGET_32BIT"
1755+ [(set (match_dup 3) (minus:SI (match_dup 1) (match_dup 2)))
1756+ (parallel
1757+ [(set (reg:CC CC_REGNUM)
1758+ (compare:CC (const_int 0) (match_dup 3)))
1759+ (set (match_dup 0) (minus:SI (const_int 0) (match_dup 3)))])
1760+ (set (match_dup 0)
1761+ (plus:SI (plus:SI (match_dup 0) (match_dup 3))
1762+ (geu:SI (reg:CC CC_REGNUM) (const_int 0))))])
1763
1764 (define_insn "*cond_move"
1765 [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
1766
1767=== modified file 'gcc/config/arm/predicates.md'
1768--- old/gcc/config/arm/predicates.md 2010-08-31 09:40:16 +0000
1769+++ new/gcc/config/arm/predicates.md 2010-08-31 10:00:27 +0000
1770@@ -115,6 +115,10 @@
1771 (and (match_code "const_int")
1772 (match_test "const_ok_for_arm (~INTVAL (op))")))
1773
1774+(define_predicate "const0_operand"
1775+ (and (match_code "const_int")
1776+ (match_test "INTVAL (op) == 0")))
1777+
1778 ;; Something valid on the RHS of an ARM data-processing instruction
1779 (define_predicate "arm_rhs_operand"
1780 (ior (match_operand 0 "s_register_operand")
1781@@ -233,6 +237,9 @@
1782 && (TARGET_FPA || TARGET_VFP)")
1783 (match_code "unordered,ordered,unlt,unle,unge,ungt"))))
1784
1785+(define_special_predicate "lt_ge_comparison_operator"
1786+ (match_code "lt,ge"))
1787+
1788 (define_special_predicate "minmax_operator"
1789 (and (match_code "smin,smax,umin,umax")
1790 (match_test "mode == GET_MODE (op)")))
1791
1792=== modified file 'gcc/config/arm/thumb2.md'
1793--- old/gcc/config/arm/thumb2.md 2010-08-31 09:40:16 +0000
1794+++ new/gcc/config/arm/thumb2.md 2010-08-31 10:00:27 +0000
1795@@ -599,42 +599,6 @@
1796 (set_attr "length" "6,10")]
1797 )
1798
1799-(define_insn "*thumb2_compare_scc"
1800- [(set (match_operand:SI 0 "s_register_operand" "=r,r")
1801- (match_operator:SI 1 "arm_comparison_operator"
1802- [(match_operand:SI 2 "s_register_operand" "r,r")
1803- (match_operand:SI 3 "arm_add_operand" "rI,L")]))
1804- (clobber (reg:CC CC_REGNUM))]
1805- "TARGET_THUMB2"
1806- "*
1807- if (operands[3] == const0_rtx)
1808- {
1809- if (GET_CODE (operands[1]) == LT)
1810- return \"lsr\\t%0, %2, #31\";
1811-
1812- if (GET_CODE (operands[1]) == GE)
1813- return \"mvn\\t%0, %2\;lsr\\t%0, %0, #31\";
1814-
1815- if (GET_CODE (operands[1]) == EQ)
1816- return \"rsbs\\t%0, %2, #1\;it\\tcc\;movcc\\t%0, #0\";
1817- }
1818-
1819- if (GET_CODE (operands[1]) == NE)
1820- {
1821- if (which_alternative == 1)
1822- return \"adds\\t%0, %2, #%n3\;it\\tne\;movne\\t%0, #1\";
1823- return \"subs\\t%0, %2, %3\;it\\tne\;movne\\t%0, #1\";
1824- }
1825- if (which_alternative == 1)
1826- output_asm_insn (\"cmn\\t%2, #%n3\", operands);
1827- else
1828- output_asm_insn (\"cmp\\t%2, %3\", operands);
1829- return \"ite\\t%D1\;mov%D1\\t%0, #0\;mov%d1\\t%0, #1\";
1830- "
1831- [(set_attr "conds" "clob")
1832- (set_attr "length" "14")]
1833-)
1834-
1835 (define_insn "*thumb2_cond_move"
1836 [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
1837 (if_then_else:SI (match_operator 3 "equality_operator"
1838
1839=== added file 'gcc/testsuite/gcc.c-torture/execute/pr40657.c'
1840--- old/gcc/testsuite/gcc.c-torture/execute/pr40657.c 1970-01-01 00:00:00 +0000
1841+++ new/gcc/testsuite/gcc.c-torture/execute/pr40657.c 2010-08-31 10:00:27 +0000
1842@@ -0,0 +1,23 @@
1843+/* Verify that that Thumb-1 epilogue size optimization does not clobber the
1844+ return value. */
1845+
1846+long long v = 0x123456789abc;
1847+
1848+__attribute__((noinline)) void bar (int *x)
1849+{
1850+ asm volatile ("" : "=m" (x) ::);
1851+}
1852+
1853+__attribute__((noinline)) long long foo()
1854+{
1855+ int x;
1856+ bar(&x);
1857+ return v;
1858+}
1859+
1860+int main ()
1861+{
1862+ if (foo () != v)
1863+ abort ();
1864+ exit (0);
1865+}
1866
1867=== added file 'gcc/testsuite/gcc.target/arm/pr40657-1.c'
1868--- old/gcc/testsuite/gcc.target/arm/pr40657-1.c 1970-01-01 00:00:00 +0000
1869+++ new/gcc/testsuite/gcc.target/arm/pr40657-1.c 2010-08-31 10:00:27 +0000
1870@@ -0,0 +1,13 @@
1871+/* { dg-options "-Os -march=armv5te -mthumb" } */
1872+/* { dg-require-effective-target arm_thumb1_ok } */
1873+/* { dg-final { scan-assembler "pop.*r1.*pc" } } */
1874+/* { dg-final { scan-assembler-not "sub\[\\t \]*sp,\[\\t \]*sp" } } */
1875+/* { dg-final { scan-assembler-not "add\[\\t \]*sp,\[\\t \]*sp" } } */
1876+
1877+extern void bar(int*);
1878+int foo()
1879+{
1880+ int x;
1881+ bar(&x);
1882+ return x;
1883+}
1884
1885=== added file 'gcc/testsuite/gcc.target/arm/pr40657-2.c'
1886--- old/gcc/testsuite/gcc.target/arm/pr40657-2.c 1970-01-01 00:00:00 +0000
1887+++ new/gcc/testsuite/gcc.target/arm/pr40657-2.c 2010-08-31 10:00:27 +0000
1888@@ -0,0 +1,20 @@
1889+/* { dg-options "-Os -march=armv4t -mthumb" } */
1890+/* { dg-require-effective-target arm_thumb1_ok } */
1891+/* { dg-final { scan-assembler-not "sub\[\\t \]*sp,\[\\t \]*sp" } } */
1892+/* { dg-final { scan-assembler-not "add\[\\t \]*sp,\[\\t \]*sp" } } */
1893+
1894+/* Here, we test that if there's a pop of r[4567] in the epilogue,
1895+ add sp,sp,#12 is removed and replaced by three additional pops
1896+ of lower-numbered regs. */
1897+
1898+extern void bar(int*);
1899+
1900+int t1, t2, t3, t4, t5;
1901+int foo()
1902+{
1903+ int i,j,k,x = 0;
1904+ for (i = 0; i < t1; i++)
1905+ for (j = 0; j < t2; j++)
1906+ bar(&x);
1907+ return x;
1908+}
1909
1910=== added file 'gcc/testsuite/gcc.target/arm/pr42172-1.c'
1911--- old/gcc/testsuite/gcc.target/arm/pr42172-1.c 1970-01-01 00:00:00 +0000
1912+++ new/gcc/testsuite/gcc.target/arm/pr42172-1.c 2010-08-31 10:00:27 +0000
1913@@ -0,0 +1,19 @@
1914+/* { dg-options "-O2" } */
1915+
1916+struct A {
1917+ unsigned int f1 : 3;
1918+ unsigned int f2 : 3;
1919+ unsigned int f3 : 1;
1920+ unsigned int f4 : 1;
1921+
1922+};
1923+
1924+void init_A (struct A *this)
1925+{
1926+ this->f1 = 0;
1927+ this->f2 = 1;
1928+ this->f3 = 0;
1929+ this->f4 = 0;
1930+}
1931+
1932+/* { dg-final { scan-assembler-times "ldr" 1 } } */
1933
1934=== added file 'gcc/testsuite/gcc.target/arm/pr42835.c'
1935--- old/gcc/testsuite/gcc.target/arm/pr42835.c 1970-01-01 00:00:00 +0000
1936+++ new/gcc/testsuite/gcc.target/arm/pr42835.c 2010-08-31 10:00:27 +0000
1937@@ -0,0 +1,12 @@
1938+/* { dg-do compile } */
1939+/* { dg-options "-mthumb -Os" } */
1940+/* { dg-require-effective-target arm_thumb2_ok } */
1941+
1942+int foo(int *p, int i)
1943+{
1944+ return( (i < 0 && *p == 1)
1945+ || (i > 0 && *p == 2) );
1946+}
1947+
1948+/* { dg-final { scan-assembler-times "movne\[\\t \]*r.,\[\\t \]*#" 1 } } */
1949+/* { dg-final { scan-assembler-times "moveq\[\\t \]*r.,\[\\t \]*#" 1 } } */
1950
1951=== added file 'gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c'
1952--- old/gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c 1970-01-01 00:00:00 +0000
1953+++ new/gcc/testsuite/gcc.target/arm/thumb-cbranchqi.c 2010-08-31 10:00:27 +0000
1954@@ -0,0 +1,15 @@
1955+/* { dg-do compile } */
1956+/* { dg-options "-mthumb -Os" } */
1957+/* { dg-require-effective-target arm_thumb1_ok } */
1958+
1959+int ldrb(unsigned char* p)
1960+{
1961+ if (p[8] <= 0x7F)
1962+ return 2;
1963+ else
1964+ return 5;
1965+}
1966+
1967+
1968+/* { dg-final { scan-assembler "127" } } */
1969+/* { dg-final { scan-assembler "bhi" } } */
1970
1971=== added file 'gcc/testsuite/gcc.target/arm/thumb-comparisons.c'
1972--- old/gcc/testsuite/gcc.target/arm/thumb-comparisons.c 1970-01-01 00:00:00 +0000
1973+++ new/gcc/testsuite/gcc.target/arm/thumb-comparisons.c 2010-08-31 10:00:27 +0000
1974@@ -0,0 +1,18 @@
1975+/* { dg-do compile } */
1976+/* { dg-options "-mthumb -Os" } */
1977+/* { dg-require-effective-target arm_thumb1_ok } */
1978+
1979+int foo(char ch)
1980+{
1981+ switch (ch) {
1982+ case '-':
1983+ case '?':
1984+ case '/':
1985+ case 99:
1986+ return 1;
1987+ default:
1988+ return 0;
1989+ }
1990+}
1991+
1992+/* { dg-final { scan-assembler-times "cmp\[\\t \]*r.,\[\\t \]*#63" 1 } } */
1993
1994=== added file 'gcc/testsuite/gcc.target/arm/thumb-stackframe.c'
1995--- old/gcc/testsuite/gcc.target/arm/thumb-stackframe.c 1970-01-01 00:00:00 +0000
1996+++ new/gcc/testsuite/gcc.target/arm/thumb-stackframe.c 2010-08-31 10:00:27 +0000
1997@@ -0,0 +1,13 @@
1998+/* { dg-do compile } */
1999+/* { dg-options "-mthumb -Os" } */
2000+/* { dg-require-effective-target arm_thumb1_ok } */
2001+
2002+extern void bar(int*);
2003+int foo()
2004+{
2005+ int x;
2006+ bar(&x);
2007+ return x;
2008+}
2009+
2010+/* { dg-final { scan-assembler-not "sub\[\\t \]*sp,\[\\t \]*sp," } } */
2011
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch
new file mode 100644
index 000000000..c66c11f82
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99380.patch
@@ -0,0 +1,2997 @@
12010-08-31 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-04-14 Bernd Schmidt <bernds@codesourcery.com>
6
7 PR target/21803
8 gcc/
9 * ifcvt.c (cond_exec_process_if_block): Look for identical sequences
10 at the start and end of the then/else blocks, and omit them from the
11 conversion.
12 * cfgcleanup.c (flow_find_cross_jump): No longer static. Remove MODE
13 argument; all callers changed. Pass zero to old_insns_match_p instead.
14 (flow_find_head_matching_sequence): New function.
15 (old_insns_match_p): Check REG_EH_REGION notes for calls.
16 * basic-block.h (flow_find_cross_jump,
17 flow_find_head_matching_sequence): Declare functions.
18
19 gcc/testsuite/
20 * gcc.target/arm/pr42496.c: New test.
21
22 2010-04-22 Bernd Schmidt <bernds@codesourcery.com>
23
24 PR middle-end/29274
25 gcc/
26 * tree-pass.h (pass_optimize_widening_mul): Declare.
27 * tree-ssa-math-opts.c (execute_optimize_widening_mul,
28 gate_optimize_widening_mul): New static functions.
29 (pass_optimize_widening_mul): New.
30 * expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: New case.
31 <case MULT_EXPR>: Remove support for widening multiplies.
32 * tree.def (WIDEN_MULT_EXPR): Tweak comment.
33 * cfgexpand.c (expand_debug_expr) <case WIDEN_MULT_EXPR>: Use
34 simplify_gen_unary rather than directly building extensions.
35 * tree-cfg.c (verify_gimple_assign_binary): Add tests for
36 WIDEN_MULT_EXPR.
37 * expmed.c (expand_widening_mult): New function.
38 * passes.c (init_optimization_passes): Add pass_optimize_widening_mul.
39 * optabs.h (expand_widening_mult): Declare.
40
41 gcc/testsuite/
42 * gcc.target/i386/wmul-1.c: New test.
43 * gcc.target/i386/wmul-2.c: New test.
44 * gcc.target/bfin/wmul-1.c: New test.
45 * gcc.target/bfin/wmul-2.c: New test.
46 * gcc.target/arm/wmul-1.c: New test.
47 * gcc.target/arm/wmul-2.c: New test.
48
49 2010-04-24 Bernd Schmidt <bernds@codesourcery.com>
50
51 PR tree-optimization/41442
52 gcc/
53 * fold-const.c (merge_truthop_with_opposite_arm): New function.
54 (fold_binary_loc): Call it.
55
56 gcc/testsuite/
57 * gcc.target/i386/pr41442.c: New test.
58
59 2010-04-29 Bernd Schmidt <bernds@codesourcery.com>
60
61 PR target/42895
62 gcc/
63 * doc/tm.texi (ADJUST_REG_ALLOC_ORDER): Renamed from
64 ORDER_REGS_FOR_LOCAL_ALLOC. All instances of this macro changed.
65 (HONOR_REG_ALLOC_ORDER): Describe new macro.
66 * ira.c (setup_alloc_regs): Use ADJUST_REG_ALLOC_ORDER if defined.
67 * ira-color.c (assign_hard_reg): Take prologue/epilogue costs into
68 account only if HONOR_REG_ALLOC_ORDER is not defined.
69 * config/arm/arm.h (HONOR_REG_ALLOC_ORDER): Define.
70 * system.h (ORDER_REGS_FOR_LOCAL_ALLOC): Poison.
71
72 2010-05-04 Mikael Pettersson <mikpe@it.uu.se>
73
74 PR bootstrap/43964
75 gcc/
76 * ira-color.c (assign_hard_reg): Declare rclass and add_cost
77 only if HONOR_REG_ALLOC_ORDER is not defined.
78
79 2010-06-04 Bernd Schmidt <bernds@codesourcery.com>
80
81 PR rtl-optimization/39871
82 PR rtl-optimization/40615
83 PR rtl-optimization/42500
84 PR rtl-optimization/42502
85 gcc/
86 * ira.c (init_reg_equiv_memory_loc: New function.
87 (ira): Call it twice.
88 * reload.h (calculate_elim_costs_all_insns): Declare.
89 * ira-costs.c: Include "reload.h".
90 (regno_equiv_gains): New static variable.
91 (init_costs): Allocate it.
92 (finish_costs): Free it.
93 (ira_costs): Call calculate_elim_costs_all_insns.
94 (find_costs_and_classes): Take estimated elimination costs
95 into account.
96 (ira_adjust_equiv_reg_cost): New function.
97 * ira.h (ira_adjust_equiv_reg_cost): Declare it.
98 * reload1.c (init_eliminable_invariants, free_reg_equiv,
99 elimination_costs_in_insn, note_reg_elim_costly): New static functions.
100 (elim_bb): New static variable.
101 (reload): Move code out of here into init_eliminable_invariants and
102 free_reg_equiv. Call them.
103 (calculate_elim_costs_all_insns): New function.
104 (eliminate_regs_1): Declare. Add extra arg FOR_COSTS;
105 all callers changed. If FOR_COSTS is true, don't call alter_reg,
106 but call note_reg_elim_costly if we turned a valid memory address
107 into an invalid one.
108 * Makefile.in (ira-costs.o): Depend on reload.h.
109
110 gcc/testsuite/
111 * gcc.target/arm/eliminate.c: New test.
112
113 2010-06-09 Bernd Schmidt <bernds@codesourcery.com>
114
115 gcc/
116 * config/arm/arm.c (thumb2_reorg): New function.
117 (arm_reorg): Call it.
118 * config/arm/thumb2.md (define_peephole2 for flag clobbering
119 arithmetic operations): Delete.
120
121 2010-06-12 Bernd Schmidt <bernds@codesourcery.com>
122
123 gcc/
124 * config/arm/arm.c (thumb2_reorg): Fix errors in previous change.
125
126 2010-06-17 Bernd Schmidt <bernds@codesourcery.com>
127
128 PR rtl-optimization/39871
129 gcc/
130 * reload1.c (init_eliminable_invariants): For flag_pic, disable
131 equivalences only for constants that aren't LEGITIMATE_PIC_OPERAND_P.
132 (function_invariant_p): Rule out a plus of frame or arg pointer with
133 a SYMBOL_REF.
134 * ira.c (find_reg_equiv_invariant_const): Likewise.
135
136 2010-06-18 Eric Botcazou <ebotcazou@adacore.com>
137
138 PR rtl-optimization/40900
139 gcc/
140 * expr.c (expand_expr_real_1) <SSA_NAME>: Fix long line. Save the
141 original expression for later reuse.
142 <expand_decl_rtl>: Use promote_function_mode to compute the signedness
143 of the promoted RTL for a SSA_NAME on the LHS of a call statement.
144
145 2010-06-18 Bernd Schmidt <bernds@codesourcery.com>
146 gcc/testsuite/
147 * gcc.target/arm/pr40900.c: New test.
148
149 2010-06-30 Bernd Schmidt <bernds@codesourcery.com>
150
151 PR tree-optimization/39799
152 gcc/
153 * tree-inline.c (remap_ssa_name): Initialize variable only if
154 SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
155 * tree-ssa.c (warn_uninit): Avoid emitting an unnecessary message.
156
157 gcc/testsuite/
158 * c-c++-common/uninit-17.c: New test.
159
160 2010-07-25 Eric Botcazou <ebotcazou@adacore.com>
161
162 PR target/44484
163 gcc/
164 * config/sparc/predicates.md (memory_reg_operand): Delete.
165 * config/sparc/sync.md (sync_compare_and_swap): Minor tweaks.
166 (*sync_compare_and_swap): Encode the address form in the pattern.
167 (*sync_compare_and_swapdi_v8plus): Likewise.
168
169 2010-08-29 Chung-Lin Tang <cltang@codesourcery.com>
170
171 Backport from mainline:
172
173=== modified file 'gcc/Makefile.in'
174--- old/gcc/Makefile.in 2010-08-10 13:31:21 +0000
175+++ new/gcc/Makefile.in 2010-09-01 13:29:58 +0000
176@@ -3193,7 +3193,7 @@
177 ira-costs.o: ira-costs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
178 hard-reg-set.h $(RTL_H) $(EXPR_H) $(TM_P_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
179 $(REGS_H) addresses.h insn-config.h $(RECOG_H) $(TOPLEV_H) $(TARGET_H) \
180- $(PARAMS_H) $(IRA_INT_H)
181+ $(PARAMS_H) $(IRA_INT_H) reload.h
182 ira-conflicts.o: ira-conflicts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
183 $(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
184 insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(TOPLEV_H) $(TM_P_H) $(PARAMS_H) \
185
186=== modified file 'gcc/basic-block.h'
187--- old/gcc/basic-block.h 2010-08-16 09:41:58 +0000
188+++ new/gcc/basic-block.h 2010-09-01 13:29:58 +0000
189@@ -894,6 +894,10 @@
190
191 /* In cfgcleanup.c. */
192 extern bool cleanup_cfg (int);
193+extern int flow_find_cross_jump (basic_block, basic_block, rtx *, rtx *);
194+extern int flow_find_head_matching_sequence (basic_block, basic_block,
195+ rtx *, rtx *, int);
196+
197 extern bool delete_unreachable_blocks (void);
198
199 extern bool mark_dfs_back_edges (void);
200
201=== modified file 'gcc/cfgcleanup.c'
202--- old/gcc/cfgcleanup.c 2010-05-17 16:26:22 +0000
203+++ new/gcc/cfgcleanup.c 2010-09-01 13:29:58 +0000
204@@ -68,7 +68,6 @@
205 static bool try_crossjump_to_edge (int, edge, edge);
206 static bool try_crossjump_bb (int, basic_block);
207 static bool outgoing_edges_match (int, basic_block, basic_block);
208-static int flow_find_cross_jump (int, basic_block, basic_block, rtx *, rtx *);
209 static bool old_insns_match_p (int, rtx, rtx);
210
211 static void merge_blocks_move_predecessor_nojumps (basic_block, basic_block);
212@@ -972,13 +971,27 @@
213 be filled that clobbers a parameter expected by the subroutine.
214
215 ??? We take the simple route for now and assume that if they're
216- equal, they were constructed identically. */
217-
218- if (CALL_P (i1)
219- && (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1),
220+ equal, they were constructed identically.
221+
222+ Also check for identical exception regions. */
223+
224+ if (CALL_P (i1))
225+ {
226+ /* Ensure the same EH region. */
227+ rtx n1 = find_reg_note (i1, REG_EH_REGION, 0);
228+ rtx n2 = find_reg_note (i2, REG_EH_REGION, 0);
229+
230+ if (!n1 && n2)
231+ return false;
232+
233+ if (n1 && (!n2 || XEXP (n1, 0) != XEXP (n2, 0)))
234+ return false;
235+
236+ if (!rtx_equal_p (CALL_INSN_FUNCTION_USAGE (i1),
237 CALL_INSN_FUNCTION_USAGE (i2))
238- || SIBLING_CALL_P (i1) != SIBLING_CALL_P (i2)))
239- return false;
240+ || SIBLING_CALL_P (i1) != SIBLING_CALL_P (i2))
241+ return false;
242+ }
243
244 #ifdef STACK_REGS
245 /* If cross_jump_death_matters is not 0, the insn's mode
246@@ -1017,6 +1030,29 @@
247 return false;
248 }
249
250+/* When comparing insns I1 and I2 in flow_find_cross_jump or
251+ flow_find_head_matching_sequence, ensure the notes match. */
252+
253+static void
254+merge_notes (rtx i1, rtx i2)
255+{
256+ /* If the merged insns have different REG_EQUAL notes, then
257+ remove them. */
258+ rtx equiv1 = find_reg_equal_equiv_note (i1);
259+ rtx equiv2 = find_reg_equal_equiv_note (i2);
260+
261+ if (equiv1 && !equiv2)
262+ remove_note (i1, equiv1);
263+ else if (!equiv1 && equiv2)
264+ remove_note (i2, equiv2);
265+ else if (equiv1 && equiv2
266+ && !rtx_equal_p (XEXP (equiv1, 0), XEXP (equiv2, 0)))
267+ {
268+ remove_note (i1, equiv1);
269+ remove_note (i2, equiv2);
270+ }
271+}
272+
273 /* Look through the insns at the end of BB1 and BB2 and find the longest
274 sequence that are equivalent. Store the first insns for that sequence
275 in *F1 and *F2 and return the sequence length.
276@@ -1024,9 +1060,8 @@
277 To simplify callers of this function, if the blocks match exactly,
278 store the head of the blocks in *F1 and *F2. */
279
280-static int
281-flow_find_cross_jump (int mode ATTRIBUTE_UNUSED, basic_block bb1,
282- basic_block bb2, rtx *f1, rtx *f2)
283+int
284+flow_find_cross_jump (basic_block bb1, basic_block bb2, rtx *f1, rtx *f2)
285 {
286 rtx i1, i2, last1, last2, afterlast1, afterlast2;
287 int ninsns = 0;
288@@ -1066,7 +1101,7 @@
289 if (i1 == BB_HEAD (bb1) || i2 == BB_HEAD (bb2))
290 break;
291
292- if (!old_insns_match_p (mode, i1, i2))
293+ if (!old_insns_match_p (0, i1, i2))
294 break;
295
296 merge_memattrs (i1, i2);
297@@ -1074,21 +1109,7 @@
298 /* Don't begin a cross-jump with a NOTE insn. */
299 if (INSN_P (i1))
300 {
301- /* If the merged insns have different REG_EQUAL notes, then
302- remove them. */
303- rtx equiv1 = find_reg_equal_equiv_note (i1);
304- rtx equiv2 = find_reg_equal_equiv_note (i2);
305-
306- if (equiv1 && !equiv2)
307- remove_note (i1, equiv1);
308- else if (!equiv1 && equiv2)
309- remove_note (i2, equiv2);
310- else if (equiv1 && equiv2
311- && !rtx_equal_p (XEXP (equiv1, 0), XEXP (equiv2, 0)))
312- {
313- remove_note (i1, equiv1);
314- remove_note (i2, equiv2);
315- }
316+ merge_notes (i1, i2);
317
318 afterlast1 = last1, afterlast2 = last2;
319 last1 = i1, last2 = i2;
320@@ -1130,6 +1151,97 @@
321 return ninsns;
322 }
323
324+/* Like flow_find_cross_jump, except start looking for a matching sequence from
325+ the head of the two blocks. Do not include jumps at the end.
326+ If STOP_AFTER is nonzero, stop after finding that many matching
327+ instructions. */
328+
329+int
330+flow_find_head_matching_sequence (basic_block bb1, basic_block bb2, rtx *f1,
331+ rtx *f2, int stop_after)
332+{
333+ rtx i1, i2, last1, last2, beforelast1, beforelast2;
334+ int ninsns = 0;
335+ edge e;
336+ edge_iterator ei;
337+ int nehedges1 = 0, nehedges2 = 0;
338+
339+ FOR_EACH_EDGE (e, ei, bb1->succs)
340+ if (e->flags & EDGE_EH)
341+ nehedges1++;
342+ FOR_EACH_EDGE (e, ei, bb2->succs)
343+ if (e->flags & EDGE_EH)
344+ nehedges2++;
345+
346+ i1 = BB_HEAD (bb1);
347+ i2 = BB_HEAD (bb2);
348+ last1 = beforelast1 = last2 = beforelast2 = NULL_RTX;
349+
350+ while (true)
351+ {
352+
353+ /* Ignore notes. */
354+ while (!NONDEBUG_INSN_P (i1) && i1 != BB_END (bb1))
355+ i1 = NEXT_INSN (i1);
356+
357+ while (!NONDEBUG_INSN_P (i2) && i2 != BB_END (bb2))
358+ i2 = NEXT_INSN (i2);
359+
360+ if (NOTE_P (i1) || NOTE_P (i2)
361+ || JUMP_P (i1) || JUMP_P (i2))
362+ break;
363+
364+ /* A sanity check to make sure we're not merging insns with different
365+ effects on EH. If only one of them ends a basic block, it shouldn't
366+ have an EH edge; if both end a basic block, there should be the same
367+ number of EH edges. */
368+ if ((i1 == BB_END (bb1) && i2 != BB_END (bb2)
369+ && nehedges1 > 0)
370+ || (i2 == BB_END (bb2) && i1 != BB_END (bb1)
371+ && nehedges2 > 0)
372+ || (i1 == BB_END (bb1) && i2 == BB_END (bb2)
373+ && nehedges1 != nehedges2))
374+ break;
375+
376+ if (!old_insns_match_p (0, i1, i2))
377+ break;
378+
379+ merge_memattrs (i1, i2);
380+
381+ /* Don't begin a cross-jump with a NOTE insn. */
382+ if (INSN_P (i1))
383+ {
384+ merge_notes (i1, i2);
385+
386+ beforelast1 = last1, beforelast2 = last2;
387+ last1 = i1, last2 = i2;
388+ ninsns++;
389+ }
390+
391+ if (i1 == BB_END (bb1) || i2 == BB_END (bb2)
392+ || (stop_after > 0 && ninsns == stop_after))
393+ break;
394+
395+ i1 = NEXT_INSN (i1);
396+ i2 = NEXT_INSN (i2);
397+ }
398+
399+#ifdef HAVE_cc0
400+ /* Don't allow a compare to be shared by cross-jumping unless the insn
401+ after the compare is also shared. */
402+ if (ninsns && reg_mentioned_p (cc0_rtx, last1) && sets_cc0_p (last1))
403+ last1 = beforelast1, last2 = beforelast2, ninsns--;
404+#endif
405+
406+ if (ninsns)
407+ {
408+ *f1 = last1;
409+ *f2 = last2;
410+ }
411+
412+ return ninsns;
413+}
414+
415 /* Return true iff outgoing edges of BB1 and BB2 match, together with
416 the branch instruction. This means that if we commonize the control
417 flow before end of the basic block, the semantic remains unchanged.
418@@ -1498,7 +1610,7 @@
419 return false;
420
421 /* ... and part the second. */
422- nmatch = flow_find_cross_jump (mode, src1, src2, &newpos1, &newpos2);
423+ nmatch = flow_find_cross_jump (src1, src2, &newpos1, &newpos2);
424
425 /* Don't proceed with the crossjump unless we found a sufficient number
426 of matching instructions or the 'from' block was totally matched
427
428=== modified file 'gcc/cfgexpand.c'
429--- old/gcc/cfgexpand.c 2010-05-14 17:11:03 +0000
430+++ new/gcc/cfgexpand.c 2010-09-01 13:29:58 +0000
431@@ -3026,14 +3026,15 @@
432 if (SCALAR_INT_MODE_P (GET_MODE (op0))
433 && SCALAR_INT_MODE_P (mode))
434 {
435+ enum machine_mode inner_mode = GET_MODE (op0);
436 if (TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 0))))
437- op0 = gen_rtx_ZERO_EXTEND (mode, op0);
438+ op0 = simplify_gen_unary (ZERO_EXTEND, mode, op0, inner_mode);
439 else
440- op0 = gen_rtx_SIGN_EXTEND (mode, op0);
441+ op0 = simplify_gen_unary (SIGN_EXTEND, mode, op0, inner_mode);
442 if (TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 1))))
443- op1 = gen_rtx_ZERO_EXTEND (mode, op1);
444+ op1 = simplify_gen_unary (ZERO_EXTEND, mode, op1, inner_mode);
445 else
446- op1 = gen_rtx_SIGN_EXTEND (mode, op1);
447+ op1 = simplify_gen_unary (SIGN_EXTEND, mode, op1, inner_mode);
448 return gen_rtx_MULT (mode, op0, op1);
449 }
450 return NULL;
451
452=== modified file 'gcc/config/arm/arm.c'
453--- old/gcc/config/arm/arm.c 2010-08-31 10:00:27 +0000
454+++ new/gcc/config/arm/arm.c 2010-09-01 13:29:58 +0000
455@@ -8116,8 +8116,6 @@
456 static bool
457 xscale_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost)
458 {
459- rtx i_pat, d_pat;
460-
461 /* Some true dependencies can have a higher cost depending
462 on precisely how certain input operands are used. */
463 if (REG_NOTE_KIND (link) == 0
464@@ -12166,6 +12164,60 @@
465 return result;
466 }
467
468+/* Convert instructions to their cc-clobbering variant if possible, since
469+ that allows us to use smaller encodings. */
470+
471+static void
472+thumb2_reorg (void)
473+{
474+ basic_block bb;
475+ regset_head live;
476+
477+ INIT_REG_SET (&live);
478+
479+ /* We are freeing block_for_insn in the toplev to keep compatibility
480+ with old MDEP_REORGS that are not CFG based. Recompute it now. */
481+ compute_bb_for_insn ();
482+ df_analyze ();
483+
484+ FOR_EACH_BB (bb)
485+ {
486+ rtx insn;
487+ COPY_REG_SET (&live, DF_LR_OUT (bb));
488+ df_simulate_initialize_backwards (bb, &live);
489+ FOR_BB_INSNS_REVERSE (bb, insn)
490+ {
491+ if (NONJUMP_INSN_P (insn)
492+ && !REGNO_REG_SET_P (&live, CC_REGNUM))
493+ {
494+ rtx pat = PATTERN (insn);
495+ if (GET_CODE (pat) == SET
496+ && low_register_operand (XEXP (pat, 0), SImode)
497+ && thumb_16bit_operator (XEXP (pat, 1), SImode)
498+ && low_register_operand (XEXP (XEXP (pat, 1), 0), SImode)
499+ && low_register_operand (XEXP (XEXP (pat, 1), 1), SImode))
500+ {
501+ rtx dst = XEXP (pat, 0);
502+ rtx src = XEXP (pat, 1);
503+ rtx op0 = XEXP (src, 0);
504+ if (rtx_equal_p (dst, op0)
505+ || GET_CODE (src) == PLUS || GET_CODE (src) == MINUS)
506+ {
507+ rtx ccreg = gen_rtx_REG (CCmode, CC_REGNUM);
508+ rtx clobber = gen_rtx_CLOBBER (VOIDmode, ccreg);
509+ rtvec vec = gen_rtvec (2, pat, clobber);
510+ PATTERN (insn) = gen_rtx_PARALLEL (VOIDmode, vec);
511+ INSN_CODE (insn) = -1;
512+ }
513+ }
514+ }
515+ if (NONDEBUG_INSN_P (insn))
516+ df_simulate_one_insn_backwards (bb, insn, &live);
517+ }
518+ }
519+ CLEAR_REG_SET (&live);
520+}
521+
522 /* Gcc puts the pool in the wrong place for ARM, since we can only
523 load addresses a limited distance around the pc. We do some
524 special munging to move the constant pool values to the correct
525@@ -12177,6 +12229,9 @@
526 HOST_WIDE_INT address = 0;
527 Mfix * fix;
528
529+ if (TARGET_THUMB2)
530+ thumb2_reorg ();
531+
532 minipool_fix_head = minipool_fix_tail = NULL;
533
534 /* The first insn must always be a note, or the code below won't
535
536=== modified file 'gcc/config/arm/arm.h'
537--- old/gcc/config/arm/arm.h 2010-08-13 11:11:15 +0000
538+++ new/gcc/config/arm/arm.h 2010-09-01 13:29:58 +0000
539@@ -1133,7 +1133,11 @@
540 }
541
542 /* Use different register alloc ordering for Thumb. */
543-#define ORDER_REGS_FOR_LOCAL_ALLOC arm_order_regs_for_local_alloc ()
544+#define ADJUST_REG_ALLOC_ORDER arm_order_regs_for_local_alloc ()
545+
546+/* Tell IRA to use the order we define rather than messing it up with its
547+ own cost calculations. */
548+#define HONOR_REG_ALLOC_ORDER
549
550 /* Interrupt functions can only use registers that have already been
551 saved by the prologue, even if they would normally be
552
553=== modified file 'gcc/config/arm/arm.md'
554--- old/gcc/config/arm/arm.md 2010-08-31 10:00:27 +0000
555+++ new/gcc/config/arm/arm.md 2010-09-01 13:29:58 +0000
556@@ -4074,7 +4074,7 @@
557
558 (define_split
559 [(set (match_operand:SI 0 "register_operand" "")
560- (zero_extend:SI (match_operand:HI 1 "register_operand" "l,m")))]
561+ (zero_extend:SI (match_operand:HI 1 "register_operand" "")))]
562 "!TARGET_THUMB2 && !arm_arch6"
563 [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16)))
564 (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))]
565
566=== modified file 'gcc/config/arm/thumb2.md'
567--- old/gcc/config/arm/thumb2.md 2010-08-31 10:00:27 +0000
568+++ new/gcc/config/arm/thumb2.md 2010-09-01 13:29:58 +0000
569@@ -1046,29 +1046,6 @@
570 }"
571 )
572
573-;; Peepholes and insns for 16-bit flag clobbering instructions.
574-;; The conditional forms of these instructions do not clobber CC.
575-;; However by the time peepholes are run it is probably too late to do
576-;; anything useful with this information.
577-(define_peephole2
578- [(set (match_operand:SI 0 "low_register_operand" "")
579- (match_operator:SI 3 "thumb_16bit_operator"
580- [(match_operand:SI 1 "low_register_operand" "")
581- (match_operand:SI 2 "low_register_operand" "")]))]
582- "TARGET_THUMB2
583- && (rtx_equal_p(operands[0], operands[1])
584- || GET_CODE(operands[3]) == PLUS
585- || GET_CODE(operands[3]) == MINUS)
586- && peep2_regno_dead_p(0, CC_REGNUM)"
587- [(parallel
588- [(set (match_dup 0)
589- (match_op_dup 3
590- [(match_dup 1)
591- (match_dup 2)]))
592- (clobber (reg:CC CC_REGNUM))])]
593- ""
594-)
595-
596 (define_insn "*thumb2_alusi3_short"
597 [(set (match_operand:SI 0 "s_register_operand" "=l")
598 (match_operator:SI 3 "thumb_16bit_operator"
599
600=== modified file 'gcc/config/avr/avr.h'
601--- old/gcc/config/avr/avr.h 2010-01-11 23:12:14 +0000
602+++ new/gcc/config/avr/avr.h 2010-09-01 13:29:58 +0000
603@@ -232,7 +232,7 @@
604 32,33,34,35 \
605 }
606
607-#define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc ()
608+#define ADJUST_REG_ALLOC_ORDER order_regs_for_local_alloc ()
609
610
611 #define HARD_REGNO_NREGS(REGNO, MODE) ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
612
613=== modified file 'gcc/config/i386/i386.h'
614--- old/gcc/config/i386/i386.h 2010-04-27 19:14:19 +0000
615+++ new/gcc/config/i386/i386.h 2010-09-01 13:29:58 +0000
616@@ -955,7 +955,7 @@
617 registers listed in CALL_USED_REGISTERS, keeping the others
618 available for storage of persistent values.
619
620- The ORDER_REGS_FOR_LOCAL_ALLOC actually overwrite the order,
621+ The ADJUST_REG_ALLOC_ORDER actually overwrite the order,
622 so this is just empty initializer for array. */
623
624 #define REG_ALLOC_ORDER \
625@@ -964,11 +964,11 @@
626 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, \
627 48, 49, 50, 51, 52 }
628
629-/* ORDER_REGS_FOR_LOCAL_ALLOC is a macro which permits reg_alloc_order
630+/* ADJUST_REG_ALLOC_ORDER is a macro which permits reg_alloc_order
631 to be rearranged based on a particular function. When using sse math,
632 we want to allocate SSE before x87 registers and vice versa. */
633
634-#define ORDER_REGS_FOR_LOCAL_ALLOC x86_order_regs_for_local_alloc ()
635+#define ADJUST_REG_ALLOC_ORDER x86_order_regs_for_local_alloc ()
636
637
638 #define OVERRIDE_ABI_FORMAT(FNDECL) ix86_call_abi_override (FNDECL)
639
640=== modified file 'gcc/config/mips/mips.h'
641--- old/gcc/config/mips/mips.h 2009-10-29 17:39:52 +0000
642+++ new/gcc/config/mips/mips.h 2010-09-01 13:29:58 +0000
643@@ -2059,12 +2059,12 @@
644 182,183,184,185,186,187 \
645 }
646
647-/* ORDER_REGS_FOR_LOCAL_ALLOC is a macro which permits reg_alloc_order
648+/* ADJUST_REG_ALLOC_ORDER is a macro which permits reg_alloc_order
649 to be rearranged based on a particular function. On the mips16, we
650 want to allocate $24 (T_REG) before other registers for
651 instructions for which it is possible. */
652
653-#define ORDER_REGS_FOR_LOCAL_ALLOC mips_order_regs_for_local_alloc ()
654+#define ADJUST_REG_ALLOC_ORDER mips_order_regs_for_local_alloc ()
655
656 /* True if VALUE is an unsigned 6-bit number. */
657
658
659=== modified file 'gcc/config/picochip/picochip.h'
660--- old/gcc/config/picochip/picochip.h 2009-11-04 11:06:36 +0000
661+++ new/gcc/config/picochip/picochip.h 2010-09-01 13:29:58 +0000
662@@ -261,7 +261,7 @@
663 /* We can dynamically change the REG_ALLOC_ORDER using the following hook.
664 It would be desirable to change it for leaf functions so we can put
665 r12 at the end of this list.*/
666-#define ORDER_REGS_FOR_LOCAL_ALLOC picochip_order_regs_for_local_alloc ()
667+#define ADJUST_REG_ALLOC_ORDER picochip_order_regs_for_local_alloc ()
668
669 /* How Values Fit in Registers */
670
671
672=== modified file 'gcc/config/sparc/predicates.md'
673--- old/gcc/config/sparc/predicates.md 2009-02-20 15:20:38 +0000
674+++ new/gcc/config/sparc/predicates.md 2010-09-01 13:29:58 +0000
675@@ -1,5 +1,5 @@
676 ;; Predicate definitions for SPARC.
677-;; Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
678+;; Copyright (C) 2005, 2007, 2008, 2010 Free Software Foundation, Inc.
679 ;;
680 ;; This file is part of GCC.
681 ;;
682@@ -473,9 +473,3 @@
683 ;; and (xor ... (not ...)) to (not (xor ...)). */
684 (define_predicate "cc_arith_not_operator"
685 (match_code "and,ior"))
686-
687-;; Return true if OP is memory operand with just [%reg] addressing mode.
688-(define_predicate "memory_reg_operand"
689- (and (match_code "mem")
690- (and (match_operand 0 "memory_operand")
691- (match_test "REG_P (XEXP (op, 0))"))))
692
693=== modified file 'gcc/config/sparc/sparc.h'
694--- old/gcc/config/sparc/sparc.h 2010-04-02 18:54:46 +0000
695+++ new/gcc/config/sparc/sparc.h 2010-09-01 13:29:58 +0000
696@@ -1181,7 +1181,7 @@
697 96, 97, 98, 99, /* %fcc0-3 */ \
698 100, 0, 14, 30, 31, 101} /* %icc, %g0, %o6, %i6, %i7, %sfp */
699
700-#define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc ()
701+#define ADJUST_REG_ALLOC_ORDER order_regs_for_local_alloc ()
702
703 extern char sparc_leaf_regs[];
704 #define LEAF_REGISTERS sparc_leaf_regs
705
706=== modified file 'gcc/config/sparc/sync.md'
707--- old/gcc/config/sparc/sync.md 2009-02-20 15:20:38 +0000
708+++ new/gcc/config/sparc/sync.md 2010-09-01 13:29:58 +0000
709@@ -1,5 +1,5 @@
710 ;; GCC machine description for SPARC synchronization instructions.
711-;; Copyright (C) 2005, 2007, 2009
712+;; Copyright (C) 2005, 2007, 2009, 2010
713 ;; Free Software Foundation, Inc.
714 ;;
715 ;; This file is part of GCC.
716@@ -62,7 +62,7 @@
717
718 (define_expand "sync_compare_and_swap<mode>"
719 [(parallel
720- [(set (match_operand:I48MODE 0 "register_operand" "=r")
721+ [(set (match_operand:I48MODE 0 "register_operand" "")
722 (match_operand:I48MODE 1 "memory_operand" ""))
723 (set (match_dup 1)
724 (unspec_volatile:I48MODE
725@@ -71,7 +71,7 @@
726 UNSPECV_CAS))])]
727 "TARGET_V9"
728 {
729- if (! REG_P (XEXP (operands[1], 0)))
730+ if (!REG_P (XEXP (operands[1], 0)))
731 {
732 rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
733 operands[1] = replace_equiv_address (operands[1], addr);
734@@ -81,20 +81,20 @@
735
736 (define_insn "*sync_compare_and_swap<mode>"
737 [(set (match_operand:I48MODE 0 "register_operand" "=r")
738- (match_operand:I48MODE 1 "memory_reg_operand" "+m"))
739- (set (match_dup 1)
740+ (mem:I48MODE (match_operand 1 "register_operand" "r")))
741+ (set (mem:I48MODE (match_dup 1))
742 (unspec_volatile:I48MODE
743 [(match_operand:I48MODE 2 "register_operand" "r")
744 (match_operand:I48MODE 3 "register_operand" "0")]
745 UNSPECV_CAS))]
746 "TARGET_V9 && (<MODE>mode == SImode || TARGET_ARCH64)"
747- "cas<modesuffix>\t%1, %2, %0"
748+ "cas<modesuffix>\t[%1], %2, %0"
749 [(set_attr "type" "multi")])
750
751 (define_insn "*sync_compare_and_swapdi_v8plus"
752 [(set (match_operand:DI 0 "register_operand" "=h")
753- (match_operand:DI 1 "memory_reg_operand" "+m"))
754- (set (match_dup 1)
755+ (mem:DI (match_operand 1 "register_operand" "r")))
756+ (set (mem:DI (match_dup 1))
757 (unspec_volatile:DI
758 [(match_operand:DI 2 "register_operand" "h")
759 (match_operand:DI 3 "register_operand" "0")]
760@@ -109,7 +109,7 @@
761 output_asm_insn ("srl\t%L2, 0, %L2", operands);
762 output_asm_insn ("sllx\t%H2, 32, %H3", operands);
763 output_asm_insn ("or\t%L2, %H3, %H3", operands);
764- output_asm_insn ("casx\t%1, %H3, %L3", operands);
765+ output_asm_insn ("casx\t[%1], %H3, %L3", operands);
766 return "srlx\t%L3, 32, %H3";
767 }
768 [(set_attr "type" "multi")
769
770=== modified file 'gcc/config/xtensa/xtensa.h'
771--- old/gcc/config/xtensa/xtensa.h 2009-09-23 21:24:42 +0000
772+++ new/gcc/config/xtensa/xtensa.h 2010-09-01 13:29:58 +0000
773@@ -286,7 +286,7 @@
774 incoming argument in a2 is live throughout the function and
775 local-alloc decides to use a2, then the incoming argument must
776 either be spilled or copied to another register. To get around
777- this, we define ORDER_REGS_FOR_LOCAL_ALLOC to redefine
778+ this, we define ADJUST_REG_ALLOC_ORDER to redefine
779 reg_alloc_order for leaf functions such that lowest numbered
780 registers are used first with the exception that the incoming
781 argument registers are not used until after other register choices
782@@ -300,7 +300,7 @@
783 35, \
784 }
785
786-#define ORDER_REGS_FOR_LOCAL_ALLOC order_regs_for_local_alloc ()
787+#define ADJUST_REG_ALLOC_ORDER order_regs_for_local_alloc ()
788
789 /* For Xtensa, the only point of this is to prevent GCC from otherwise
790 giving preference to call-used registers. To minimize window
791
792=== modified file 'gcc/doc/tm.texi'
793--- old/gcc/doc/tm.texi 2010-08-13 11:53:46 +0000
794+++ new/gcc/doc/tm.texi 2010-09-01 13:29:58 +0000
795@@ -2093,7 +2093,7 @@
796 the highest numbered allocable register first.
797 @end defmac
798
799-@defmac ORDER_REGS_FOR_LOCAL_ALLOC
800+@defmac ADJUST_REG_ALLOC_ORDER
801 A C statement (sans semicolon) to choose the order in which to allocate
802 hard registers for pseudo-registers local to a basic block.
803
804@@ -2107,6 +2107,15 @@
805 On most machines, it is not necessary to define this macro.
806 @end defmac
807
808+@defmac HONOR_REG_ALLOC_ORDER
809+Normally, IRA tries to estimate the costs for saving a register in the
810+prologue and restoring it in the epilogue. This discourages it from
811+using call-saved registers. If a machine wants to ensure that IRA
812+allocates registers in the order given by REG_ALLOC_ORDER even if some
813+call-saved registers appear earlier than call-used ones, this macro
814+should be defined.
815+@end defmac
816+
817 @defmac IRA_HARD_REGNO_ADD_COST_MULTIPLIER (@var{regno})
818 In some case register allocation order is not enough for the
819 Integrated Register Allocator (@acronym{IRA}) to generate a good code.
820
821=== modified file 'gcc/expmed.c'
822--- old/gcc/expmed.c 2010-03-03 22:10:17 +0000
823+++ new/gcc/expmed.c 2010-09-01 13:29:58 +0000
824@@ -3253,6 +3253,55 @@
825 gcc_assert (op0);
826 return op0;
827 }
828+
829+/* Perform a widening multiplication and return an rtx for the result.
830+ MODE is mode of value; OP0 and OP1 are what to multiply (rtx's);
831+ TARGET is a suggestion for where to store the result (an rtx).
832+ THIS_OPTAB is the optab we should use, it must be either umul_widen_optab
833+ or smul_widen_optab.
834+
835+ We check specially for a constant integer as OP1, comparing the
836+ cost of a widening multiply against the cost of a sequence of shifts
837+ and adds. */
838+
839+rtx
840+expand_widening_mult (enum machine_mode mode, rtx op0, rtx op1, rtx target,
841+ int unsignedp, optab this_optab)
842+{
843+ bool speed = optimize_insn_for_speed_p ();
844+
845+ if (CONST_INT_P (op1)
846+ && (INTVAL (op1) >= 0
847+ || GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT))
848+ {
849+ HOST_WIDE_INT coeff = INTVAL (op1);
850+ int max_cost;
851+ enum mult_variant variant;
852+ struct algorithm algorithm;
853+
854+ /* Special case powers of two. */
855+ if (EXACT_POWER_OF_2_OR_ZERO_P (coeff))
856+ {
857+ op0 = convert_to_mode (mode, op0, this_optab == umul_widen_optab);
858+ return expand_shift (LSHIFT_EXPR, mode, op0,
859+ build_int_cst (NULL_TREE, floor_log2 (coeff)),
860+ target, unsignedp);
861+ }
862+
863+ /* Exclude cost of op0 from max_cost to match the cost
864+ calculation of the synth_mult. */
865+ max_cost = mul_widen_cost[speed][mode];
866+ if (choose_mult_variant (mode, coeff, &algorithm, &variant,
867+ max_cost))
868+ {
869+ op0 = convert_to_mode (mode, op0, this_optab == umul_widen_optab);
870+ return expand_mult_const (mode, op0, coeff, target,
871+ &algorithm, variant);
872+ }
873+ }
874+ return expand_binop (mode, this_optab, op0, op1, target,
875+ unsignedp, OPTAB_LIB_WIDEN);
876+}
877
878 /* Return the smallest n such that 2**n >= X. */
879
880
881=== modified file 'gcc/expr.c'
882--- old/gcc/expr.c 2010-08-20 16:21:01 +0000
883+++ new/gcc/expr.c 2010-09-01 13:29:58 +0000
884@@ -7224,7 +7224,6 @@
885 optab this_optab;
886 rtx subtarget, original_target;
887 int ignore;
888- tree subexp0, subexp1;
889 bool reduce_bit_field;
890 gimple subexp0_def, subexp1_def;
891 tree top0, top1;
892@@ -7679,13 +7678,7 @@
893
894 goto binop2;
895
896- case MULT_EXPR:
897- /* If this is a fixed-point operation, then we cannot use the code
898- below because "expand_mult" doesn't support sat/no-sat fixed-point
899- multiplications. */
900- if (ALL_FIXED_POINT_MODE_P (mode))
901- goto binop;
902-
903+ case WIDEN_MULT_EXPR:
904 /* If first operand is constant, swap them.
905 Thus the following special case checks need only
906 check the second operand. */
907@@ -7696,96 +7689,35 @@
908 treeop1 = t1;
909 }
910
911- /* Attempt to return something suitable for generating an
912- indexed address, for machines that support that. */
913-
914- if (modifier == EXPAND_SUM && mode == ptr_mode
915- && host_integerp (treeop1, 0))
916- {
917- tree exp1 = treeop1;
918-
919- op0 = expand_expr (treeop0, subtarget, VOIDmode,
920- EXPAND_SUM);
921-
922- if (!REG_P (op0))
923- op0 = force_operand (op0, NULL_RTX);
924- if (!REG_P (op0))
925- op0 = copy_to_mode_reg (mode, op0);
926-
927- return REDUCE_BIT_FIELD (gen_rtx_MULT (mode, op0,
928- gen_int_mode (tree_low_cst (exp1, 0),
929- TYPE_MODE (TREE_TYPE (exp1)))));
930- }
931-
932- if (modifier == EXPAND_STACK_PARM)
933- target = 0;
934-
935- /* Check for multiplying things that have been extended
936- from a narrower type. If this machine supports multiplying
937- in that narrower type with a result in the desired type,
938- do it that way, and avoid the explicit type-conversion. */
939-
940- subexp0 = treeop0;
941- subexp1 = treeop1;
942- subexp0_def = get_def_for_expr (subexp0, NOP_EXPR);
943- subexp1_def = get_def_for_expr (subexp1, NOP_EXPR);
944- top0 = top1 = NULL_TREE;
945-
946 /* First, check if we have a multiplication of one signed and one
947 unsigned operand. */
948- if (subexp0_def
949- && (top0 = gimple_assign_rhs1 (subexp0_def))
950- && subexp1_def
951- && (top1 = gimple_assign_rhs1 (subexp1_def))
952- && TREE_CODE (type) == INTEGER_TYPE
953- && (TYPE_PRECISION (TREE_TYPE (top0))
954- < TYPE_PRECISION (TREE_TYPE (subexp0)))
955- && (TYPE_PRECISION (TREE_TYPE (top0))
956- == TYPE_PRECISION (TREE_TYPE (top1)))
957- && (TYPE_UNSIGNED (TREE_TYPE (top0))
958- != TYPE_UNSIGNED (TREE_TYPE (top1))))
959+ if (TREE_CODE (treeop1) != INTEGER_CST
960+ && (TYPE_UNSIGNED (TREE_TYPE (treeop0))
961+ != TYPE_UNSIGNED (TREE_TYPE (treeop1))))
962 {
963- enum machine_mode innermode
964- = TYPE_MODE (TREE_TYPE (top0));
965+ enum machine_mode innermode = TYPE_MODE (TREE_TYPE (treeop0));
966 this_optab = usmul_widen_optab;
967- if (mode == GET_MODE_WIDER_MODE (innermode))
968+ if (mode == GET_MODE_2XWIDER_MODE (innermode))
969 {
970 if (optab_handler (this_optab, mode)->insn_code != CODE_FOR_nothing)
971 {
972- if (TYPE_UNSIGNED (TREE_TYPE (top0)))
973- expand_operands (top0, top1, NULL_RTX, &op0, &op1,
974+ if (TYPE_UNSIGNED (TREE_TYPE (treeop0)))
975+ expand_operands (treeop0, treeop1, subtarget, &op0, &op1,
976 EXPAND_NORMAL);
977 else
978- expand_operands (top0, top1, NULL_RTX, &op1, &op0,
979+ expand_operands (treeop0, treeop1, subtarget, &op1, &op0,
980 EXPAND_NORMAL);
981-
982 goto binop3;
983 }
984 }
985 }
986- /* Check for a multiplication with matching signedness. If
987- valid, TOP0 and TOP1 were set in the previous if
988- condition. */
989- else if (top0
990- && TREE_CODE (type) == INTEGER_TYPE
991- && (TYPE_PRECISION (TREE_TYPE (top0))
992- < TYPE_PRECISION (TREE_TYPE (subexp0)))
993- && ((TREE_CODE (subexp1) == INTEGER_CST
994- && int_fits_type_p (subexp1, TREE_TYPE (top0))
995- /* Don't use a widening multiply if a shift will do. */
996- && ((GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (subexp1)))
997- > HOST_BITS_PER_WIDE_INT)
998- || exact_log2 (TREE_INT_CST_LOW (subexp1)) < 0))
999- ||
1000- (top1
1001- && (TYPE_PRECISION (TREE_TYPE (top1))
1002- == TYPE_PRECISION (TREE_TYPE (top0))
1003- /* If both operands are extended, they must either both
1004- be zero-extended or both be sign-extended. */
1005- && (TYPE_UNSIGNED (TREE_TYPE (top1))
1006- == TYPE_UNSIGNED (TREE_TYPE (top0)))))))
1007+ /* Check for a multiplication with matching signedness. */
1008+ else if ((TREE_CODE (treeop1) == INTEGER_CST
1009+ && int_fits_type_p (treeop1, TREE_TYPE (treeop0)))
1010+ || (TYPE_UNSIGNED (TREE_TYPE (treeop1))
1011+ == TYPE_UNSIGNED (TREE_TYPE (treeop0))))
1012 {
1013- tree op0type = TREE_TYPE (top0);
1014+ tree op0type = TREE_TYPE (treeop0);
1015 enum machine_mode innermode = TYPE_MODE (op0type);
1016 bool zextend_p = TYPE_UNSIGNED (op0type);
1017 optab other_optab = zextend_p ? smul_widen_optab : umul_widen_optab;
1018@@ -7795,24 +7727,22 @@
1019 {
1020 if (optab_handler (this_optab, mode)->insn_code != CODE_FOR_nothing)
1021 {
1022- if (TREE_CODE (subexp1) == INTEGER_CST)
1023- expand_operands (top0, subexp1, NULL_RTX, &op0, &op1,
1024- EXPAND_NORMAL);
1025- else
1026- expand_operands (top0, top1, NULL_RTX, &op0, &op1,
1027- EXPAND_NORMAL);
1028- goto binop3;
1029+ expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1,
1030+ EXPAND_NORMAL);
1031+ temp = expand_widening_mult (mode, op0, op1, target,
1032+ unsignedp, this_optab);
1033+ return REDUCE_BIT_FIELD (temp);
1034 }
1035- else if (optab_handler (other_optab, mode)->insn_code != CODE_FOR_nothing
1036- && innermode == word_mode)
1037+ if (optab_handler (other_optab, mode)->insn_code != CODE_FOR_nothing
1038+ && innermode == word_mode)
1039 {
1040 rtx htem, hipart;
1041- op0 = expand_normal (top0);
1042- if (TREE_CODE (subexp1) == INTEGER_CST)
1043+ op0 = expand_normal (treeop0);
1044+ if (TREE_CODE (treeop1) == INTEGER_CST)
1045 op1 = convert_modes (innermode, mode,
1046- expand_normal (subexp1), unsignedp);
1047+ expand_normal (treeop1), unsignedp);
1048 else
1049- op1 = expand_normal (top1);
1050+ op1 = expand_normal (treeop1);
1051 temp = expand_binop (mode, other_optab, op0, op1, target,
1052 unsignedp, OPTAB_LIB_WIDEN);
1053 hipart = gen_highpart (innermode, temp);
1054@@ -7825,7 +7755,53 @@
1055 }
1056 }
1057 }
1058- expand_operands (subexp0, subexp1, subtarget, &op0, &op1, EXPAND_NORMAL);
1059+ treeop0 = fold_build1 (CONVERT_EXPR, type, treeop0);
1060+ treeop1 = fold_build1 (CONVERT_EXPR, type, treeop1);
1061+ expand_operands (treeop0, treeop1, subtarget, &op0, &op1, EXPAND_NORMAL);
1062+ return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp));
1063+
1064+ case MULT_EXPR:
1065+ /* If this is a fixed-point operation, then we cannot use the code
1066+ below because "expand_mult" doesn't support sat/no-sat fixed-point
1067+ multiplications. */
1068+ if (ALL_FIXED_POINT_MODE_P (mode))
1069+ goto binop;
1070+
1071+ /* If first operand is constant, swap them.
1072+ Thus the following special case checks need only
1073+ check the second operand. */
1074+ if (TREE_CODE (treeop0) == INTEGER_CST)
1075+ {
1076+ tree t1 = treeop0;
1077+ treeop0 = treeop1;
1078+ treeop1 = t1;
1079+ }
1080+
1081+ /* Attempt to return something suitable for generating an
1082+ indexed address, for machines that support that. */
1083+
1084+ if (modifier == EXPAND_SUM && mode == ptr_mode
1085+ && host_integerp (treeop1, 0))
1086+ {
1087+ tree exp1 = treeop1;
1088+
1089+ op0 = expand_expr (treeop0, subtarget, VOIDmode,
1090+ EXPAND_SUM);
1091+
1092+ if (!REG_P (op0))
1093+ op0 = force_operand (op0, NULL_RTX);
1094+ if (!REG_P (op0))
1095+ op0 = copy_to_mode_reg (mode, op0);
1096+
1097+ return REDUCE_BIT_FIELD (gen_rtx_MULT (mode, op0,
1098+ gen_int_mode (tree_low_cst (exp1, 0),
1099+ TYPE_MODE (TREE_TYPE (exp1)))));
1100+ }
1101+
1102+ if (modifier == EXPAND_STACK_PARM)
1103+ target = 0;
1104+
1105+ expand_operands (treeop0, treeop1, subtarget, &op0, &op1, EXPAND_NORMAL);
1106 return REDUCE_BIT_FIELD (expand_mult (mode, op0, op1, target, unsignedp));
1107
1108 case TRUNC_DIV_EXPR:
1109@@ -8311,6 +8287,8 @@
1110 location_t loc = EXPR_LOCATION (exp);
1111 struct separate_ops ops;
1112 tree treeop0, treeop1, treeop2;
1113+ tree ssa_name = NULL_TREE;
1114+ gimple g;
1115
1116 type = TREE_TYPE (exp);
1117 mode = TYPE_MODE (type);
1118@@ -8423,15 +8401,17 @@
1119 base variable. This unnecessarily allocates a pseudo, see how we can
1120 reuse it, if partition base vars have it set already. */
1121 if (!currently_expanding_to_rtl)
1122- return expand_expr_real_1 (SSA_NAME_VAR (exp), target, tmode, modifier, NULL);
1123- {
1124- gimple g = get_gimple_for_ssa_name (exp);
1125- if (g)
1126- return expand_expr_real (gimple_assign_rhs_to_tree (g), target,
1127- tmode, modifier, NULL);
1128- }
1129- decl_rtl = get_rtx_for_ssa_name (exp);
1130- exp = SSA_NAME_VAR (exp);
1131+ return expand_expr_real_1 (SSA_NAME_VAR (exp), target, tmode, modifier,
1132+ NULL);
1133+
1134+ g = get_gimple_for_ssa_name (exp);
1135+ if (g)
1136+ return expand_expr_real (gimple_assign_rhs_to_tree (g), target, tmode,
1137+ modifier, NULL);
1138+
1139+ ssa_name = exp;
1140+ decl_rtl = get_rtx_for_ssa_name (ssa_name);
1141+ exp = SSA_NAME_VAR (ssa_name);
1142 goto expand_decl_rtl;
1143
1144 case PARM_DECL:
1145@@ -8533,15 +8513,21 @@
1146 /* If the mode of DECL_RTL does not match that of the decl, it
1147 must be a promoted value. We return a SUBREG of the wanted mode,
1148 but mark it so that we know that it was already extended. */
1149-
1150- if (REG_P (decl_rtl)
1151- && GET_MODE (decl_rtl) != DECL_MODE (exp))
1152+ if (REG_P (decl_rtl) && GET_MODE (decl_rtl) != DECL_MODE (exp))
1153 {
1154 enum machine_mode pmode;
1155
1156- /* Get the signedness used for this variable. Ensure we get the
1157- same mode we got when the variable was declared. */
1158- pmode = promote_decl_mode (exp, &unsignedp);
1159+ /* Get the signedness to be used for this variable. Ensure we get
1160+ the same mode we got when the variable was declared. */
1161+ if (code == SSA_NAME
1162+ && (g = SSA_NAME_DEF_STMT (ssa_name))
1163+ && gimple_code (g) == GIMPLE_CALL)
1164+ pmode = promote_function_mode (type, mode, &unsignedp,
1165+ TREE_TYPE
1166+ (TREE_TYPE (gimple_call_fn (g))),
1167+ 2);
1168+ else
1169+ pmode = promote_decl_mode (exp, &unsignedp);
1170 gcc_assert (GET_MODE (decl_rtl) == pmode);
1171
1172 temp = gen_lowpart_SUBREG (mode, decl_rtl);
1173
1174=== modified file 'gcc/fold-const.c'
1175--- old/gcc/fold-const.c 2010-04-06 09:36:57 +0000
1176+++ new/gcc/fold-const.c 2010-09-01 13:29:58 +0000
1177@@ -5741,6 +5741,76 @@
1178 const_binop (BIT_XOR_EXPR, c, temp, 0));
1179 }
1180
1181+/* For an expression that has the form
1182+ (A && B) || ~B
1183+ or
1184+ (A || B) && ~B,
1185+ we can drop one of the inner expressions and simplify to
1186+ A || ~B
1187+ or
1188+ A && ~B
1189+ LOC is the location of the resulting expression. OP is the inner
1190+ logical operation; the left-hand side in the examples above, while CMPOP
1191+ is the right-hand side. RHS_ONLY is used to prevent us from accidentally
1192+ removing a condition that guards another, as in
1193+ (A != NULL && A->...) || A == NULL
1194+ which we must not transform. If RHS_ONLY is true, only eliminate the
1195+ right-most operand of the inner logical operation. */
1196+
1197+static tree
1198+merge_truthop_with_opposite_arm (location_t loc, tree op, tree cmpop,
1199+ bool rhs_only)
1200+{
1201+ tree type = TREE_TYPE (cmpop);
1202+ enum tree_code code = TREE_CODE (cmpop);
1203+ enum tree_code truthop_code = TREE_CODE (op);
1204+ tree lhs = TREE_OPERAND (op, 0);
1205+ tree rhs = TREE_OPERAND (op, 1);
1206+ tree orig_lhs = lhs, orig_rhs = rhs;
1207+ enum tree_code rhs_code = TREE_CODE (rhs);
1208+ enum tree_code lhs_code = TREE_CODE (lhs);
1209+ enum tree_code inv_code;
1210+
1211+ if (TREE_SIDE_EFFECTS (op) || TREE_SIDE_EFFECTS (cmpop))
1212+ return NULL_TREE;
1213+
1214+ if (TREE_CODE_CLASS (code) != tcc_comparison)
1215+ return NULL_TREE;
1216+
1217+ if (rhs_code == truthop_code)
1218+ {
1219+ tree newrhs = merge_truthop_with_opposite_arm (loc, rhs, cmpop, rhs_only);
1220+ if (newrhs != NULL_TREE)
1221+ {
1222+ rhs = newrhs;
1223+ rhs_code = TREE_CODE (rhs);
1224+ }
1225+ }
1226+ if (lhs_code == truthop_code && !rhs_only)
1227+ {
1228+ tree newlhs = merge_truthop_with_opposite_arm (loc, lhs, cmpop, false);
1229+ if (newlhs != NULL_TREE)
1230+ {
1231+ lhs = newlhs;
1232+ lhs_code = TREE_CODE (lhs);
1233+ }
1234+ }
1235+
1236+ inv_code = invert_tree_comparison (code, HONOR_NANS (TYPE_MODE (type)));
1237+ if (inv_code == rhs_code
1238+ && operand_equal_p (TREE_OPERAND (rhs, 0), TREE_OPERAND (cmpop, 0), 0)
1239+ && operand_equal_p (TREE_OPERAND (rhs, 1), TREE_OPERAND (cmpop, 1), 0))
1240+ return lhs;
1241+ if (!rhs_only && inv_code == lhs_code
1242+ && operand_equal_p (TREE_OPERAND (lhs, 0), TREE_OPERAND (cmpop, 0), 0)
1243+ && operand_equal_p (TREE_OPERAND (lhs, 1), TREE_OPERAND (cmpop, 1), 0))
1244+ return rhs;
1245+ if (rhs != orig_rhs || lhs != orig_lhs)
1246+ return fold_build2_loc (loc, truthop_code, TREE_TYPE (cmpop),
1247+ lhs, rhs);
1248+ return NULL_TREE;
1249+}
1250+
1251 /* Find ways of folding logical expressions of LHS and RHS:
1252 Try to merge two comparisons to the same innermost item.
1253 Look for range tests like "ch >= '0' && ch <= '9'".
1254@@ -12539,6 +12609,22 @@
1255 if (0 != (tem = fold_range_test (loc, code, type, op0, op1)))
1256 return tem;
1257
1258+ if ((code == TRUTH_ANDIF_EXPR && TREE_CODE (arg0) == TRUTH_ORIF_EXPR)
1259+ || (code == TRUTH_ORIF_EXPR && TREE_CODE (arg0) == TRUTH_ANDIF_EXPR))
1260+ {
1261+ tem = merge_truthop_with_opposite_arm (loc, arg0, arg1, true);
1262+ if (tem)
1263+ return fold_build2_loc (loc, code, type, tem, arg1);
1264+ }
1265+
1266+ if ((code == TRUTH_ANDIF_EXPR && TREE_CODE (arg1) == TRUTH_ORIF_EXPR)
1267+ || (code == TRUTH_ORIF_EXPR && TREE_CODE (arg1) == TRUTH_ANDIF_EXPR))
1268+ {
1269+ tem = merge_truthop_with_opposite_arm (loc, arg1, arg0, false);
1270+ if (tem)
1271+ return fold_build2_loc (loc, code, type, arg0, tem);
1272+ }
1273+
1274 /* Check for the possibility of merging component references. If our
1275 lhs is another similar operation, try to merge its rhs with our
1276 rhs. Then try to merge our lhs and rhs. */
1277
1278=== modified file 'gcc/ifcvt.c'
1279--- old/gcc/ifcvt.c 2010-04-02 18:54:46 +0000
1280+++ new/gcc/ifcvt.c 2010-09-01 13:29:58 +0000
1281@@ -385,7 +385,11 @@
1282 rtx false_expr; /* test for then block insns */
1283 rtx true_prob_val; /* probability of else block */
1284 rtx false_prob_val; /* probability of then block */
1285- int n_insns;
1286+ rtx then_last_head = NULL_RTX; /* Last match at the head of THEN */
1287+ rtx else_last_head = NULL_RTX; /* Last match at the head of ELSE */
1288+ rtx then_first_tail = NULL_RTX; /* First match at the tail of THEN */
1289+ rtx else_first_tail = NULL_RTX; /* First match at the tail of ELSE */
1290+ int then_n_insns, else_n_insns, n_insns;
1291 enum rtx_code false_code;
1292
1293 /* If test is comprised of && or || elements, and we've failed at handling
1294@@ -418,15 +422,78 @@
1295 number of insns and see if it is small enough to convert. */
1296 then_start = first_active_insn (then_bb);
1297 then_end = last_active_insn (then_bb, TRUE);
1298- n_insns = ce_info->num_then_insns = count_bb_insns (then_bb);
1299+ then_n_insns = ce_info->num_then_insns = count_bb_insns (then_bb);
1300+ n_insns = then_n_insns;
1301 max = MAX_CONDITIONAL_EXECUTE;
1302
1303 if (else_bb)
1304 {
1305+ int n_matching;
1306+
1307 max *= 2;
1308 else_start = first_active_insn (else_bb);
1309 else_end = last_active_insn (else_bb, TRUE);
1310- n_insns += ce_info->num_else_insns = count_bb_insns (else_bb);
1311+ else_n_insns = ce_info->num_else_insns = count_bb_insns (else_bb);
1312+ n_insns += else_n_insns;
1313+
1314+ /* Look for matching sequences at the head and tail of the two blocks,
1315+ and limit the range of insns to be converted if possible. */
1316+ n_matching = flow_find_cross_jump (then_bb, else_bb,
1317+ &then_first_tail, &else_first_tail);
1318+ if (then_first_tail == BB_HEAD (then_bb))
1319+ then_start = then_end = NULL_RTX;
1320+ if (else_first_tail == BB_HEAD (else_bb))
1321+ else_start = else_end = NULL_RTX;
1322+
1323+ if (n_matching > 0)
1324+ {
1325+ if (then_end)
1326+ then_end = prev_active_insn (then_first_tail);
1327+ if (else_end)
1328+ else_end = prev_active_insn (else_first_tail);
1329+ n_insns -= 2 * n_matching;
1330+ }
1331+
1332+ if (then_start && else_start)
1333+ {
1334+ int longest_match = MIN (then_n_insns - n_matching,
1335+ else_n_insns - n_matching);
1336+ n_matching
1337+ = flow_find_head_matching_sequence (then_bb, else_bb,
1338+ &then_last_head,
1339+ &else_last_head,
1340+ longest_match);
1341+
1342+ if (n_matching > 0)
1343+ {
1344+ rtx insn;
1345+
1346+ /* We won't pass the insns in the head sequence to
1347+ cond_exec_process_insns, so we need to test them here
1348+ to make sure that they don't clobber the condition. */
1349+ for (insn = BB_HEAD (then_bb);
1350+ insn != NEXT_INSN (then_last_head);
1351+ insn = NEXT_INSN (insn))
1352+ if (!LABEL_P (insn) && !NOTE_P (insn)
1353+ && !DEBUG_INSN_P (insn)
1354+ && modified_in_p (test_expr, insn))
1355+ return FALSE;
1356+ }
1357+
1358+ if (then_last_head == then_end)
1359+ then_start = then_end = NULL_RTX;
1360+ if (else_last_head == else_end)
1361+ else_start = else_end = NULL_RTX;
1362+
1363+ if (n_matching > 0)
1364+ {
1365+ if (then_start)
1366+ then_start = next_active_insn (then_last_head);
1367+ if (else_start)
1368+ else_start = next_active_insn (else_last_head);
1369+ n_insns -= 2 * n_matching;
1370+ }
1371+ }
1372 }
1373
1374 if (n_insns > max)
1375@@ -570,7 +637,21 @@
1376 fprintf (dump_file, "%d insn%s converted to conditional execution.\n",
1377 n_insns, (n_insns == 1) ? " was" : "s were");
1378
1379- /* Merge the blocks! */
1380+ /* Merge the blocks! If we had matching sequences, make sure to delete one
1381+ copy at the appropriate location first: delete the copy in the THEN branch
1382+ for a tail sequence so that the remaining one is executed last for both
1383+ branches, and delete the copy in the ELSE branch for a head sequence so
1384+ that the remaining one is executed first for both branches. */
1385+ if (then_first_tail)
1386+ {
1387+ rtx from = then_first_tail;
1388+ if (!INSN_P (from))
1389+ from = next_active_insn (from);
1390+ delete_insn_chain (from, BB_END (then_bb), false);
1391+ }
1392+ if (else_last_head)
1393+ delete_insn_chain (first_active_insn (else_bb), else_last_head, false);
1394+
1395 merge_if_block (ce_info);
1396 cond_exec_changed_p = TRUE;
1397 return TRUE;
1398
1399=== modified file 'gcc/ira-color.c'
1400--- old/gcc/ira-color.c 2010-04-02 18:54:46 +0000
1401+++ new/gcc/ira-color.c 2010-09-01 13:29:58 +0000
1402@@ -441,14 +441,18 @@
1403 {
1404 HARD_REG_SET conflicting_regs;
1405 int i, j, k, hard_regno, best_hard_regno, class_size;
1406- int cost, mem_cost, min_cost, full_cost, min_full_cost, add_cost;
1407+ int cost, mem_cost, min_cost, full_cost, min_full_cost;
1408 int *a_costs;
1409 int *conflict_costs;
1410- enum reg_class cover_class, rclass, conflict_cover_class;
1411+ enum reg_class cover_class, conflict_cover_class;
1412 enum machine_mode mode;
1413 ira_allocno_t a, conflict_allocno;
1414 ira_allocno_conflict_iterator aci;
1415 static int costs[FIRST_PSEUDO_REGISTER], full_costs[FIRST_PSEUDO_REGISTER];
1416+#ifndef HONOR_REG_ALLOC_ORDER
1417+ enum reg_class rclass;
1418+ int add_cost;
1419+#endif
1420 #ifdef STACK_REGS
1421 bool no_stack_reg_p;
1422 #endif
1423@@ -586,6 +590,7 @@
1424 continue;
1425 cost = costs[i];
1426 full_cost = full_costs[i];
1427+#ifndef HONOR_REG_ALLOC_ORDER
1428 if (! allocated_hardreg_p[hard_regno]
1429 && ira_hard_reg_not_in_set_p (hard_regno, mode, call_used_reg_set))
1430 /* We need to save/restore the hard register in
1431@@ -598,6 +603,7 @@
1432 cost += add_cost;
1433 full_cost += add_cost;
1434 }
1435+#endif
1436 if (min_cost > cost)
1437 min_cost = cost;
1438 if (min_full_cost > full_cost)
1439
1440=== modified file 'gcc/ira-costs.c'
1441--- old/gcc/ira-costs.c 2010-08-13 11:40:17 +0000
1442+++ new/gcc/ira-costs.c 2010-09-01 13:29:58 +0000
1443@@ -33,6 +33,7 @@
1444 #include "addresses.h"
1445 #include "insn-config.h"
1446 #include "recog.h"
1447+#include "reload.h"
1448 #include "toplev.h"
1449 #include "target.h"
1450 #include "params.h"
1451@@ -123,6 +124,10 @@
1452 /* Record cover register class of each allocno with the same regno. */
1453 static enum reg_class *regno_cover_class;
1454
1455+/* Record cost gains for not allocating a register with an invariant
1456+ equivalence. */
1457+static int *regno_equiv_gains;
1458+
1459 /* Execution frequency of the current insn. */
1460 static int frequency;
1461
1462@@ -1263,6 +1268,7 @@
1463 #ifdef FORBIDDEN_INC_DEC_CLASSES
1464 int inc_dec_p = false;
1465 #endif
1466+ int equiv_savings = regno_equiv_gains[i];
1467
1468 if (! allocno_p)
1469 {
1470@@ -1311,6 +1317,15 @@
1471 #endif
1472 }
1473 }
1474+ if (equiv_savings < 0)
1475+ temp_costs->mem_cost = -equiv_savings;
1476+ else if (equiv_savings > 0)
1477+ {
1478+ temp_costs->mem_cost = 0;
1479+ for (k = 0; k < cost_classes_num; k++)
1480+ temp_costs->cost[k] += equiv_savings;
1481+ }
1482+
1483 best_cost = (1 << (HOST_BITS_PER_INT - 2)) - 1;
1484 best = ALL_REGS;
1485 alt_class = NO_REGS;
1486@@ -1680,6 +1695,8 @@
1487 regno_cover_class
1488 = (enum reg_class *) ira_allocate (sizeof (enum reg_class)
1489 * max_reg_num ());
1490+ regno_equiv_gains = (int *) ira_allocate (sizeof (int) * max_reg_num ());
1491+ memset (regno_equiv_gains, 0, sizeof (int) * max_reg_num ());
1492 }
1493
1494 /* Common finalization function for ira_costs and
1495@@ -1687,6 +1704,7 @@
1496 static void
1497 finish_costs (void)
1498 {
1499+ ira_free (regno_equiv_gains);
1500 ira_free (regno_cover_class);
1501 ira_free (pref_buffer);
1502 ira_free (costs);
1503@@ -1702,6 +1720,7 @@
1504 init_costs ();
1505 total_allocno_costs = (struct costs *) ira_allocate (max_struct_costs_size
1506 * ira_allocnos_num);
1507+ calculate_elim_costs_all_insns ();
1508 find_costs_and_classes (ira_dump_file);
1509 setup_allocno_cover_class_and_costs ();
1510 finish_costs ();
1511@@ -1775,3 +1794,16 @@
1512 ALLOCNO_COVER_CLASS_COST (a) = min_cost;
1513 }
1514 }
1515+
1516+/* Add COST to the estimated gain for eliminating REGNO with its
1517+ equivalence. If COST is zero, record that no such elimination is
1518+ possible. */
1519+
1520+void
1521+ira_adjust_equiv_reg_cost (unsigned regno, int cost)
1522+{
1523+ if (cost == 0)
1524+ regno_equiv_gains[regno] = 0;
1525+ else
1526+ regno_equiv_gains[regno] += cost;
1527+}
1528
1529=== modified file 'gcc/ira.c'
1530--- old/gcc/ira.c 2010-08-12 13:51:16 +0000
1531+++ new/gcc/ira.c 2010-09-01 13:29:58 +0000
1532@@ -431,9 +431,6 @@
1533 HARD_REG_SET processed_hard_reg_set;
1534
1535 ira_assert (SHRT_MAX >= FIRST_PSEUDO_REGISTER);
1536- /* We could call ORDER_REGS_FOR_LOCAL_ALLOC here (it is usually
1537- putting hard callee-used hard registers first). But our
1538- heuristics work better. */
1539 for (cl = (int) N_REG_CLASSES - 1; cl >= 0; cl--)
1540 {
1541 COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl]);
1542@@ -490,6 +487,9 @@
1543 static void
1544 setup_alloc_regs (bool use_hard_frame_p)
1545 {
1546+#ifdef ADJUST_REG_ALLOC_ORDER
1547+ ADJUST_REG_ALLOC_ORDER;
1548+#endif
1549 COPY_HARD_REG_SET (no_unit_alloc_regs, fixed_reg_set);
1550 if (! use_hard_frame_p)
1551 SET_HARD_REG_BIT (no_unit_alloc_regs, HARD_FRAME_POINTER_REGNUM);
1552@@ -1533,12 +1533,8 @@
1553
1554 x = XEXP (note, 0);
1555
1556- if (! function_invariant_p (x)
1557- || ! flag_pic
1558- /* A function invariant is often CONSTANT_P but may
1559- include a register. We promise to only pass CONSTANT_P
1560- objects to LEGITIMATE_PIC_OPERAND_P. */
1561- || (CONSTANT_P (x) && LEGITIMATE_PIC_OPERAND_P (x)))
1562+ if (! CONSTANT_P (x)
1563+ || ! flag_pic || LEGITIMATE_PIC_OPERAND_P (x))
1564 {
1565 /* It can happen that a REG_EQUIV note contains a MEM
1566 that is not a legitimate memory operand. As later
1567@@ -3097,8 +3093,19 @@
1568 if (dump_file)
1569 print_insn_chains (dump_file);
1570 }
1571-
1572
1573+/* Allocate memory for reg_equiv_memory_loc. */
1574+static void
1575+init_reg_equiv_memory_loc (void)
1576+{
1577+ max_regno = max_reg_num ();
1578+
1579+ /* And the reg_equiv_memory_loc array. */
1580+ VEC_safe_grow (rtx, gc, reg_equiv_memory_loc_vec, max_regno);
1581+ memset (VEC_address (rtx, reg_equiv_memory_loc_vec), 0,
1582+ sizeof (rtx) * max_regno);
1583+ reg_equiv_memory_loc = VEC_address (rtx, reg_equiv_memory_loc_vec);
1584+}
1585
1586 /* All natural loops. */
1587 struct loops ira_loops;
1588@@ -3203,6 +3210,8 @@
1589 record_loop_exits ();
1590 current_loops = &ira_loops;
1591
1592+ init_reg_equiv_memory_loc ();
1593+
1594 if (internal_flag_ira_verbose > 0 && ira_dump_file != NULL)
1595 fprintf (ira_dump_file, "Building IRA IR\n");
1596 loops_p = ira_build (optimize
1597@@ -3263,13 +3272,8 @@
1598 #endif
1599
1600 delete_trivially_dead_insns (get_insns (), max_reg_num ());
1601- max_regno = max_reg_num ();
1602
1603- /* And the reg_equiv_memory_loc array. */
1604- VEC_safe_grow (rtx, gc, reg_equiv_memory_loc_vec, max_regno);
1605- memset (VEC_address (rtx, reg_equiv_memory_loc_vec), 0,
1606- sizeof (rtx) * max_regno);
1607- reg_equiv_memory_loc = VEC_address (rtx, reg_equiv_memory_loc_vec);
1608+ init_reg_equiv_memory_loc ();
1609
1610 if (max_regno != max_regno_before_ira)
1611 {
1612
1613=== modified file 'gcc/ira.h'
1614--- old/gcc/ira.h 2009-09-02 17:54:25 +0000
1615+++ new/gcc/ira.h 2010-09-01 13:29:58 +0000
1616@@ -87,3 +87,4 @@
1617 extern void ira_mark_new_stack_slot (rtx, int, unsigned int);
1618 extern bool ira_better_spill_reload_regno_p (int *, int *, rtx, rtx, rtx);
1619
1620+extern void ira_adjust_equiv_reg_cost (unsigned, int);
1621
1622=== modified file 'gcc/optabs.h'
1623--- old/gcc/optabs.h 2009-11-25 10:55:54 +0000
1624+++ new/gcc/optabs.h 2010-09-01 13:29:58 +0000
1625@@ -771,6 +771,9 @@
1626 /* Generate code for float to integral conversion. */
1627 extern bool expand_sfix_optab (rtx, rtx, convert_optab);
1628
1629+/* Generate code for a widening multiply. */
1630+extern rtx expand_widening_mult (enum machine_mode, rtx, rtx, rtx, int, optab);
1631+
1632 /* Return tree if target supports vector operations for COND_EXPR. */
1633 bool expand_vec_cond_expr_p (tree, enum machine_mode);
1634
1635
1636=== modified file 'gcc/passes.c'
1637--- old/gcc/passes.c 2010-05-19 12:14:37 +0000
1638+++ new/gcc/passes.c 2010-09-01 13:29:58 +0000
1639@@ -944,6 +944,7 @@
1640 NEXT_PASS (pass_forwprop);
1641 NEXT_PASS (pass_phiopt);
1642 NEXT_PASS (pass_fold_builtins);
1643+ NEXT_PASS (pass_optimize_widening_mul);
1644 NEXT_PASS (pass_tail_calls);
1645 NEXT_PASS (pass_rename_ssa_copies);
1646 NEXT_PASS (pass_uncprop);
1647
1648=== modified file 'gcc/reload.h'
1649--- old/gcc/reload.h 2010-04-02 18:54:46 +0000
1650+++ new/gcc/reload.h 2010-09-01 13:29:58 +0000
1651@@ -347,6 +347,10 @@
1652 extern rtx eliminate_regs (rtx, enum machine_mode, rtx);
1653 extern bool elimination_target_reg_p (rtx);
1654
1655+/* Called from the register allocator to estimate costs of eliminating
1656+ invariant registers. */
1657+extern void calculate_elim_costs_all_insns (void);
1658+
1659 /* Deallocate the reload register used by reload number R. */
1660 extern void deallocate_reload_reg (int r);
1661
1662
1663=== modified file 'gcc/reload1.c'
1664--- old/gcc/reload1.c 2010-03-02 18:56:50 +0000
1665+++ new/gcc/reload1.c 2010-09-01 13:29:58 +0000
1666@@ -413,6 +413,7 @@
1667 static void set_label_offsets (rtx, rtx, int);
1668 static void check_eliminable_occurrences (rtx);
1669 static void elimination_effects (rtx, enum machine_mode);
1670+static rtx eliminate_regs_1 (rtx, enum machine_mode, rtx, bool, bool);
1671 static int eliminate_regs_in_insn (rtx, int);
1672 static void update_eliminable_offsets (void);
1673 static void mark_not_eliminable (rtx, const_rtx, void *);
1674@@ -420,8 +421,11 @@
1675 static bool verify_initial_elim_offsets (void);
1676 static void set_initial_label_offsets (void);
1677 static void set_offsets_for_label (rtx);
1678+static void init_eliminable_invariants (rtx, bool);
1679 static void init_elim_table (void);
1680+static void free_reg_equiv (void);
1681 static void update_eliminables (HARD_REG_SET *);
1682+static void elimination_costs_in_insn (rtx);
1683 static void spill_hard_reg (unsigned int, int);
1684 static int finish_spills (int);
1685 static void scan_paradoxical_subregs (rtx);
1686@@ -698,6 +702,9 @@
1687
1688 /* Global variables used by reload and its subroutines. */
1689
1690+/* The current basic block while in calculate_elim_costs_all_insns. */
1691+static basic_block elim_bb;
1692+
1693 /* Set during calculate_needs if an insn needs register elimination. */
1694 static int something_needs_elimination;
1695 /* Set during calculate_needs if an insn needs an operand changed. */
1696@@ -776,22 +783,6 @@
1697 if (! call_used_regs[i] && ! fixed_regs[i] && ! LOCAL_REGNO (i))
1698 df_set_regs_ever_live (i, true);
1699
1700- /* Find all the pseudo registers that didn't get hard regs
1701- but do have known equivalent constants or memory slots.
1702- These include parameters (known equivalent to parameter slots)
1703- and cse'd or loop-moved constant memory addresses.
1704-
1705- Record constant equivalents in reg_equiv_constant
1706- so they will be substituted by find_reloads.
1707- Record memory equivalents in reg_mem_equiv so they can
1708- be substituted eventually by altering the REG-rtx's. */
1709-
1710- reg_equiv_constant = XCNEWVEC (rtx, max_regno);
1711- reg_equiv_invariant = XCNEWVEC (rtx, max_regno);
1712- reg_equiv_mem = XCNEWVEC (rtx, max_regno);
1713- reg_equiv_alt_mem_list = XCNEWVEC (rtx, max_regno);
1714- reg_equiv_address = XCNEWVEC (rtx, max_regno);
1715- reg_max_ref_width = XCNEWVEC (unsigned int, max_regno);
1716 reg_old_renumber = XCNEWVEC (short, max_regno);
1717 memcpy (reg_old_renumber, reg_renumber, max_regno * sizeof (short));
1718 pseudo_forbidden_regs = XNEWVEC (HARD_REG_SET, max_regno);
1719@@ -799,115 +790,9 @@
1720
1721 CLEAR_HARD_REG_SET (bad_spill_regs_global);
1722
1723- /* Look for REG_EQUIV notes; record what each pseudo is equivalent
1724- to. Also find all paradoxical subregs and find largest such for
1725- each pseudo. */
1726-
1727- num_eliminable_invariants = 0;
1728- for (insn = first; insn; insn = NEXT_INSN (insn))
1729- {
1730- rtx set = single_set (insn);
1731-
1732- /* We may introduce USEs that we want to remove at the end, so
1733- we'll mark them with QImode. Make sure there are no
1734- previously-marked insns left by say regmove. */
1735- if (INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE
1736- && GET_MODE (insn) != VOIDmode)
1737- PUT_MODE (insn, VOIDmode);
1738-
1739- if (NONDEBUG_INSN_P (insn))
1740- scan_paradoxical_subregs (PATTERN (insn));
1741-
1742- if (set != 0 && REG_P (SET_DEST (set)))
1743- {
1744- rtx note = find_reg_note (insn, REG_EQUIV, NULL_RTX);
1745- rtx x;
1746-
1747- if (! note)
1748- continue;
1749-
1750- i = REGNO (SET_DEST (set));
1751- x = XEXP (note, 0);
1752-
1753- if (i <= LAST_VIRTUAL_REGISTER)
1754- continue;
1755-
1756- if (! function_invariant_p (x)
1757- || ! flag_pic
1758- /* A function invariant is often CONSTANT_P but may
1759- include a register. We promise to only pass
1760- CONSTANT_P objects to LEGITIMATE_PIC_OPERAND_P. */
1761- || (CONSTANT_P (x)
1762- && LEGITIMATE_PIC_OPERAND_P (x)))
1763- {
1764- /* It can happen that a REG_EQUIV note contains a MEM
1765- that is not a legitimate memory operand. As later
1766- stages of reload assume that all addresses found
1767- in the reg_equiv_* arrays were originally legitimate,
1768- we ignore such REG_EQUIV notes. */
1769- if (memory_operand (x, VOIDmode))
1770- {
1771- /* Always unshare the equivalence, so we can
1772- substitute into this insn without touching the
1773- equivalence. */
1774- reg_equiv_memory_loc[i] = copy_rtx (x);
1775- }
1776- else if (function_invariant_p (x))
1777- {
1778- if (GET_CODE (x) == PLUS)
1779- {
1780- /* This is PLUS of frame pointer and a constant,
1781- and might be shared. Unshare it. */
1782- reg_equiv_invariant[i] = copy_rtx (x);
1783- num_eliminable_invariants++;
1784- }
1785- else if (x == frame_pointer_rtx || x == arg_pointer_rtx)
1786- {
1787- reg_equiv_invariant[i] = x;
1788- num_eliminable_invariants++;
1789- }
1790- else if (LEGITIMATE_CONSTANT_P (x))
1791- reg_equiv_constant[i] = x;
1792- else
1793- {
1794- reg_equiv_memory_loc[i]
1795- = force_const_mem (GET_MODE (SET_DEST (set)), x);
1796- if (! reg_equiv_memory_loc[i])
1797- reg_equiv_init[i] = NULL_RTX;
1798- }
1799- }
1800- else
1801- {
1802- reg_equiv_init[i] = NULL_RTX;
1803- continue;
1804- }
1805- }
1806- else
1807- reg_equiv_init[i] = NULL_RTX;
1808- }
1809- }
1810-
1811- if (dump_file)
1812- for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
1813- if (reg_equiv_init[i])
1814- {
1815- fprintf (dump_file, "init_insns for %u: ", i);
1816- print_inline_rtx (dump_file, reg_equiv_init[i], 20);
1817- fprintf (dump_file, "\n");
1818- }
1819-
1820+ init_eliminable_invariants (first, true);
1821 init_elim_table ();
1822
1823- first_label_num = get_first_label_num ();
1824- num_labels = max_label_num () - first_label_num;
1825-
1826- /* Allocate the tables used to store offset information at labels. */
1827- /* We used to use alloca here, but the size of what it would try to
1828- allocate would occasionally cause it to exceed the stack limit and
1829- cause a core dump. */
1830- offsets_known_at = XNEWVEC (char, num_labels);
1831- offsets_at = (HOST_WIDE_INT (*)[NUM_ELIMINABLE_REGS]) xmalloc (num_labels * NUM_ELIMINABLE_REGS * sizeof (HOST_WIDE_INT));
1832-
1833 /* Alter each pseudo-reg rtx to contain its hard reg number. Assign
1834 stack slots to the pseudos that lack hard regs or equivalents.
1835 Do not touch virtual registers. */
1836@@ -1411,31 +1296,11 @@
1837 }
1838 }
1839
1840+ free (temp_pseudo_reg_arr);
1841+
1842 /* Indicate that we no longer have known memory locations or constants. */
1843- if (reg_equiv_constant)
1844- free (reg_equiv_constant);
1845- if (reg_equiv_invariant)
1846- free (reg_equiv_invariant);
1847- reg_equiv_constant = 0;
1848- reg_equiv_invariant = 0;
1849- VEC_free (rtx, gc, reg_equiv_memory_loc_vec);
1850- reg_equiv_memory_loc = 0;
1851-
1852- free (temp_pseudo_reg_arr);
1853-
1854- if (offsets_known_at)
1855- free (offsets_known_at);
1856- if (offsets_at)
1857- free (offsets_at);
1858-
1859- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
1860- if (reg_equiv_alt_mem_list[i])
1861- free_EXPR_LIST_list (&reg_equiv_alt_mem_list[i]);
1862- free (reg_equiv_alt_mem_list);
1863-
1864- free (reg_equiv_mem);
1865+ free_reg_equiv ();
1866 reg_equiv_init = 0;
1867- free (reg_equiv_address);
1868 free (reg_max_ref_width);
1869 free (reg_old_renumber);
1870 free (pseudo_previous_regs);
1871@@ -1728,6 +1593,100 @@
1872 *pprev_reload = 0;
1873 }
1874
1875+/* This function is called from the register allocator to set up estimates
1876+ for the cost of eliminating pseudos which have REG_EQUIV equivalences to
1877+ an invariant. The structure is similar to calculate_needs_all_insns. */
1878+
1879+void
1880+calculate_elim_costs_all_insns (void)
1881+{
1882+ int *reg_equiv_init_cost;
1883+ basic_block bb;
1884+ int i;
1885+
1886+ reg_equiv_init_cost = XCNEWVEC (int, max_regno);
1887+ init_elim_table ();
1888+ init_eliminable_invariants (get_insns (), false);
1889+
1890+ set_initial_elim_offsets ();
1891+ set_initial_label_offsets ();
1892+
1893+ FOR_EACH_BB (bb)
1894+ {
1895+ rtx insn;
1896+ elim_bb = bb;
1897+
1898+ FOR_BB_INSNS (bb, insn)
1899+ {
1900+ /* If this is a label, a JUMP_INSN, or has REG_NOTES (which might
1901+ include REG_LABEL_OPERAND and REG_LABEL_TARGET), we need to see
1902+ what effects this has on the known offsets at labels. */
1903+
1904+ if (LABEL_P (insn) || JUMP_P (insn)
1905+ || (INSN_P (insn) && REG_NOTES (insn) != 0))
1906+ set_label_offsets (insn, insn, 0);
1907+
1908+ if (INSN_P (insn))
1909+ {
1910+ rtx set = single_set (insn);
1911+
1912+ /* Skip insns that only set an equivalence. */
1913+ if (set && REG_P (SET_DEST (set))
1914+ && reg_renumber[REGNO (SET_DEST (set))] < 0
1915+ && (reg_equiv_constant[REGNO (SET_DEST (set))]
1916+ || (reg_equiv_invariant[REGNO (SET_DEST (set))])))
1917+ {
1918+ unsigned regno = REGNO (SET_DEST (set));
1919+ rtx init = reg_equiv_init[regno];
1920+ if (init)
1921+ {
1922+ rtx t = eliminate_regs_1 (SET_SRC (set), VOIDmode, insn,
1923+ false, true);
1924+ int cost = rtx_cost (t, SET,
1925+ optimize_bb_for_speed_p (bb));
1926+ int freq = REG_FREQ_FROM_BB (bb);
1927+
1928+ reg_equiv_init_cost[regno] = cost * freq;
1929+ continue;
1930+ }
1931+ }
1932+ /* If needed, eliminate any eliminable registers. */
1933+ if (num_eliminable || num_eliminable_invariants)
1934+ elimination_costs_in_insn (insn);
1935+
1936+ if (num_eliminable)
1937+ update_eliminable_offsets ();
1938+ }
1939+ }
1940+ }
1941+ for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
1942+ {
1943+ if (reg_equiv_invariant[i])
1944+ {
1945+ if (reg_equiv_init[i])
1946+ {
1947+ int cost = reg_equiv_init_cost[i];
1948+ if (dump_file)
1949+ fprintf (dump_file,
1950+ "Reg %d has equivalence, initial gains %d\n", i, cost);
1951+ if (cost != 0)
1952+ ira_adjust_equiv_reg_cost (i, cost);
1953+ }
1954+ else
1955+ {
1956+ if (dump_file)
1957+ fprintf (dump_file,
1958+ "Reg %d had equivalence, but can't be eliminated\n",
1959+ i);
1960+ ira_adjust_equiv_reg_cost (i, 0);
1961+ }
1962+ }
1963+ }
1964+
1965+ free_reg_equiv ();
1966+ free (reg_equiv_init_cost);
1967+}
1968+
1969 /* Comparison function for qsort to decide which of two reloads
1970 should be handled first. *P1 and *P2 are the reload numbers. */
1971
1972@@ -2514,6 +2473,36 @@
1973 }
1974 }
1975
1976+/* Called through for_each_rtx, this function examines every reg that occurs
1977+ in PX and adjusts the costs for its elimination which are gathered by IRA.
1978+ DATA is the insn in which PX occurs. We do not recurse into MEM
1979+ expressions. */
1980+
1981+static int
1982+note_reg_elim_costly (rtx *px, void *data)
1983+{
1984+ rtx insn = (rtx)data;
1985+ rtx x = *px;
1986+
1987+ if (MEM_P (x))
1988+ return -1;
1989+
1990+ if (REG_P (x)
1991+ && REGNO (x) >= FIRST_PSEUDO_REGISTER
1992+ && reg_equiv_init[REGNO (x)]
1993+ && reg_equiv_invariant[REGNO (x)])
1994+ {
1995+ rtx t = reg_equiv_invariant[REGNO (x)];
1996+ rtx new_rtx = eliminate_regs_1 (t, Pmode, insn, true, true);
1997+ int cost = rtx_cost (new_rtx, SET, optimize_bb_for_speed_p (elim_bb));
1998+ int freq = REG_FREQ_FROM_BB (elim_bb);
1999+
2000+ if (cost != 0)
2001+ ira_adjust_equiv_reg_cost (REGNO (x), -cost * freq);
2002+ }
2003+ return 0;
2004+}
2005+
2006 /* Scan X and replace any eliminable registers (such as fp) with a
2007 replacement (such as sp), plus an offset.
2008
2009@@ -2533,6 +2522,9 @@
2010 This means, do not set ref_outside_mem even if the reference
2011 is outside of MEMs.
2012
2013+ If FOR_COSTS is true, we are being called before reload in order to
2014+ estimate the costs of keeping registers with an equivalence unallocated.
2015+
2016 REG_EQUIV_MEM and REG_EQUIV_ADDRESS contain address that have had
2017 replacements done assuming all offsets are at their initial values. If
2018 they are not, or if REG_EQUIV_ADDRESS is nonzero for a pseudo we
2019@@ -2541,7 +2533,7 @@
2020
2021 static rtx
2022 eliminate_regs_1 (rtx x, enum machine_mode mem_mode, rtx insn,
2023- bool may_use_invariant)
2024+ bool may_use_invariant, bool for_costs)
2025 {
2026 enum rtx_code code = GET_CODE (x);
2027 struct elim_table *ep;
2028@@ -2589,11 +2581,12 @@
2029 {
2030 if (may_use_invariant || (insn && DEBUG_INSN_P (insn)))
2031 return eliminate_regs_1 (copy_rtx (reg_equiv_invariant[regno]),
2032- mem_mode, insn, true);
2033+ mem_mode, insn, true, for_costs);
2034 /* There exists at least one use of REGNO that cannot be
2035 eliminated. Prevent the defining insn from being deleted. */
2036 reg_equiv_init[regno] = NULL_RTX;
2037- alter_reg (regno, -1, true);
2038+ if (!for_costs)
2039+ alter_reg (regno, -1, true);
2040 }
2041 return x;
2042
2043@@ -2654,8 +2647,10 @@
2044 operand of a load-address insn. */
2045
2046 {
2047- rtx new0 = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, true);
2048- rtx new1 = eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true);
2049+ rtx new0 = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, true,
2050+ for_costs);
2051+ rtx new1 = eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true,
2052+ for_costs);
2053
2054 if (reg_renumber && (new0 != XEXP (x, 0) || new1 != XEXP (x, 1)))
2055 {
2056@@ -2729,9 +2724,11 @@
2057 case GE: case GT: case GEU: case GTU:
2058 case LE: case LT: case LEU: case LTU:
2059 {
2060- rtx new0 = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, false);
2061+ rtx new0 = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, false,
2062+ for_costs);
2063 rtx new1 = XEXP (x, 1)
2064- ? eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, false) : 0;
2065+ ? eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, false,
2066+ for_costs) : 0;
2067
2068 if (new0 != XEXP (x, 0) || new1 != XEXP (x, 1))
2069 return gen_rtx_fmt_ee (code, GET_MODE (x), new0, new1);
2070@@ -2742,7 +2739,8 @@
2071 /* If we have something in XEXP (x, 0), the usual case, eliminate it. */
2072 if (XEXP (x, 0))
2073 {
2074- new_rtx = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, true);
2075+ new_rtx = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, true,
2076+ for_costs);
2077 if (new_rtx != XEXP (x, 0))
2078 {
2079 /* If this is a REG_DEAD note, it is not valid anymore.
2080@@ -2750,7 +2748,8 @@
2081 REG_DEAD note for the stack or frame pointer. */
2082 if (REG_NOTE_KIND (x) == REG_DEAD)
2083 return (XEXP (x, 1)
2084- ? eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true)
2085+ ? eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true,
2086+ for_costs)
2087 : NULL_RTX);
2088
2089 x = alloc_reg_note (REG_NOTE_KIND (x), new_rtx, XEXP (x, 1));
2090@@ -2765,7 +2764,8 @@
2091 strictly needed, but it simplifies the code. */
2092 if (XEXP (x, 1))
2093 {
2094- new_rtx = eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true);
2095+ new_rtx = eliminate_regs_1 (XEXP (x, 1), mem_mode, insn, true,
2096+ for_costs);
2097 if (new_rtx != XEXP (x, 1))
2098 return
2099 gen_rtx_fmt_ee (GET_CODE (x), GET_MODE (x), XEXP (x, 0), new_rtx);
2100@@ -2791,7 +2791,7 @@
2101 && XEXP (XEXP (x, 1), 0) == XEXP (x, 0))
2102 {
2103 rtx new_rtx = eliminate_regs_1 (XEXP (XEXP (x, 1), 1), mem_mode,
2104- insn, true);
2105+ insn, true, for_costs);
2106
2107 if (new_rtx != XEXP (XEXP (x, 1), 1))
2108 return gen_rtx_fmt_ee (code, GET_MODE (x), XEXP (x, 0),
2109@@ -2814,7 +2814,8 @@
2110 case POPCOUNT:
2111 case PARITY:
2112 case BSWAP:
2113- new_rtx = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, false);
2114+ new_rtx = eliminate_regs_1 (XEXP (x, 0), mem_mode, insn, false,
2115+ for_costs);
2116 if (new_rtx != XEXP (x, 0))
2117 return gen_rtx_fmt_e (code, GET_MODE (x), new_rtx);
2118 return x;
2119@@ -2835,7 +2836,8 @@
2120 new_rtx = SUBREG_REG (x);
2121 }
2122 else
2123- new_rtx = eliminate_regs_1 (SUBREG_REG (x), mem_mode, insn, false);
2124+ new_rtx = eliminate_regs_1 (SUBREG_REG (x), mem_mode, insn, false,
2125+ for_costs);
2126
2127 if (new_rtx != SUBREG_REG (x))
2128 {
2129@@ -2869,14 +2871,20 @@
2130 /* Our only special processing is to pass the mode of the MEM to our
2131 recursive call and copy the flags. While we are here, handle this
2132 case more efficiently. */
2133- return
2134- replace_equiv_address_nv (x,
2135- eliminate_regs_1 (XEXP (x, 0), GET_MODE (x),
2136- insn, true));
2137+
2138+ new_rtx = eliminate_regs_1 (XEXP (x, 0), GET_MODE (x), insn, true,
2139+ for_costs);
2140+ if (for_costs
2141+ && memory_address_p (GET_MODE (x), XEXP (x, 0))
2142+ && !memory_address_p (GET_MODE (x), new_rtx))
2143+ for_each_rtx (&XEXP (x, 0), note_reg_elim_costly, insn);
2144+
2145+ return replace_equiv_address_nv (x, new_rtx);
2146
2147 case USE:
2148 /* Handle insn_list USE that a call to a pure function may generate. */
2149- new_rtx = eliminate_regs_1 (XEXP (x, 0), VOIDmode, insn, false);
2150+ new_rtx = eliminate_regs_1 (XEXP (x, 0), VOIDmode, insn, false,
2151+ for_costs);
2152 if (new_rtx != XEXP (x, 0))
2153 return gen_rtx_USE (GET_MODE (x), new_rtx);
2154 return x;
2155@@ -2900,7 +2908,8 @@
2156 {
2157 if (*fmt == 'e')
2158 {
2159- new_rtx = eliminate_regs_1 (XEXP (x, i), mem_mode, insn, false);
2160+ new_rtx = eliminate_regs_1 (XEXP (x, i), mem_mode, insn, false,
2161+ for_costs);
2162 if (new_rtx != XEXP (x, i) && ! copied)
2163 {
2164 x = shallow_copy_rtx (x);
2165@@ -2913,7 +2922,8 @@
2166 int copied_vec = 0;
2167 for (j = 0; j < XVECLEN (x, i); j++)
2168 {
2169- new_rtx = eliminate_regs_1 (XVECEXP (x, i, j), mem_mode, insn, false);
2170+ new_rtx = eliminate_regs_1 (XVECEXP (x, i, j), mem_mode, insn, false,
2171+ for_costs);
2172 if (new_rtx != XVECEXP (x, i, j) && ! copied_vec)
2173 {
2174 rtvec new_v = gen_rtvec_v (XVECLEN (x, i),
2175@@ -2937,7 +2947,7 @@
2176 rtx
2177 eliminate_regs (rtx x, enum machine_mode mem_mode, rtx insn)
2178 {
2179- return eliminate_regs_1 (x, mem_mode, insn, false);
2180+ return eliminate_regs_1 (x, mem_mode, insn, false, false);
2181 }
2182
2183 /* Scan rtx X for modifications of elimination target registers. Update
2184@@ -3455,7 +3465,8 @@
2185 /* Companion to the above plus substitution, we can allow
2186 invariants as the source of a plain move. */
2187 is_set_src = false;
2188- if (old_set && recog_data.operand_loc[i] == &SET_SRC (old_set))
2189+ if (old_set
2190+ && recog_data.operand_loc[i] == &SET_SRC (old_set))
2191 is_set_src = true;
2192 in_plus = false;
2193 if (plus_src
2194@@ -3466,7 +3477,7 @@
2195 substed_operand[i]
2196 = eliminate_regs_1 (recog_data.operand[i], VOIDmode,
2197 replace ? insn : NULL_RTX,
2198- is_set_src || in_plus);
2199+ is_set_src || in_plus, false);
2200 if (substed_operand[i] != orig_operand[i])
2201 val = 1;
2202 /* Terminate the search in check_eliminable_occurrences at
2203@@ -3594,11 +3605,167 @@
2204 the pre-passes. */
2205 if (val && REG_NOTES (insn) != 0)
2206 REG_NOTES (insn)
2207- = eliminate_regs_1 (REG_NOTES (insn), VOIDmode, REG_NOTES (insn), true);
2208+ = eliminate_regs_1 (REG_NOTES (insn), VOIDmode, REG_NOTES (insn), true,
2209+ false);
2210
2211 return val;
2212 }
2213
2214+/* Like eliminate_regs_in_insn, but only estimate costs for the use of the
2215+ register allocator. INSN is the instruction we need to examine, we perform
2216+ eliminations in its operands and record cases where eliminating a reg with
2217+ an invariant equivalence would add extra cost. */
2218+
2219+static void
2220+elimination_costs_in_insn (rtx insn)
2221+{
2222+ int icode = recog_memoized (insn);
2223+ rtx old_body = PATTERN (insn);
2224+ int insn_is_asm = asm_noperands (old_body) >= 0;
2225+ rtx old_set = single_set (insn);
2226+ int i;
2227+ rtx orig_operand[MAX_RECOG_OPERANDS];
2228+ rtx orig_dup[MAX_RECOG_OPERANDS];
2229+ struct elim_table *ep;
2230+ rtx plus_src, plus_cst_src;
2231+ bool sets_reg_p;
2232+
2233+ if (! insn_is_asm && icode < 0)
2234+ {
2235+ gcc_assert (GET_CODE (PATTERN (insn)) == USE
2236+ || GET_CODE (PATTERN (insn)) == CLOBBER
2237+ || GET_CODE (PATTERN (insn)) == ADDR_VEC
2238+ || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC
2239+ || GET_CODE (PATTERN (insn)) == ASM_INPUT
2240+ || DEBUG_INSN_P (insn));
2241+ return;
2242+ }
2243+
2244+ if (old_set != 0 && REG_P (SET_DEST (old_set))
2245+ && REGNO (SET_DEST (old_set)) < FIRST_PSEUDO_REGISTER)
2246+ {
2247+ /* Check for setting an eliminable register. */
2248+ for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
2249+ if (ep->from_rtx == SET_DEST (old_set) && ep->can_eliminate)
2250+ return;
2251+ }
2252+
2253+ /* We allow one special case which happens to work on all machines we
2254+ currently support: a single set with the source or a REG_EQUAL
2255+ note being a PLUS of an eliminable register and a constant. */
2256+ plus_src = plus_cst_src = 0;
2257+ sets_reg_p = false;
2258+ if (old_set && REG_P (SET_DEST (old_set)))
2259+ {
2260+ sets_reg_p = true;
2261+ if (GET_CODE (SET_SRC (old_set)) == PLUS)
2262+ plus_src = SET_SRC (old_set);
2263+ /* First see if the source is of the form (plus (...) CST). */
2264+ if (plus_src
2265+ && CONST_INT_P (XEXP (plus_src, 1)))
2266+ plus_cst_src = plus_src;
2267+ else if (REG_P (SET_SRC (old_set))
2268+ || plus_src)
2269+ {
2270+ /* Otherwise, see if we have a REG_EQUAL note of the form
2271+ (plus (...) CST). */
2272+ rtx links;
2273+ for (links = REG_NOTES (insn); links; links = XEXP (links, 1))
2274+ {
2275+ if ((REG_NOTE_KIND (links) == REG_EQUAL
2276+ || REG_NOTE_KIND (links) == REG_EQUIV)
2277+ && GET_CODE (XEXP (links, 0)) == PLUS
2278+ && CONST_INT_P (XEXP (XEXP (links, 0), 1)))
2279+ {
2280+ plus_cst_src = XEXP (links, 0);
2281+ break;
2282+ }
2283+ }
2284+ }
2285+ }
2286+
2287+ /* Determine the effects of this insn on elimination offsets. */
2288+ elimination_effects (old_body, VOIDmode);
2289+
2290+ /* Eliminate all eliminable registers occurring in operands that
2291+ can be handled by reload. */
2292+ extract_insn (insn);
2293+ for (i = 0; i < recog_data.n_dups; i++)
2294+ orig_dup[i] = *recog_data.dup_loc[i];
2295+
2296+ for (i = 0; i < recog_data.n_operands; i++)
2297+ {
2298+ orig_operand[i] = recog_data.operand[i];
2299+
2300+ /* For an asm statement, every operand is eliminable. */
2301+ if (insn_is_asm || insn_data[icode].operand[i].eliminable)
2302+ {
2303+ bool is_set_src, in_plus;
2304+
2305+ /* Check for setting a register that we know about. */
2306+ if (recog_data.operand_type[i] != OP_IN
2307+ && REG_P (orig_operand[i]))
2308+ {
2309+ /* If we are assigning to a register that can be eliminated, it
2310+ must be as part of a PARALLEL, since the code above handles
2311+ single SETs. We must indicate that we can no longer
2312+ eliminate this reg. */
2313+ for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS];
2314+ ep++)
2315+ if (ep->from_rtx == orig_operand[i])
2316+ ep->can_eliminate = 0;
2317+ }
2318+
2319+ /* Companion to the above plus substitution, we can allow
2320+ invariants as the source of a plain move. */
2321+ is_set_src = false;
2322+ if (old_set && recog_data.operand_loc[i] == &SET_SRC (old_set))
2323+ is_set_src = true;
2324+ if (is_set_src && !sets_reg_p)
2325+ note_reg_elim_costly (&SET_SRC (old_set), insn);
2326+ in_plus = false;
2327+ if (plus_src && sets_reg_p
2328+ && (recog_data.operand_loc[i] == &XEXP (plus_src, 0)
2329+ || recog_data.operand_loc[i] == &XEXP (plus_src, 1)))
2330+ in_plus = true;
2331+
2332+ eliminate_regs_1 (recog_data.operand[i], VOIDmode,
2333+ NULL_RTX,
2334+ is_set_src || in_plus, true);
2335+ /* Terminate the search in check_eliminable_occurrences at
2336+ this point. */
2337+ *recog_data.operand_loc[i] = 0;
2338+ }
2339+ }
2340+
2341+ for (i = 0; i < recog_data.n_dups; i++)
2342+ *recog_data.dup_loc[i]
2343+ = *recog_data.operand_loc[(int) recog_data.dup_num[i]];
2344+
2345+ /* If any eliminable remain, they aren't eliminable anymore. */
2346+ check_eliminable_occurrences (old_body);
2347+
2348+ /* Restore the old body. */
2349+ for (i = 0; i < recog_data.n_operands; i++)
2350+ *recog_data.operand_loc[i] = orig_operand[i];
2351+ for (i = 0; i < recog_data.n_dups; i++)
2352+ *recog_data.dup_loc[i] = orig_dup[i];
2353+
2354+ /* Update all elimination pairs to reflect the status after the current
2355+ insn. The changes we make were determined by the earlier call to
2356+ elimination_effects. */
2357+
2358+ for (ep = reg_eliminate; ep < &reg_eliminate[NUM_ELIMINABLE_REGS]; ep++)
2359+ {
2360+ if (ep->previous_offset != ep->offset && ep->ref_outside_mem)
2361+ ep->can_eliminate = 0;
2362+
2363+ ep->ref_outside_mem = 0;
2364+ }
2365+
2366+ return;
2367+}
2368+
2369 /* Loop through all elimination pairs.
2370 Recalculate the number not at initial offset.
2371
2372@@ -3908,6 +4075,168 @@
2373 ep->to_rtx = gen_rtx_REG (Pmode, ep->to);
2374 }
2375 }
2376+
2377+/* Find all the pseudo registers that didn't get hard regs
2378+ but do have known equivalent constants or memory slots.
2379+ These include parameters (known equivalent to parameter slots)
2380+ and cse'd or loop-moved constant memory addresses.
2381+
2382+ Record constant equivalents in reg_equiv_constant
2383+ so they will be substituted by find_reloads.
2384+ Record memory equivalents in reg_mem_equiv so they can
2385+ be substituted eventually by altering the REG-rtx's. */
2386+
2387+static void
2388+init_eliminable_invariants (rtx first, bool do_subregs)
2389+{
2390+ int i;
2391+ rtx insn;
2392+
2393+ reg_equiv_constant = XCNEWVEC (rtx, max_regno);
2394+ reg_equiv_invariant = XCNEWVEC (rtx, max_regno);
2395+ reg_equiv_mem = XCNEWVEC (rtx, max_regno);
2396+ reg_equiv_alt_mem_list = XCNEWVEC (rtx, max_regno);
2397+ reg_equiv_address = XCNEWVEC (rtx, max_regno);
2398+ if (do_subregs)
2399+ reg_max_ref_width = XCNEWVEC (unsigned int, max_regno);
2400+ else
2401+ reg_max_ref_width = NULL;
2402+
2403+ num_eliminable_invariants = 0;
2404+
2405+ first_label_num = get_first_label_num ();
2406+ num_labels = max_label_num () - first_label_num;
2407+
2408+ /* Allocate the tables used to store offset information at labels. */
2409+ offsets_known_at = XNEWVEC (char, num_labels);
2410+ offsets_at = (HOST_WIDE_INT (*)[NUM_ELIMINABLE_REGS]) xmalloc (num_labels * NUM_ELIMINABLE_REGS * sizeof (HOST_WIDE_INT));
2411+
2412+/* Look for REG_EQUIV notes; record what each pseudo is equivalent
2413+ to. If DO_SUBREGS is true, also find all paradoxical subregs and
2414+ find largest such for each pseudo. FIRST is the head of the insn
2415+ list. */
2416+
2417+ for (insn = first; insn; insn = NEXT_INSN (insn))
2418+ {
2419+ rtx set = single_set (insn);
2420+
2421+ /* We may introduce USEs that we want to remove at the end, so
2422+ we'll mark them with QImode. Make sure there are no
2423+ previously-marked insns left by say regmove. */
2424+ if (INSN_P (insn) && GET_CODE (PATTERN (insn)) == USE
2425+ && GET_MODE (insn) != VOIDmode)
2426+ PUT_MODE (insn, VOIDmode);
2427+
2428+ if (do_subregs && NONDEBUG_INSN_P (insn))
2429+ scan_paradoxical_subregs (PATTERN (insn));
2430+
2431+ if (set != 0 && REG_P (SET_DEST (set)))
2432+ {
2433+ rtx note = find_reg_note (insn, REG_EQUIV, NULL_RTX);
2434+ rtx x;
2435+
2436+ if (! note)
2437+ continue;
2438+
2439+ i = REGNO (SET_DEST (set));
2440+ x = XEXP (note, 0);
2441+
2442+ if (i <= LAST_VIRTUAL_REGISTER)
2443+ continue;
2444+
2445+ /* If flag_pic and we have constant, verify it's legitimate. */
2446+ if (!CONSTANT_P (x)
2447+ || !flag_pic || LEGITIMATE_PIC_OPERAND_P (x))
2448+ {
2449+ /* It can happen that a REG_EQUIV note contains a MEM
2450+ that is not a legitimate memory operand. As later
2451+ stages of reload assume that all addresses found
2452+ in the reg_equiv_* arrays were originally legitimate,
2453+ we ignore such REG_EQUIV notes. */
2454+ if (memory_operand (x, VOIDmode))
2455+ {
2456+ /* Always unshare the equivalence, so we can
2457+ substitute into this insn without touching the
2458+ equivalence. */
2459+ reg_equiv_memory_loc[i] = copy_rtx (x);
2460+ }
2461+ else if (function_invariant_p (x))
2462+ {
2463+ if (GET_CODE (x) == PLUS)
2464+ {
2465+ /* This is PLUS of frame pointer and a constant,
2466+ and might be shared. Unshare it. */
2467+ reg_equiv_invariant[i] = copy_rtx (x);
2468+ num_eliminable_invariants++;
2469+ }
2470+ else if (x == frame_pointer_rtx || x == arg_pointer_rtx)
2471+ {
2472+ reg_equiv_invariant[i] = x;
2473+ num_eliminable_invariants++;
2474+ }
2475+ else if (LEGITIMATE_CONSTANT_P (x))
2476+ reg_equiv_constant[i] = x;
2477+ else
2478+ {
2479+ reg_equiv_memory_loc[i]
2480+ = force_const_mem (GET_MODE (SET_DEST (set)), x);
2481+ if (! reg_equiv_memory_loc[i])
2482+ reg_equiv_init[i] = NULL_RTX;
2483+ }
2484+ }
2485+ else
2486+ {
2487+ reg_equiv_init[i] = NULL_RTX;
2488+ continue;
2489+ }
2490+ }
2491+ else
2492+ reg_equiv_init[i] = NULL_RTX;
2493+ }
2494+ }
2495+
2496+ if (dump_file)
2497+ for (i = FIRST_PSEUDO_REGISTER; i < max_regno; i++)
2498+ if (reg_equiv_init[i])
2499+ {
2500+ fprintf (dump_file, "init_insns for %u: ", i);
2501+ print_inline_rtx (dump_file, reg_equiv_init[i], 20);
2502+ fprintf (dump_file, "\n");
2503+ }
2504+}
2505+
2506+/* Indicate that we no longer have known memory locations or constants.
2507+ Free all data involved in tracking these. */
2508+
2509+static void
2510+free_reg_equiv (void)
2511+{
2512+ int i;
2513+
2514+ if (reg_equiv_constant)
2515+ free (reg_equiv_constant);
2516+ if (reg_equiv_invariant)
2517+ free (reg_equiv_invariant);
2518+ reg_equiv_constant = 0;
2519+ reg_equiv_invariant = 0;
2520+ VEC_free (rtx, gc, reg_equiv_memory_loc_vec);
2521+ reg_equiv_memory_loc = 0;
2522+
2523+ if (offsets_known_at)
2524+ free (offsets_known_at);
2525+ if (offsets_at)
2526+ free (offsets_at);
2527+ offsets_at = 0;
2528+ offsets_known_at = 0;
2529+
2530+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
2531+ if (reg_equiv_alt_mem_list[i])
2532+ free_EXPR_LIST_list (&reg_equiv_alt_mem_list[i]);
2533+ free (reg_equiv_alt_mem_list);
2534+
2535+ free (reg_equiv_mem);
2536+ free (reg_equiv_address);
2537+}
2538
2539 /* Kick all pseudos out of hard register REGNO.
2540
2541@@ -5664,7 +5993,7 @@
2542 return 1;
2543 if (GET_CODE (x) == PLUS
2544 && (XEXP (x, 0) == frame_pointer_rtx || XEXP (x, 0) == arg_pointer_rtx)
2545- && CONSTANT_P (XEXP (x, 1)))
2546+ && GET_CODE (XEXP (x, 1)) == CONST_INT)
2547 return 1;
2548 return 0;
2549 }
2550
2551=== modified file 'gcc/system.h'
2552--- old/gcc/system.h 2009-12-13 23:00:53 +0000
2553+++ new/gcc/system.h 2010-09-01 13:29:58 +0000
2554@@ -761,7 +761,8 @@
2555 TARGET_ASM_EXCEPTION_SECTION TARGET_ASM_EH_FRAME_SECTION \
2556 SMALL_ARG_MAX ASM_OUTPUT_SHARED_BSS ASM_OUTPUT_SHARED_COMMON \
2557 ASM_OUTPUT_SHARED_LOCAL ASM_MAKE_LABEL_LINKONCE \
2558- STACK_CHECK_PROBE_INTERVAL STACK_CHECK_PROBE_LOAD
2559+ STACK_CHECK_PROBE_INTERVAL STACK_CHECK_PROBE_LOAD \
2560+ ORDER_REGS_FOR_LOCAL_ALLOC
2561
2562 /* Hooks that are no longer used. */
2563 #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \
2564
2565=== added file 'gcc/testsuite/c-c++-common/uninit-17.c'
2566--- old/gcc/testsuite/c-c++-common/uninit-17.c 1970-01-01 00:00:00 +0000
2567+++ new/gcc/testsuite/c-c++-common/uninit-17.c 2010-09-01 13:29:58 +0000
2568@@ -0,0 +1,25 @@
2569+/* { dg-do compile } */
2570+/* { dg-options "-O2 -Wuninitialized" } */
2571+
2572+inline int foo(int x)
2573+{
2574+ return x;
2575+}
2576+static void bar(int a, int *ptr)
2577+{
2578+ do
2579+ {
2580+ int b; /* { dg-warning "is used uninitialized" } */
2581+ if (b < 40) {
2582+ ptr[0] = b;
2583+ }
2584+ b += 1;
2585+ ptr++;
2586+ }
2587+ while (--a != 0);
2588+}
2589+void foobar(int a, int *ptr)
2590+{
2591+ bar(foo(a), ptr);
2592+}
2593+
2594
2595=== added file 'gcc/testsuite/gcc.target/arm/eliminate.c'
2596--- old/gcc/testsuite/gcc.target/arm/eliminate.c 1970-01-01 00:00:00 +0000
2597+++ new/gcc/testsuite/gcc.target/arm/eliminate.c 2010-09-01 13:29:58 +0000
2598@@ -0,0 +1,19 @@
2599+/* { dg-do compile } */
2600+/* { dg-options "-O2" } */
2601+
2602+struct X
2603+{
2604+ int c;
2605+};
2606+
2607+extern void bar(struct X *);
2608+
2609+void foo ()
2610+{
2611+ struct X x;
2612+ bar (&x);
2613+ bar (&x);
2614+ bar (&x);
2615+}
2616+
2617+/* { dg-final { scan-assembler-times "r0,\[\\t \]*sp" 3 } } */
2618
2619=== added file 'gcc/testsuite/gcc.target/arm/pr40900.c'
2620--- old/gcc/testsuite/gcc.target/arm/pr40900.c 1970-01-01 00:00:00 +0000
2621+++ new/gcc/testsuite/gcc.target/arm/pr40900.c 2010-09-01 13:29:58 +0000
2622@@ -0,0 +1,12 @@
2623+/* { dg-do compile } */
2624+/* { dg-options "-O2 -fno-optimize-sibling-calls" } */
2625+
2626+extern short shortv2();
2627+short shortv1()
2628+{
2629+ return shortv2();
2630+}
2631+
2632+/* { dg-final { scan-assembler-not "lsl" } } */
2633+/* { dg-final { scan-assembler-not "asr" } } */
2634+/* { dg-final { scan-assembler-not "sxth" } } */
2635
2636=== added file 'gcc/testsuite/gcc.target/arm/pr42496.c'
2637--- old/gcc/testsuite/gcc.target/arm/pr42496.c 1970-01-01 00:00:00 +0000
2638+++ new/gcc/testsuite/gcc.target/arm/pr42496.c 2010-09-01 13:29:58 +0000
2639@@ -0,0 +1,16 @@
2640+/* { dg-options "-O2" } */
2641+
2642+void foo(int i)
2643+{
2644+ extern int j;
2645+
2646+ if (i) {
2647+ j = 10;
2648+ }
2649+ else {
2650+ j = 20;
2651+ }
2652+}
2653+
2654+/* { dg-final { scan-assembler-not "strne" } } */
2655+/* { dg-final { scan-assembler-not "streq" } } */
2656
2657=== added file 'gcc/testsuite/gcc.target/arm/wmul-1.c'
2658--- old/gcc/testsuite/gcc.target/arm/wmul-1.c 1970-01-01 00:00:00 +0000
2659+++ new/gcc/testsuite/gcc.target/arm/wmul-1.c 2010-09-01 13:29:58 +0000
2660@@ -0,0 +1,18 @@
2661+/* { dg-do compile } */
2662+/* { dg-options "-O2 -march=armv6t2 -fno-unroll-loops" } */
2663+
2664+int mac(const short *a, const short *b, int sqr, int *sum)
2665+{
2666+ int i;
2667+ int dotp = *sum;
2668+
2669+ for (i = 0; i < 150; i++) {
2670+ dotp += b[i] * a[i];
2671+ sqr += b[i] * b[i];
2672+ }
2673+
2674+ *sum = dotp;
2675+ return sqr;
2676+}
2677+
2678+/* { dg-final { scan-assembler-times "smulbb" 2 } } */
2679
2680=== added file 'gcc/testsuite/gcc.target/arm/wmul-2.c'
2681--- old/gcc/testsuite/gcc.target/arm/wmul-2.c 1970-01-01 00:00:00 +0000
2682+++ new/gcc/testsuite/gcc.target/arm/wmul-2.c 2010-09-01 13:29:58 +0000
2683@@ -0,0 +1,12 @@
2684+/* { dg-do compile } */
2685+/* { dg-options "-O2 -march=armv6t2 -fno-unroll-loops" } */
2686+
2687+void vec_mpy(int y[], const short x[], short scaler)
2688+{
2689+ int i;
2690+
2691+ for (i = 0; i < 150; i++)
2692+ y[i] += ((scaler * x[i]) >> 31);
2693+}
2694+
2695+/* { dg-final { scan-assembler-times "smulbb" 1 } } */
2696
2697=== added file 'gcc/testsuite/gcc.target/bfin/wmul-1.c'
2698--- old/gcc/testsuite/gcc.target/bfin/wmul-1.c 1970-01-01 00:00:00 +0000
2699+++ new/gcc/testsuite/gcc.target/bfin/wmul-1.c 2010-09-01 13:29:58 +0000
2700@@ -0,0 +1,18 @@
2701+/* { dg-do compile } */
2702+/* { dg-options "-O2" } */
2703+
2704+int mac(const short *a, const short *b, int sqr, int *sum)
2705+{
2706+ int i;
2707+ int dotp = *sum;
2708+
2709+ for (i = 0; i < 150; i++) {
2710+ dotp += b[i] * a[i];
2711+ sqr += b[i] * b[i];
2712+ }
2713+
2714+ *sum = dotp;
2715+ return sqr;
2716+}
2717+
2718+/* { dg-final { scan-assembler-times "\\(IS\\)" 2 } } */
2719
2720=== added file 'gcc/testsuite/gcc.target/bfin/wmul-2.c'
2721--- old/gcc/testsuite/gcc.target/bfin/wmul-2.c 1970-01-01 00:00:00 +0000
2722+++ new/gcc/testsuite/gcc.target/bfin/wmul-2.c 2010-09-01 13:29:58 +0000
2723@@ -0,0 +1,12 @@
2724+/* { dg-do compile } */
2725+/* { dg-options "-O2" } */
2726+
2727+void vec_mpy(int y[], const short x[], short scaler)
2728+{
2729+ int i;
2730+
2731+ for (i = 0; i < 150; i++)
2732+ y[i] += ((scaler * x[i]) >> 31);
2733+}
2734+
2735+/* { dg-final { scan-assembler-times "\\(IS\\)" 1 } } */
2736
2737=== added file 'gcc/testsuite/gcc.target/i386/pr41442.c'
2738--- old/gcc/testsuite/gcc.target/i386/pr41442.c 1970-01-01 00:00:00 +0000
2739+++ new/gcc/testsuite/gcc.target/i386/pr41442.c 2010-09-01 13:29:58 +0000
2740@@ -0,0 +1,18 @@
2741+/* { dg-do compile } */
2742+/* { dg-options "-O2" } */
2743+
2744+typedef struct LINK link;
2745+struct LINK
2746+{
2747+ link* next;
2748+};
2749+
2750+int haha(link* p1, link* p2)
2751+{
2752+ if ((p1->next && !p2->next) || p2->next)
2753+ return 0;
2754+
2755+ return 1;
2756+}
2757+
2758+/* { dg-final { scan-assembler-times "test|cmp" 2 } } */
2759
2760=== added file 'gcc/testsuite/gcc.target/i386/wmul-1.c'
2761--- old/gcc/testsuite/gcc.target/i386/wmul-1.c 1970-01-01 00:00:00 +0000
2762+++ new/gcc/testsuite/gcc.target/i386/wmul-1.c 2010-09-01 13:29:58 +0000
2763@@ -0,0 +1,18 @@
2764+/* { dg-do compile } */
2765+/* { dg-options "-O2" } */
2766+
2767+long long mac(const int *a, const int *b, long long sqr, long long *sum)
2768+{
2769+ int i;
2770+ long long dotp = *sum;
2771+
2772+ for (i = 0; i < 150; i++) {
2773+ dotp += (long long)b[i] * a[i];
2774+ sqr += (long long)b[i] * b[i];
2775+ }
2776+
2777+ *sum = dotp;
2778+ return sqr;
2779+}
2780+
2781+/* { dg-final { scan-assembler-times "imull" 2 } } */
2782
2783=== added file 'gcc/testsuite/gcc.target/i386/wmul-2.c'
2784--- old/gcc/testsuite/gcc.target/i386/wmul-2.c 1970-01-01 00:00:00 +0000
2785+++ new/gcc/testsuite/gcc.target/i386/wmul-2.c 2010-09-01 13:29:58 +0000
2786@@ -0,0 +1,12 @@
2787+/* { dg-do compile } */
2788+/* { dg-options "-O2" } */
2789+
2790+void vec_mpy(int y[], const int x[], int scaler)
2791+{
2792+ int i;
2793+
2794+ for (i = 0; i < 150; i++)
2795+ y[i] += (((long long)scaler * x[i]) >> 31);
2796+}
2797+
2798+/* { dg-final { scan-assembler-times "imull" 1 } } */
2799
2800=== modified file 'gcc/tree-cfg.c'
2801--- old/gcc/tree-cfg.c 2010-08-10 13:31:21 +0000
2802+++ new/gcc/tree-cfg.c 2010-09-01 13:29:58 +0000
2803@@ -3428,8 +3428,13 @@
2804 connected to the operand types. */
2805 return verify_gimple_comparison (lhs_type, rhs1, rhs2);
2806
2807+ case WIDEN_MULT_EXPR:
2808+ if (TREE_CODE (lhs_type) != INTEGER_TYPE)
2809+ return true;
2810+ return ((2 * TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (lhs_type))
2811+ || (TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (rhs2_type)));
2812+
2813 case WIDEN_SUM_EXPR:
2814- case WIDEN_MULT_EXPR:
2815 case VEC_WIDEN_MULT_HI_EXPR:
2816 case VEC_WIDEN_MULT_LO_EXPR:
2817 case VEC_PACK_TRUNC_EXPR:
2818
2819=== modified file 'gcc/tree-inline.c'
2820--- old/gcc/tree-inline.c 2010-08-10 13:31:21 +0000
2821+++ new/gcc/tree-inline.c 2010-09-01 13:29:58 +0000
2822@@ -229,6 +229,7 @@
2823 regions of the CFG, but this is expensive to test. */
2824 if (id->entry_bb
2825 && is_gimple_reg (SSA_NAME_VAR (name))
2826+ && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (name)
2827 && TREE_CODE (SSA_NAME_VAR (name)) != PARM_DECL
2828 && (id->entry_bb != EDGE_SUCC (ENTRY_BLOCK_PTR, 0)->dest
2829 || EDGE_COUNT (id->entry_bb->preds) != 1))
2830
2831=== modified file 'gcc/tree-pass.h'
2832--- old/gcc/tree-pass.h 2010-04-02 18:54:46 +0000
2833+++ new/gcc/tree-pass.h 2010-09-01 13:29:58 +0000
2834@@ -407,6 +407,7 @@
2835 extern struct gimple_opt_pass pass_cse_reciprocals;
2836 extern struct gimple_opt_pass pass_cse_sincos;
2837 extern struct gimple_opt_pass pass_optimize_bswap;
2838+extern struct gimple_opt_pass pass_optimize_widening_mul;
2839 extern struct gimple_opt_pass pass_warn_function_return;
2840 extern struct gimple_opt_pass pass_warn_function_noreturn;
2841 extern struct gimple_opt_pass pass_cselim;
2842
2843=== modified file 'gcc/tree-ssa-math-opts.c'
2844--- old/gcc/tree-ssa-math-opts.c 2010-04-02 18:54:46 +0000
2845+++ new/gcc/tree-ssa-math-opts.c 2010-09-01 13:29:58 +0000
2846@@ -1260,3 +1260,137 @@
2847 0 /* todo_flags_finish */
2848 }
2849 };
2850+
2851+/* Find integer multiplications where the operands are extended from
2852+ smaller types, and replace the MULT_EXPR with a WIDEN_MULT_EXPR
2853+ where appropriate. */
2854+
2855+static unsigned int
2856+execute_optimize_widening_mul (void)
2857+{
2858+ bool changed = false;
2859+ basic_block bb;
2860+
2861+ FOR_EACH_BB (bb)
2862+ {
2863+ gimple_stmt_iterator gsi;
2864+
2865+ for (gsi = gsi_after_labels (bb); !gsi_end_p (gsi); gsi_next (&gsi))
2866+ {
2867+ gimple stmt = gsi_stmt (gsi);
2868+ gimple rhs1_stmt = NULL, rhs2_stmt = NULL;
2869+ tree type, type1 = NULL, type2 = NULL;
2870+ tree rhs1, rhs2, rhs1_convop = NULL, rhs2_convop = NULL;
2871+ enum tree_code rhs1_code, rhs2_code;
2872+
2873+ if (!is_gimple_assign (stmt)
2874+ || gimple_assign_rhs_code (stmt) != MULT_EXPR)
2875+ continue;
2876+
2877+ type = TREE_TYPE (gimple_assign_lhs (stmt));
2878+
2879+ if (TREE_CODE (type) != INTEGER_TYPE)
2880+ continue;
2881+
2882+ rhs1 = gimple_assign_rhs1 (stmt);
2883+ rhs2 = gimple_assign_rhs2 (stmt);
2884+
2885+ if (TREE_CODE (rhs1) == SSA_NAME)
2886+ {
2887+ rhs1_stmt = SSA_NAME_DEF_STMT (rhs1);
2888+ if (!is_gimple_assign (rhs1_stmt))
2889+ continue;
2890+ rhs1_code = gimple_assign_rhs_code (rhs1_stmt);
2891+ if (!CONVERT_EXPR_CODE_P (rhs1_code))
2892+ continue;
2893+ rhs1_convop = gimple_assign_rhs1 (rhs1_stmt);
2894+ type1 = TREE_TYPE (rhs1_convop);
2895+ if (TYPE_PRECISION (type1) * 2 != TYPE_PRECISION (type))
2896+ continue;
2897+ }
2898+ else if (TREE_CODE (rhs1) != INTEGER_CST)
2899+ continue;
2900+
2901+ if (TREE_CODE (rhs2) == SSA_NAME)
2902+ {
2903+ rhs2_stmt = SSA_NAME_DEF_STMT (rhs2);
2904+ if (!is_gimple_assign (rhs2_stmt))
2905+ continue;
2906+ rhs2_code = gimple_assign_rhs_code (rhs2_stmt);
2907+ if (!CONVERT_EXPR_CODE_P (rhs2_code))
2908+ continue;
2909+ rhs2_convop = gimple_assign_rhs1 (rhs2_stmt);
2910+ type2 = TREE_TYPE (rhs2_convop);
2911+ if (TYPE_PRECISION (type2) * 2 != TYPE_PRECISION (type))
2912+ continue;
2913+ }
2914+ else if (TREE_CODE (rhs2) != INTEGER_CST)
2915+ continue;
2916+
2917+ if (rhs1_stmt == NULL && rhs2_stmt == NULL)
2918+ continue;
2919+
2920+ /* Verify that the machine can perform a widening multiply in this
2921+ mode/signedness combination, otherwise this transformation is
2922+ likely to pessimize code. */
2923+ if ((rhs1_stmt == NULL || TYPE_UNSIGNED (type1))
2924+ && (rhs2_stmt == NULL || TYPE_UNSIGNED (type2))
2925+ && (optab_handler (umul_widen_optab, TYPE_MODE (type))
2926+ ->insn_code == CODE_FOR_nothing))
2927+ continue;
2928+ else if ((rhs1_stmt == NULL || !TYPE_UNSIGNED (type1))
2929+ && (rhs2_stmt == NULL || !TYPE_UNSIGNED (type2))
2930+ && (optab_handler (smul_widen_optab, TYPE_MODE (type))
2931+ ->insn_code == CODE_FOR_nothing))
2932+ continue;
2933+ else if (rhs1_stmt != NULL && rhs2_stmt != 0
2934+ && (TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2))
2935+ && (optab_handler (usmul_widen_optab, TYPE_MODE (type))
2936+ ->insn_code == CODE_FOR_nothing))
2937+ continue;
2938+
2939+ if ((rhs1_stmt == NULL && !int_fits_type_p (rhs1, type2))
2940+ || (rhs2_stmt == NULL && !int_fits_type_p (rhs2, type1)))
2941+ continue;
2942+
2943+ if (rhs1_stmt == NULL)
2944+ gimple_assign_set_rhs1 (stmt, fold_convert (type2, rhs1));
2945+ else
2946+ gimple_assign_set_rhs1 (stmt, rhs1_convop);
2947+ if (rhs2_stmt == NULL)
2948+ gimple_assign_set_rhs2 (stmt, fold_convert (type1, rhs2));
2949+ else
2950+ gimple_assign_set_rhs2 (stmt, rhs2_convop);
2951+ gimple_assign_set_rhs_code (stmt, WIDEN_MULT_EXPR);
2952+ update_stmt (stmt);
2953+ changed = true;
2954+ }
2955+ }
2956+ return (changed ? TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
2957+ | TODO_verify_stmts : 0);
2958+}
2959+
2960+static bool
2961+gate_optimize_widening_mul (void)
2962+{
2963+ return flag_expensive_optimizations && optimize;
2964+}
2965+
2966+struct gimple_opt_pass pass_optimize_widening_mul =
2967+{
2968+ {
2969+ GIMPLE_PASS,
2970+ "widening_mul", /* name */
2971+ gate_optimize_widening_mul, /* gate */
2972+ execute_optimize_widening_mul, /* execute */
2973+ NULL, /* sub */
2974+ NULL, /* next */
2975+ 0, /* static_pass_number */
2976+ TV_NONE, /* tv_id */
2977+ PROP_ssa, /* properties_required */
2978+ 0, /* properties_provided */
2979+ 0, /* properties_destroyed */
2980+ 0, /* todo_flags_start */
2981+ 0 /* todo_flags_finish */
2982+ }
2983+};
2984
2985=== modified file 'gcc/tree-ssa.c'
2986--- old/gcc/tree-ssa.c 2009-12-07 22:42:10 +0000
2987+++ new/gcc/tree-ssa.c 2010-09-01 13:29:58 +0000
2988@@ -1671,6 +1671,8 @@
2989 {
2990 TREE_NO_WARNING (var) = 1;
2991
2992+ if (location == DECL_SOURCE_LOCATION (var))
2993+ return;
2994 if (xloc.file != floc.file
2995 || xloc.line < floc.line
2996 || xloc.line > LOCATION_LINE (cfun->function_end_locus))
2997
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99381.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99381.patch
new file mode 100644
index 000000000..c504f44fb
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99381.patch
@@ -0,0 +1,512 @@
12010-09-06 Mark Mitchell <mark@codesourcery.com>
2
3 Issue #9022
4
5 Backport from mainline:
6 2010-09-05 Mark Mitchell <mark@codesourcery.com>
7 * doc/invoke.texi: Document -Wdouble-promotion.
8 * c-typeck.c (convert_arguments): Check for implicit conversions
9 from float to double.
10 (do_warn_double_promotion): New function.
11 (build_conditional_expr): Use it.
12 (build_binary_op): Likewise.
13 * c.opt (Wdouble-promotion): New.
14 2010-09-05 Mark Mitchell <mark@codesourcery.com>
15 * gcc.dg/Wdouble-promotion.c: New.
16 2010-09-06 Mark Mitchell <mark@codesourcery.com>
17 gcc/
18 * c-common.h (do_warn_double_promotion): Declare.
19 * c-common.c (do_warn_double_promotion): Define.
20 * c-typeck.c (do_warn_double_promotion): Remove.
21 * doc/invoke.texi (-Wdouble-promotion): Note available for C++ and
22 Objective-C++ too.
23 gcc/cp/
24 * typeck.c (cp_build_binary_op): Call do_warn_double_promotion.
25 * call.c (build_conditional_expr): Likewise.
26 (convert_arg_to_ellipsis): Likewise.
27 gcc/testsuite/
28 * g++.dg/warn/Wdouble-promotion.C: New.
29
30 2010-08-31 Chung-Lin Tang <cltang@codesourcery.com>
31
32 Backport from mainline:
33
34=== modified file 'gcc/c-common.c'
35--- old/gcc/c-common.c 2010-06-25 09:35:40 +0000
36+++ new/gcc/c-common.c 2010-09-07 15:47:57 +0000
37@@ -9172,6 +9172,40 @@
38 }
39 }
40
41+/* RESULT_TYPE is the result of converting TYPE1 and TYPE2 to a common
42+ type via c_common_type. If -Wdouble-promotion is in use, and the
43+ conditions for warning have been met, issue a warning. GMSGID is
44+ the warning message. It must have two %T specifiers for the type
45+ that was converted (generally "float") and the type to which it was
46+ converted (generally "double), respectively. LOC is the location
47+ to which the awrning should refer. */
48+
49+void
50+do_warn_double_promotion (tree result_type, tree type1, tree type2,
51+ const char *gmsgid, location_t loc)
52+{
53+ tree source_type;
54+
55+ if (!warn_double_promotion)
56+ return;
57+ /* If the conversion will not occur at run-time, there is no need to
58+ warn about it. */
59+ if (c_inhibit_evaluation_warnings)
60+ return;
61+ if (TYPE_MAIN_VARIANT (result_type) != double_type_node
62+ && TYPE_MAIN_VARIANT (result_type) != complex_double_type_node)
63+ return;
64+ if (TYPE_MAIN_VARIANT (type1) == float_type_node
65+ || TYPE_MAIN_VARIANT (type1) == complex_float_type_node)
66+ source_type = type1;
67+ else if (TYPE_MAIN_VARIANT (type2) == float_type_node
68+ || TYPE_MAIN_VARIANT (type2) == complex_float_type_node)
69+ source_type = type2;
70+ else
71+ return;
72+ warning_at (loc, OPT_Wdouble_promotion, gmsgid, source_type, result_type);
73+}
74+
75 /* Setup a TYPE_DECL node as a typedef representation.
76
77 X is a TYPE_DECL for a typedef statement. Create a brand new
78
79=== modified file 'gcc/c-common.h'
80--- old/gcc/c-common.h 2009-12-17 03:22:22 +0000
81+++ new/gcc/c-common.h 2010-09-07 15:47:57 +0000
82@@ -1056,6 +1056,8 @@
83 tree op0, tree op1,
84 tree result_type,
85 enum tree_code resultcode);
86+extern void do_warn_double_promotion (tree, tree, tree, const char *,
87+ location_t);
88 extern void set_underlying_type (tree x);
89 extern bool is_typedef_decl (tree x);
90 extern VEC(tree,gc) *make_tree_vector (void);
91
92=== modified file 'gcc/c-typeck.c'
93--- old/gcc/c-typeck.c 2010-04-02 18:54:46 +0000
94+++ new/gcc/c-typeck.c 2010-09-07 15:47:57 +0000
95@@ -3012,8 +3012,15 @@
96 if (type_generic)
97 parmval = val;
98 else
99- /* Convert `float' to `double'. */
100- parmval = convert (double_type_node, val);
101+ {
102+ /* Convert `float' to `double'. */
103+ if (warn_double_promotion && !c_inhibit_evaluation_warnings)
104+ warning (OPT_Wdouble_promotion,
105+ "implicit conversion from %qT to %qT when passing "
106+ "argument to function",
107+ valtype, double_type_node);
108+ parmval = convert (double_type_node, val);
109+ }
110 }
111 else if (excess_precision && !type_generic)
112 /* A "double" argument with excess precision being passed
113@@ -4036,6 +4043,10 @@
114 || code2 == COMPLEX_TYPE))
115 {
116 result_type = c_common_type (type1, type2);
117+ do_warn_double_promotion (result_type, type1, type2,
118+ "implicit conversion from %qT to %qT to "
119+ "match other result of conditional",
120+ colon_loc);
121
122 /* If -Wsign-compare, warn here if type1 and type2 have
123 different signedness. We'll promote the signed to unsigned
124@@ -9607,6 +9618,11 @@
125 if (shorten || common || short_compare)
126 {
127 result_type = c_common_type (type0, type1);
128+ do_warn_double_promotion (result_type, type0, type1,
129+ "implicit conversion from %qT to %qT "
130+ "to match other operand of binary "
131+ "expression",
132+ location);
133 if (result_type == error_mark_node)
134 return error_mark_node;
135 }
136
137=== modified file 'gcc/c.opt'
138--- old/gcc/c.opt 2010-04-02 18:54:46 +0000
139+++ new/gcc/c.opt 2010-09-07 15:47:57 +0000
140@@ -265,6 +265,10 @@
141 Wimplicit
142 C ObjC C++ ObjC++ Warning
143
144+Wdouble-promotion
145+C ObjC C++ ObjC++ Var(warn_double_promotion) Warning
146+Warn about implicit conversions from \"float\" to \"double\"
147+
148 Wimplicit-function-declaration
149 C ObjC Var(warn_implicit_function_declaration) Init(-1) Warning
150 Warn about implicit function declarations
151
152=== modified file 'gcc/cp/call.c'
153--- old/gcc/cp/call.c 2010-07-08 13:08:36 +0000
154+++ new/gcc/cp/call.c 2010-09-07 15:47:57 +0000
155@@ -3946,6 +3946,10 @@
156 /* In this case, there is always a common type. */
157 result_type = type_after_usual_arithmetic_conversions (arg2_type,
158 arg3_type);
159+ do_warn_double_promotion (result_type, arg2_type, arg3_type,
160+ "implicit conversion from %qT to %qT to "
161+ "match other result of conditional",
162+ input_location);
163
164 if (TREE_CODE (arg2_type) == ENUMERAL_TYPE
165 && TREE_CODE (arg3_type) == ENUMERAL_TYPE)
166@@ -5179,11 +5183,14 @@
167 tree
168 convert_arg_to_ellipsis (tree arg)
169 {
170+ tree arg_type;
171+
172 /* [expr.call]
173
174 The lvalue-to-rvalue, array-to-pointer, and function-to-pointer
175 standard conversions are performed. */
176 arg = decay_conversion (arg);
177+ arg_type = TREE_TYPE (arg);
178 /* [expr.call]
179
180 If the argument has integral or enumeration type that is subject
181@@ -5191,19 +5198,27 @@
182 type that is subject to the floating point promotion
183 (_conv.fpprom_), the value of the argument is converted to the
184 promoted type before the call. */
185- if (TREE_CODE (TREE_TYPE (arg)) == REAL_TYPE
186- && (TYPE_PRECISION (TREE_TYPE (arg))
187+ if (TREE_CODE (arg_type) == REAL_TYPE
188+ && (TYPE_PRECISION (arg_type)
189 < TYPE_PRECISION (double_type_node))
190- && !DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (arg))))
191- arg = convert_to_real (double_type_node, arg);
192- else if (INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (arg)))
193+ && !DECIMAL_FLOAT_MODE_P (TYPE_MODE (arg_type)))
194+ {
195+ if (warn_double_promotion && !c_inhibit_evaluation_warnings)
196+ warning (OPT_Wdouble_promotion,
197+ "implicit conversion from %qT to %qT when passing "
198+ "argument to function",
199+ arg_type, double_type_node);
200+ arg = convert_to_real (double_type_node, arg);
201+ }
202+ else if (INTEGRAL_OR_ENUMERATION_TYPE_P (arg_type))
203 arg = perform_integral_promotions (arg);
204
205 arg = require_complete_type (arg);
206+ arg_type = TREE_TYPE (arg);
207
208 if (arg != error_mark_node
209- && (type_has_nontrivial_copy_init (TREE_TYPE (arg))
210- || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (arg))))
211+ && (type_has_nontrivial_copy_init (arg_type)
212+ || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (arg_type)))
213 {
214 /* [expr.call] 5.2.2/7:
215 Passing a potentially-evaluated argument of class type (Clause 9)
216@@ -5218,7 +5233,7 @@
217 it is not potentially-evaluated. */
218 if (cp_unevaluated_operand == 0)
219 error ("cannot pass objects of non-trivially-copyable "
220- "type %q#T through %<...%>", TREE_TYPE (arg));
221+ "type %q#T through %<...%>", arg_type);
222 }
223
224 return arg;
225
226=== modified file 'gcc/cp/typeck.c'
227--- old/gcc/cp/typeck.c 2010-06-30 21:06:28 +0000
228+++ new/gcc/cp/typeck.c 2010-09-07 15:47:57 +0000
229@@ -260,6 +260,7 @@
230 enum tree_code code2 = TREE_CODE (t2);
231 tree attributes;
232
233+
234 /* In what follows, we slightly generalize the rules given in [expr] so
235 as to deal with `long long' and `complex'. First, merge the
236 attributes. */
237@@ -4226,7 +4227,14 @@
238 if (!result_type
239 && arithmetic_types_p
240 && (shorten || common || short_compare))
241- result_type = cp_common_type (type0, type1);
242+ {
243+ result_type = cp_common_type (type0, type1);
244+ do_warn_double_promotion (result_type, type0, type1,
245+ "implicit conversion from %qT to %qT "
246+ "to match other operand of binary "
247+ "expression",
248+ location);
249+ }
250
251 if (!result_type)
252 {
253
254=== modified file 'gcc/doc/invoke.texi'
255--- old/gcc/doc/invoke.texi 2010-08-16 09:41:58 +0000
256+++ new/gcc/doc/invoke.texi 2010-09-07 15:47:57 +0000
257@@ -234,8 +234,8 @@
258 -Wchar-subscripts -Wclobbered -Wcomment @gol
259 -Wconversion -Wcoverage-mismatch -Wno-deprecated @gol
260 -Wno-deprecated-declarations -Wdisabled-optimization @gol
261--Wno-div-by-zero -Wempty-body -Wenum-compare -Wno-endif-labels @gol
262--Werror -Werror=* @gol
263+-Wno-div-by-zero -Wdouble-promotion -Wempty-body -Wenum-compare @gol
264+-Wno-endif-labels -Werror -Werror=* @gol
265 -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol
266 -Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol
267 -Wformat-security -Wformat-y2k @gol
268@@ -2976,6 +2976,30 @@
269 comment, or whenever a Backslash-Newline appears in a @samp{//} comment.
270 This warning is enabled by @option{-Wall}.
271
272+@item -Wdouble-promotion @r{(C, C++, Objective-C and Objective-C++ only)}
273+@opindex Wdouble-promotion
274+@opindex Wno-double-promotion
275+Give a warning when a value of type @code{float} is implicitly
276+promoted to @code{double}. CPUs with a 32-bit ``single-precision''
277+floating-point unit implement @code{float} in hardware, but emulate
278+@code{double} in software. On such a machine, doing computations
279+using @code{double} values is much more expensive because of the
280+overhead required for software emulation.
281+
282+It is easy to accidentally do computations with @code{double} because
283+floating-point literals are implicitly of type @code{double}. For
284+example, in:
285+@smallexample
286+@group
287+float area(float radius)
288+@{
289+ return 3.14159 * radius * radius;
290+@}
291+@end group
292+@end smallexample
293+the compiler will perform the entire computation with @code{double}
294+because the floating-point literal is a @code{double}.
295+
296 @item -Wformat
297 @opindex Wformat
298 @opindex Wno-format
299
300=== added file 'gcc/testsuite/g++.dg/warn/Wdouble-promotion.C'
301--- old/gcc/testsuite/g++.dg/warn/Wdouble-promotion.C 1970-01-01 00:00:00 +0000
302+++ new/gcc/testsuite/g++.dg/warn/Wdouble-promotion.C 2010-09-07 15:47:57 +0000
303@@ -0,0 +1,99 @@
304+/* { dg-do compile } */
305+/* { dg-options "-Wdouble-promotion" } */
306+
307+#include <stddef.h>
308+
309+/* Some targets do not provide <complex.h> so we define I ourselves. */
310+#define I 1.0iF
311+#define ID ((_Complex double)I)
312+
313+float f;
314+double d;
315+int i;
316+long double ld;
317+_Complex float cf;
318+_Complex double cd;
319+_Complex long double cld;
320+size_t s;
321+
322+extern void varargs_fn (int, ...);
323+extern void double_fn (double);
324+extern float float_fn (void);
325+
326+void
327+usual_arithmetic_conversions(void)
328+{
329+ float local_f;
330+ _Complex float local_cf;
331+
332+ /* Values of type "float" are implicitly converted to "double" or
333+ "long double" due to use in arithmetic with "double" or "long
334+ double" operands. */
335+ local_f = f + 1.0; /* { dg-warning "implicit" } */
336+ local_f = f - d; /* { dg-warning "implicit" } */
337+ local_f = 1.0f * 1.0; /* { dg-warning "implicit" } */
338+ local_f = 1.0f / d; /* { dg-warning "implicit" } */
339+
340+ local_cf = cf + 1.0; /* { dg-warning "implicit" } */
341+ local_cf = cf - d; /* { dg-warning "implicit" } */
342+ local_cf = cf + 1.0 * ID; /* { dg-warning "implicit" } */
343+ local_cf = cf - cd; /* { dg-warning "implicit" } */
344+
345+ local_f = i ? f : d; /* { dg-warning "implicit" } */
346+ i = f == d; /* { dg-warning "implicit" } */
347+ i = d != f; /* { dg-warning "implicit" } */
348+}
349+
350+void
351+default_argument_promotion (void)
352+{
353+ /* Because "f" is part of the variable argument list, it is promoted
354+ to "double". */
355+ varargs_fn (1, f); /* { dg-warning "implicit" } */
356+}
357+
358+/* There is no warning when an explicit cast is used to perform the
359+ conversion. */
360+
361+void
362+casts (void)
363+{
364+ float local_f;
365+ _Complex float local_cf;
366+
367+ local_f = (double)f + 1.0; /* { dg-bogus "implicit" } */
368+ local_f = (double)f - d; /* { dg-bogus "implicit" } */
369+ local_f = (double)1.0f + 1.0; /* { dg-bogus "implicit" } */
370+ local_f = (double)1.0f - d; /* { dg-bogus "implicit" } */
371+
372+ local_cf = (_Complex double)cf + 1.0; /* { dg-bogus "implicit" } */
373+ local_cf = (_Complex double)cf - d; /* { dg-bogus "implicit" } */
374+ local_cf = (_Complex double)cf + 1.0 * ID; /* { dg-bogus "implicit" } */
375+ local_cf = (_Complex double)cf - cd; /* { dg-bogus "implicit" } */
376+
377+ local_f = i ? (double)f : d; /* { dg-bogus "implicit" } */
378+ i = (double)f == d; /* { dg-bogus "implicit" } */
379+ i = d != (double)f; /* { dg-bogus "implicit" } */
380+}
381+
382+/* There is no warning on conversions that occur in assignment (and
383+ assignment-like) contexts. */
384+
385+void
386+assignments (void)
387+{
388+ d = f; /* { dg-bogus "implicit" } */
389+ double_fn (f); /* { dg-bogus "implicit" } */
390+ d = float_fn (); /* { dg-bogus "implicit" } */
391+}
392+
393+/* There is no warning in non-evaluated contexts. */
394+
395+void
396+non_evaluated (void)
397+{
398+ s = sizeof (f + 1.0); /* { dg-bogus "implicit" } */
399+ s = __alignof__ (f + 1.0); /* { dg-bogus "implicit" } */
400+ d = (__typeof__(f + 1.0))f; /* { dg-bogus "implicit" } */
401+ s = sizeof (i ? f : d); /* { dg-bogus "implicit" } */
402+}
403
404=== added file 'gcc/testsuite/gcc.dg/Wdouble-promotion.c'
405--- old/gcc/testsuite/gcc.dg/Wdouble-promotion.c 1970-01-01 00:00:00 +0000
406+++ new/gcc/testsuite/gcc.dg/Wdouble-promotion.c 2010-09-07 15:47:57 +0000
407@@ -0,0 +1,104 @@
408+/* { dg-do compile } */
409+/* { dg-options "-Wdouble-promotion" } */
410+
411+#include <stddef.h>
412+
413+/* Some targets do not provide <complex.h> so we define I ourselves. */
414+#define I 1.0iF
415+#define ID ((_Complex double)I)
416+
417+float f;
418+double d;
419+int i;
420+long double ld;
421+_Complex float cf;
422+_Complex double cd;
423+_Complex long double cld;
424+size_t s;
425+
426+extern void unprototyped_fn ();
427+extern void varargs_fn (int, ...);
428+extern void double_fn (double);
429+extern float float_fn (void);
430+
431+void
432+usual_arithmetic_conversions(void)
433+{
434+ float local_f;
435+ _Complex float local_cf;
436+
437+ /* Values of type "float" are implicitly converted to "double" or
438+ "long double" due to use in arithmetic with "double" or "long
439+ double" operands. */
440+ local_f = f + 1.0; /* { dg-warning "implicit" } */
441+ local_f = f - d; /* { dg-warning "implicit" } */
442+ local_f = 1.0f * 1.0; /* { dg-warning "implicit" } */
443+ local_f = 1.0f / d; /* { dg-warning "implicit" } */
444+
445+ local_cf = cf + 1.0; /* { dg-warning "implicit" } */
446+ local_cf = cf - d; /* { dg-warning "implicit" } */
447+ local_cf = cf + 1.0 * ID; /* { dg-warning "implicit" } */
448+ local_cf = cf - cd; /* { dg-warning "implicit" } */
449+
450+ local_f = i ? f : d; /* { dg-warning "implicit" } */
451+ i = f == d; /* { dg-warning "implicit" } */
452+ i = d != f; /* { dg-warning "implicit" } */
453+}
454+
455+void
456+default_argument_promotion (void)
457+{
458+ /* Because there is no prototype, "f" is promoted to "double". */
459+ unprototyped_fn (f); /* { dg-warning "implicit" } */
460+ undeclared_fn (f); /* { dg-warning "implicit" } */
461+ /* Because "f" is part of the variable argument list, it is promoted
462+ to "double". */
463+ varargs_fn (1, f); /* { dg-warning "implicit" } */
464+}
465+
466+/* There is no warning when an explicit cast is used to perform the
467+ conversion. */
468+
469+void
470+casts (void)
471+{
472+ float local_f;
473+ _Complex float local_cf;
474+
475+ local_f = (double)f + 1.0; /* { dg-bogus "implicit" } */
476+ local_f = (double)f - d; /* { dg-bogus "implicit" } */
477+ local_f = (double)1.0f + 1.0; /* { dg-bogus "implicit" } */
478+ local_f = (double)1.0f - d; /* { dg-bogus "implicit" } */
479+
480+ local_cf = (_Complex double)cf + 1.0; /* { dg-bogus "implicit" } */
481+ local_cf = (_Complex double)cf - d; /* { dg-bogus "implicit" } */
482+ local_cf = (_Complex double)cf + 1.0 * ID; /* { dg-bogus "implicit" } */
483+ local_cf = (_Complex double)cf - cd; /* { dg-bogus "implicit" } */
484+
485+ local_f = i ? (double)f : d; /* { dg-bogus "implicit" } */
486+ i = (double)f == d; /* { dg-bogus "implicit" } */
487+ i = d != (double)f; /* { dg-bogus "implicit" } */
488+}
489+
490+/* There is no warning on conversions that occur in assignment (and
491+ assignment-like) contexts. */
492+
493+void
494+assignments (void)
495+{
496+ d = f; /* { dg-bogus "implicit" } */
497+ double_fn (f); /* { dg-bogus "implicit" } */
498+ d = float_fn (); /* { dg-bogus "implicit" } */
499+}
500+
501+/* There is no warning in non-evaluated contexts. */
502+
503+void
504+non_evaluated (void)
505+{
506+ s = sizeof (f + 1.0); /* { dg-bogus "implicit" } */
507+ s = __alignof__ (f + 1.0); /* { dg-bogus "implicit" } */
508+ d = (__typeof__(f + 1.0))f; /* { dg-bogus "implicit" } */
509+ s = sizeof (i ? f : d); /* { dg-bogus "implicit" } */
510+ s = sizeof (unprototyped_fn (f)); /* { dg-bogus "implicit" } */
511+}
512
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99383.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99383.patch
new file mode 100644
index 000000000..82a9e93e4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99383.patch
@@ -0,0 +1,369 @@
12010-09-09 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-08-25 Tejas Belagod <tejas.belagod@arm.com>
6 * config/arm/iterators.md (VU, SE, V_widen_l): New.
7 (V_unpack, US): New.
8 * config/arm/neon.md (vec_unpack<US>_hi_<mode>): Expansion for
9 vmovl.
10 (vec_unpack<US>_lo_<mode>): Likewise.
11 (neon_vec_unpack<US>_hi_<mode>): Instruction pattern for vmovl.
12 (neon_vec_unpack<US>_lo_<mode>): Likewise.
13 (vec_widen_<US>mult_lo_<mode>): Expansion for vmull.
14 (vec_widen_<US>mult_hi_<mode>): Likewise.
15 (neon_vec_<US>mult_lo_<mode>"): Instruction pattern for vmull.
16 (neon_vec_<US>mult_hi_<mode>"): Likewise.
17 (neon_unpack<US>_<mode>): Widening move intermediate step for
18 vectorizing without -mvectorize-with-neon-quad.
19 (neon_vec_<US>mult_<mode>): Widening multiply intermediate step
20 for vectorizing without -mvectorize-with-neon-quad.
21 * config/arm/predicates.md (vect_par_constant_high): Check for
22 high-half lanes of a vector.
23 (vect_par_constant_low): Check for low-half lanes of a vector.
24
25 2010-08-25 Tejas Belagod <tejas.belagod@arm.com>
26 * lib/target-supports.exp (check_effective_target_vect_unpack):
27 Set vect_unpack supported flag to true for neon.
28
29 2010-09-07 Andrew Stubbs <ams@codesourcery.com>
30
31 Backport from gcc-patches:
32
33=== modified file 'gcc/config/arm/arm.md'
34--- old/gcc/config/arm/arm.md 2010-09-01 13:29:58 +0000
35+++ new/gcc/config/arm/arm.md 2010-09-09 14:11:34 +0000
36@@ -868,6 +868,9 @@
37 (define_code_attr cnb [(ltu "CC_C") (geu "CC")])
38 (define_code_attr optab [(ltu "ltu") (geu "geu")])
39
40+;; Assembler mnemonics for signedness of widening operations.
41+(define_code_attr US [(sign_extend "s") (zero_extend "u")])
42+
43 (define_insn "*addsi3_carryin_<optab>"
44 [(set (match_operand:SI 0 "s_register_operand" "=r")
45 (plus:SI (plus:SI (match_operand:SI 1 "s_register_operand" "%r")
46
47=== modified file 'gcc/config/arm/neon.md'
48--- old/gcc/config/arm/neon.md 2010-08-23 14:29:45 +0000
49+++ new/gcc/config/arm/neon.md 2010-09-09 14:11:34 +0000
50@@ -235,6 +235,9 @@
51 ;; Modes with 32-bit elements only.
52 (define_mode_iterator V32 [V2SI V2SF V4SI V4SF])
53
54+;; Modes with 8-bit, 16-bit and 32-bit elements.
55+(define_mode_iterator VU [V16QI V8HI V4SI])
56+
57 ;; (Opposite) mode to convert to/from for above conversions.
58 (define_mode_attr V_CVTTO [(V2SI "V2SF") (V2SF "V2SI")
59 (V4SI "V4SF") (V4SF "V4SI")])
60@@ -388,6 +391,9 @@
61 ;; Same, without unsigned variants (for use with *SFmode pattern).
62 (define_code_iterator vqhs_ops [plus smin smax])
63
64+;; A list of widening operators
65+(define_code_iterator SE [sign_extend zero_extend])
66+
67 ;; Assembler mnemonics for above codes.
68 (define_code_attr VQH_mnem [(plus "vadd") (smin "vmin") (smax "vmax")
69 (umin "vmin") (umax "vmax")])
70@@ -443,6 +449,12 @@
71 (V2SF "2") (V4SF "4")
72 (DI "1") (V2DI "2")])
73
74+;; Same as V_widen, but lower-case.
75+(define_mode_attr V_widen_l [(V8QI "v8hi") (V4HI "v4si") ( V2SI "v2di")])
76+
77+;; Widen. Result is half the number of elements, but widened to double-width.
78+(define_mode_attr V_unpack [(V16QI "V8HI") (V8HI "V4SI") (V4SI "V2DI")])
79+
80 (define_insn "*neon_mov<mode>"
81 [(set (match_operand:VD 0 "nonimmediate_operand"
82 "=w,Uv,w, w, ?r,?w,?r,?r, ?Us")
83@@ -5540,3 +5552,205 @@
84 emit_insn (gen_orn<mode>3_neon (operands[0], operands[1], operands[2]));
85 DONE;
86 })
87+
88+(define_insn "neon_vec_unpack<US>_lo_<mode>"
89+ [(set (match_operand:<V_unpack> 0 "register_operand" "=w")
90+ (SE:<V_unpack> (vec_select:<V_HALF>
91+ (match_operand:VU 1 "register_operand" "w")
92+ (match_operand:VU 2 "vect_par_constant_low" ""))))]
93+ "TARGET_NEON"
94+ "vmovl.<US><V_sz_elem> %q0, %e1"
95+ [(set_attr "neon_type" "neon_shift_1")]
96+)
97+
98+(define_insn "neon_vec_unpack<US>_hi_<mode>"
99+ [(set (match_operand:<V_unpack> 0 "register_operand" "=w")
100+ (SE:<V_unpack> (vec_select:<V_HALF>
101+ (match_operand:VU 1 "register_operand" "w")
102+ (match_operand:VU 2 "vect_par_constant_high" ""))))]
103+ "TARGET_NEON"
104+ "vmovl.<US><V_sz_elem> %q0, %f1"
105+ [(set_attr "neon_type" "neon_shift_1")]
106+)
107+
108+(define_expand "vec_unpack<US>_hi_<mode>"
109+ [(match_operand:<V_unpack> 0 "register_operand" "")
110+ (SE:<V_unpack> (match_operand:VU 1 "register_operand"))]
111+ "TARGET_NEON"
112+ {
113+ rtvec v = rtvec_alloc (<V_mode_nunits>/2) ;
114+ rtx t1;
115+ int i;
116+ for (i = 0; i < (<V_mode_nunits>/2); i++)
117+ RTVEC_ELT (v, i) = GEN_INT ((<V_mode_nunits>/2) + i);
118+
119+ t1 = gen_rtx_PARALLEL (<MODE>mode, v);
120+ emit_insn (gen_neon_vec_unpack<US>_hi_<mode> (operands[0],
121+ operands[1],
122+ t1));
123+ DONE;
124+ }
125+)
126+
127+(define_expand "vec_unpack<US>_lo_<mode>"
128+ [(match_operand:<V_unpack> 0 "register_operand" "")
129+ (SE:<V_unpack> (match_operand:VU 1 "register_operand" ""))]
130+ "TARGET_NEON"
131+ {
132+ rtvec v = rtvec_alloc (<V_mode_nunits>/2) ;
133+ rtx t1;
134+ int i;
135+ for (i = 0; i < (<V_mode_nunits>/2) ; i++)
136+ RTVEC_ELT (v, i) = GEN_INT (i);
137+ t1 = gen_rtx_PARALLEL (<MODE>mode, v);
138+ emit_insn (gen_neon_vec_unpack<US>_lo_<mode> (operands[0],
139+ operands[1],
140+ t1));
141+ DONE;
142+ }
143+)
144+
145+(define_insn "neon_vec_<US>mult_lo_<mode>"
146+ [(set (match_operand:<V_unpack> 0 "register_operand" "=w")
147+ (mult:<V_unpack> (SE:<V_unpack> (vec_select:<V_HALF>
148+ (match_operand:VU 1 "register_operand" "w")
149+ (match_operand:VU 2 "vect_par_constant_low" "")))
150+ (SE:<V_unpack> (vec_select:<V_HALF>
151+ (match_operand:VU 3 "register_operand" "w")
152+ (match_dup 2)))))]
153+ "TARGET_NEON"
154+ "vmull.<US><V_sz_elem> %q0, %e1, %e3"
155+ [(set_attr "neon_type" "neon_shift_1")]
156+)
157+
158+(define_expand "vec_widen_<US>mult_lo_<mode>"
159+ [(match_operand:<V_unpack> 0 "register_operand" "")
160+ (SE:<V_unpack> (match_operand:VU 1 "register_operand" ""))
161+ (SE:<V_unpack> (match_operand:VU 2 "register_operand" ""))]
162+ "TARGET_NEON"
163+ {
164+ rtvec v = rtvec_alloc (<V_mode_nunits>/2) ;
165+ rtx t1;
166+ int i;
167+ for (i = 0; i < (<V_mode_nunits>/2) ; i++)
168+ RTVEC_ELT (v, i) = GEN_INT (i);
169+ t1 = gen_rtx_PARALLEL (<MODE>mode, v);
170+
171+ emit_insn (gen_neon_vec_<US>mult_lo_<mode> (operands[0],
172+ operands[1],
173+ t1,
174+ operands[2]));
175+ DONE;
176+ }
177+)
178+
179+(define_insn "neon_vec_<US>mult_hi_<mode>"
180+ [(set (match_operand:<V_unpack> 0 "register_operand" "=w")
181+ (mult:<V_unpack> (SE:<V_unpack> (vec_select:<V_HALF>
182+ (match_operand:VU 1 "register_operand" "w")
183+ (match_operand:VU 2 "vect_par_constant_high" "")))
184+ (SE:<V_unpack> (vec_select:<V_HALF>
185+ (match_operand:VU 3 "register_operand" "w")
186+ (match_dup 2)))))]
187+ "TARGET_NEON"
188+ "vmull.<US><V_sz_elem> %q0, %f1, %f3"
189+ [(set_attr "neon_type" "neon_shift_1")]
190+)
191+
192+(define_expand "vec_widen_<US>mult_hi_<mode>"
193+ [(match_operand:<V_unpack> 0 "register_operand" "")
194+ (SE:<V_unpack> (match_operand:VU 1 "register_operand" ""))
195+ (SE:<V_unpack> (match_operand:VU 2 "register_operand" ""))]
196+ "TARGET_NEON"
197+ {
198+ rtvec v = rtvec_alloc (<V_mode_nunits>/2) ;
199+ rtx t1;
200+ int i;
201+ for (i = 0; i < (<V_mode_nunits>/2) ; i++)
202+ RTVEC_ELT (v, i) = GEN_INT (<V_mode_nunits>/2 + i);
203+ t1 = gen_rtx_PARALLEL (<MODE>mode, v);
204+
205+ emit_insn (gen_neon_vec_<US>mult_hi_<mode> (operands[0],
206+ operands[1],
207+ t1,
208+ operands[2]));
209+ DONE;
210+
211+ }
212+)
213+
214+;; Vectorize for non-neon-quad case
215+(define_insn "neon_unpack<US>_<mode>"
216+ [(set (match_operand:<V_widen> 0 "register_operand" "=w")
217+ (SE:<V_widen> (match_operand:VDI 1 "register_operand" "")))]
218+ "TARGET_NEON"
219+ "vmovl.<US><V_sz_elem> %q0, %1"
220+ [(set_attr "neon_type" "neon_shift_1")]
221+)
222+
223+(define_expand "vec_unpack<US>_lo_<mode>"
224+ [(match_operand:<V_double_width> 0 "register_operand" "")
225+ (SE:<V_double_width>(match_operand:VDI 1 "register_operand"))]
226+ "TARGET_NEON"
227+{
228+ rtx tmpreg = gen_reg_rtx (<V_widen>mode);
229+ emit_insn (gen_neon_unpack<US>_<mode> (tmpreg, operands[1]));
230+ emit_insn (gen_neon_vget_low<V_widen_l> (operands[0], tmpreg));
231+
232+ DONE;
233+}
234+)
235+
236+(define_expand "vec_unpack<US>_hi_<mode>"
237+ [(match_operand:<V_double_width> 0 "register_operand" "")
238+ (SE:<V_double_width>(match_operand:VDI 1 "register_operand"))]
239+ "TARGET_NEON"
240+{
241+ rtx tmpreg = gen_reg_rtx (<V_widen>mode);
242+ emit_insn (gen_neon_unpack<US>_<mode> (tmpreg, operands[1]));
243+ emit_insn (gen_neon_vget_high<V_widen_l> (operands[0], tmpreg));
244+
245+ DONE;
246+}
247+)
248+
249+(define_insn "neon_vec_<US>mult_<mode>"
250+ [(set (match_operand:<V_widen> 0 "register_operand" "=w")
251+ (mult:<V_widen> (SE:<V_widen>
252+ (match_operand:VDI 1 "register_operand" "w"))
253+ (SE:<V_widen>
254+ (match_operand:VDI 2 "register_operand" "w"))))]
255+ "TARGET_NEON"
256+ "vmull.<US><V_sz_elem> %q0, %1, %2"
257+ [(set_attr "neon_type" "neon_shift_1")]
258+)
259+
260+(define_expand "vec_widen_<US>mult_hi_<mode>"
261+ [(match_operand:<V_double_width> 0 "register_operand" "")
262+ (SE:<V_double_width> (match_operand:VDI 1 "register_operand" ""))
263+ (SE:<V_double_width> (match_operand:VDI 2 "register_operand" ""))]
264+ "TARGET_NEON"
265+ {
266+ rtx tmpreg = gen_reg_rtx (<V_widen>mode);
267+ emit_insn (gen_neon_vec_<US>mult_<mode> (tmpreg, operands[1], operands[2]));
268+ emit_insn (gen_neon_vget_high<V_widen_l> (operands[0], tmpreg));
269+
270+ DONE;
271+
272+ }
273+)
274+
275+(define_expand "vec_widen_<US>mult_lo_<mode>"
276+ [(match_operand:<V_double_width> 0 "register_operand" "")
277+ (SE:<V_double_width> (match_operand:VDI 1 "register_operand" ""))
278+ (SE:<V_double_width> (match_operand:VDI 2 "register_operand" ""))]
279+ "TARGET_NEON"
280+ {
281+ rtx tmpreg = gen_reg_rtx (<V_widen>mode);
282+ emit_insn (gen_neon_vec_<US>mult_<mode> (tmpreg, operands[1], operands[2]));
283+ emit_insn (gen_neon_vget_low<V_widen_l> (operands[0], tmpreg));
284+
285+ DONE;
286+
287+ }
288+)
289
290=== modified file 'gcc/config/arm/predicates.md'
291--- old/gcc/config/arm/predicates.md 2010-08-31 10:00:27 +0000
292+++ new/gcc/config/arm/predicates.md 2010-09-09 14:11:34 +0000
293@@ -573,3 +573,61 @@
294 (and (match_test "TARGET_32BIT")
295 (match_operand 0 "arm_di_operand"))))
296
297+;; Predicates for parallel expanders based on mode.
298+(define_special_predicate "vect_par_constant_high"
299+ (match_code "parallel")
300+{
301+ HOST_WIDE_INT count = XVECLEN (op, 0);
302+ int i;
303+ int base = GET_MODE_NUNITS (mode);
304+
305+ if ((count < 1)
306+ || (count != base/2))
307+ return false;
308+
309+ if (!VECTOR_MODE_P (mode))
310+ return false;
311+
312+ for (i = 0; i < count; i++)
313+ {
314+ rtx elt = XVECEXP (op, 0, i);
315+ int val;
316+
317+ if (GET_CODE (elt) != CONST_INT)
318+ return false;
319+
320+ val = INTVAL (elt);
321+ if (val != (base/2) + i)
322+ return false;
323+ }
324+ return true;
325+})
326+
327+(define_special_predicate "vect_par_constant_low"
328+ (match_code "parallel")
329+{
330+ HOST_WIDE_INT count = XVECLEN (op, 0);
331+ int i;
332+ int base = GET_MODE_NUNITS (mode);
333+
334+ if ((count < 1)
335+ || (count != base/2))
336+ return false;
337+
338+ if (!VECTOR_MODE_P (mode))
339+ return false;
340+
341+ for (i = 0; i < count; i++)
342+ {
343+ rtx elt = XVECEXP (op, 0, i);
344+ int val;
345+
346+ if (GET_CODE (elt) != CONST_INT)
347+ return false;
348+
349+ val = INTVAL (elt);
350+ if (val != i)
351+ return false;
352+ }
353+ return true;
354+})
355
356=== modified file 'gcc/testsuite/lib/target-supports.exp'
357--- old/gcc/testsuite/lib/target-supports.exp 2010-08-24 13:00:03 +0000
358+++ new/gcc/testsuite/lib/target-supports.exp 2010-09-09 14:11:34 +0000
359@@ -2519,7 +2519,8 @@
360 if { ([istarget powerpc*-*-*] && ![istarget powerpc-*paired*])
361 || [istarget i?86-*-*]
362 || [istarget x86_64-*-*]
363- || [istarget spu-*-*] } {
364+ || [istarget spu-*-*]
365+ || ([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
366 set et_vect_unpack_saved 1
367 }
368 }
369
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99384.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99384.patch
new file mode 100644
index 000000000..89c04a894
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99384.patch
@@ -0,0 +1,1202 @@
1 2010-08-18 Marcus Shawcroft <marcus.shawcroft@arm.com>
2 * config/arm/arm-protos.h (arm_expand_sync): New.
3 (arm_output_memory_barrier, arm_output_sync_insn): New.
4 (arm_sync_loop_insns): New.
5 * config/arm/arm.c (FL_ARCH7): New.
6 (FL_FOR_ARCH7): Include FL_ARCH7.
7 (arm_arch7): New.
8 (arm_print_operand): Support %C markup.
9 (arm_legitimize_sync_memory): New.
10 (arm_emit, arm_insn_count, arm_count, arm_output_asm_insn): New.
11 (arm_process_output_memory_barrier, arm_output_memory_barrier): New.
12 (arm_ldrex_suffix, arm_output_ldrex, arm_output_strex): New.
13 (arm_output_op2, arm_output_op3, arm_output_sync_loop): New.
14 (arm_get_sync_operand, FETCH_SYNC_OPERAND): New.
15 (arm_process_output_sync_insn, arm_output_sync_insn): New.
16 (arm_sync_loop_insns,arm_call_generator, arm_expand_sync): New.
17 * config/arm/arm.h (struct arm_sync_generator): New.
18 (TARGET_HAVE_DMB, TARGET_HAVE_DMB_MCR): New.
19 (TARGET_HAVE_MEMORY_BARRIER): New.
20 (TARGET_HAVE_LDREX, TARGET_HAVE_LDREXBHD): New.
21 * config/arm/arm.md: Include sync.md.
22 (UNSPEC_MEMORY_BARRIER): New.
23 (VUNSPEC_SYNC_COMPARE_AND_SWAP, VUNSPEC_SYNC_LOCK): New.
24 (VUNSPEC_SYNC_OP):New.
25 (VUNSPEC_SYNC_NEW_OP, VUNSPEC_SYNC_OLD_OP): New.
26 (sync_result, sync_memory, sync_required_value): New attributes.
27 (sync_new_value, sync_t1, sync_t2): Likewise.
28 (sync_release_barrier, sync_op): Likewise.
29 (length): Add logic to length attribute defintion to call
30 arm_sync_loop_insns when appropriate.
31 * config/arm/sync.md: New file.
32
332010-09-09 Andrew Stubbs <ams@codesourcery.com>
34
35 Backport from mainline:
36
37 2010-08-25 Tejas Belagod <tejas.belagod@arm.com>
38 * config/arm/iterators.md (VU, SE, V_widen_l): New.
39 (V_unpack, US): New.
40
41=== modified file 'gcc/config/arm/arm-protos.h'
42--- old/gcc/config/arm/arm-protos.h 2010-08-24 13:15:54 +0000
43+++ new/gcc/config/arm/arm-protos.h 2010-09-09 15:03:00 +0000
44@@ -148,6 +148,11 @@
45 extern void arm_set_return_address (rtx, rtx);
46 extern int arm_eliminable_register (rtx);
47 extern const char *arm_output_shift(rtx *, int);
48+extern void arm_expand_sync (enum machine_mode, struct arm_sync_generator *,
49+ rtx, rtx, rtx, rtx);
50+extern const char *arm_output_memory_barrier (rtx *);
51+extern const char *arm_output_sync_insn (rtx, rtx *);
52+extern unsigned int arm_sync_loop_insns (rtx , rtx *);
53
54 extern bool arm_output_addr_const_extra (FILE *, rtx);
55
56
57=== modified file 'gcc/config/arm/arm.c'
58--- old/gcc/config/arm/arm.c 2010-09-01 13:29:58 +0000
59+++ new/gcc/config/arm/arm.c 2010-09-09 15:03:00 +0000
60@@ -605,6 +605,7 @@
61 #define FL_NEON (1 << 20) /* Neon instructions. */
62 #define FL_ARCH7EM (1 << 21) /* Instructions present in the ARMv7E-M
63 architecture. */
64+#define FL_ARCH7 (1 << 22) /* Architecture 7. */
65
66 #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */
67
68@@ -625,7 +626,7 @@
69 #define FL_FOR_ARCH6ZK FL_FOR_ARCH6K
70 #define FL_FOR_ARCH6T2 (FL_FOR_ARCH6 | FL_THUMB2)
71 #define FL_FOR_ARCH6M (FL_FOR_ARCH6 & ~FL_NOTM)
72-#define FL_FOR_ARCH7 (FL_FOR_ARCH6T2 &~ FL_NOTM)
73+#define FL_FOR_ARCH7 ((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
74 #define FL_FOR_ARCH7A (FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
75 #define FL_FOR_ARCH7R (FL_FOR_ARCH7A | FL_DIV)
76 #define FL_FOR_ARCH7M (FL_FOR_ARCH7 | FL_DIV)
77@@ -663,6 +664,9 @@
78 /* Nonzero if this chip supports the ARM 6K extensions. */
79 int arm_arch6k = 0;
80
81+/* Nonzero if this chip supports the ARM 7 extensions. */
82+int arm_arch7 = 0;
83+
84 /* Nonzero if instructions not present in the 'M' profile can be used. */
85 int arm_arch_notm = 0;
86
87@@ -1634,6 +1638,7 @@
88 arm_arch6 = (insn_flags & FL_ARCH6) != 0;
89 arm_arch6k = (insn_flags & FL_ARCH6K) != 0;
90 arm_arch_notm = (insn_flags & FL_NOTM) != 0;
91+ arm_arch7 = (insn_flags & FL_ARCH7) != 0;
92 arm_arch7em = (insn_flags & FL_ARCH7EM) != 0;
93 arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
94 arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
95@@ -16561,6 +16566,17 @@
96 }
97 return;
98
99+ case 'C':
100+ {
101+ rtx addr;
102+
103+ gcc_assert (GET_CODE (x) == MEM);
104+ addr = XEXP (x, 0);
105+ gcc_assert (GET_CODE (addr) == REG);
106+ asm_fprintf (stream, "[%r]", REGNO (addr));
107+ }
108+ return;
109+
110 /* Translate an S register number into a D register number and element index. */
111 case 'y':
112 {
113@@ -22763,4 +22779,372 @@
114 is_packed);
115 }
116
117+/* Legitimize a memory reference for sync primitive implemented using
118+ ldrex / strex. We currently force the form of the reference to be
119+ indirect without offset. We do not yet support the indirect offset
120+ addressing supported by some ARM targets for these
121+ instructions. */
122+static rtx
123+arm_legitimize_sync_memory (rtx memory)
124+{
125+ rtx addr = force_reg (Pmode, XEXP (memory, 0));
126+ rtx legitimate_memory = gen_rtx_MEM (GET_MODE (memory), addr);
127+
128+ set_mem_alias_set (legitimate_memory, ALIAS_SET_MEMORY_BARRIER);
129+ MEM_VOLATILE_P (legitimate_memory) = MEM_VOLATILE_P (memory);
130+ return legitimate_memory;
131+}
132+
133+/* An instruction emitter. */
134+typedef void (* emit_f) (int label, const char *, rtx *);
135+
136+/* An instruction emitter that emits via the conventional
137+ output_asm_insn. */
138+static void
139+arm_emit (int label ATTRIBUTE_UNUSED, const char *pattern, rtx *operands)
140+{
141+ output_asm_insn (pattern, operands);
142+}
143+
144+/* Count the number of emitted synchronization instructions. */
145+static unsigned arm_insn_count;
146+
147+/* An emitter that counts emitted instructions but does not actually
148+ emit instruction into the the instruction stream. */
149+static void
150+arm_count (int label,
151+ const char *pattern ATTRIBUTE_UNUSED,
152+ rtx *operands ATTRIBUTE_UNUSED)
153+{
154+ if (! label)
155+ ++ arm_insn_count;
156+}
157+
158+/* Construct a pattern using conventional output formatting and feed
159+ it to output_asm_insn. Provides a mechanism to construct the
160+ output pattern on the fly. Note the hard limit on the pattern
161+ buffer size. */
162+static void
163+arm_output_asm_insn (emit_f emit, int label, rtx *operands,
164+ const char *pattern, ...)
165+{
166+ va_list ap;
167+ char buffer[256];
168+
169+ va_start (ap, pattern);
170+ vsprintf (buffer, pattern, ap);
171+ va_end (ap);
172+ emit (label, buffer, operands);
173+}
174+
175+/* Emit the memory barrier instruction, if any, provided by this
176+ target to a specified emitter. */
177+static void
178+arm_process_output_memory_barrier (emit_f emit, rtx *operands)
179+{
180+ if (TARGET_HAVE_DMB)
181+ {
182+ /* Note we issue a system level barrier. We should consider
183+ issuing a inner shareabilty zone barrier here instead, ie.
184+ "DMB ISH". */
185+ emit (0, "dmb\tsy", operands);
186+ return;
187+ }
188+
189+ if (TARGET_HAVE_DMB_MCR)
190+ {
191+ emit (0, "mcr\tp15, 0, r0, c7, c10, 5", operands);
192+ return;
193+ }
194+
195+ gcc_unreachable ();
196+}
197+
198+/* Emit the memory barrier instruction, if any, provided by this
199+ target. */
200+const char *
201+arm_output_memory_barrier (rtx *operands)
202+{
203+ arm_process_output_memory_barrier (arm_emit, operands);
204+ return "";
205+}
206+
207+/* Helper to figure out the instruction suffix required on ldrex/strex
208+ for operations on an object of the specified mode. */
209+static const char *
210+arm_ldrex_suffix (enum machine_mode mode)
211+{
212+ switch (mode)
213+ {
214+ case QImode: return "b";
215+ case HImode: return "h";
216+ case SImode: return "";
217+ case DImode: return "d";
218+ default:
219+ gcc_unreachable ();
220+ }
221+ return "";
222+}
223+
224+/* Emit an ldrex{b,h,d, } instruction appropriate for the specified
225+ mode. */
226+static void
227+arm_output_ldrex (emit_f emit,
228+ enum machine_mode mode,
229+ rtx target,
230+ rtx memory)
231+{
232+ const char *suffix = arm_ldrex_suffix (mode);
233+ rtx operands[2];
234+
235+ operands[0] = target;
236+ operands[1] = memory;
237+ arm_output_asm_insn (emit, 0, operands, "ldrex%s\t%%0, %%C1", suffix);
238+}
239+
240+/* Emit a strex{b,h,d, } instruction appropriate for the specified
241+ mode. */
242+static void
243+arm_output_strex (emit_f emit,
244+ enum machine_mode mode,
245+ const char *cc,
246+ rtx result,
247+ rtx value,
248+ rtx memory)
249+{
250+ const char *suffix = arm_ldrex_suffix (mode);
251+ rtx operands[3];
252+
253+ operands[0] = result;
254+ operands[1] = value;
255+ operands[2] = memory;
256+ arm_output_asm_insn (emit, 0, operands, "strex%s%s\t%%0, %%1, %%C2", suffix,
257+ cc);
258+}
259+
260+/* Helper to emit a two operand instruction. */
261+static void
262+arm_output_op2 (emit_f emit, const char *mnemonic, rtx d, rtx s)
263+{
264+ rtx operands[2];
265+
266+ operands[0] = d;
267+ operands[1] = s;
268+ arm_output_asm_insn (emit, 0, operands, "%s\t%%0, %%1", mnemonic);
269+}
270+
271+/* Helper to emit a three operand instruction. */
272+static void
273+arm_output_op3 (emit_f emit, const char *mnemonic, rtx d, rtx a, rtx b)
274+{
275+ rtx operands[3];
276+
277+ operands[0] = d;
278+ operands[1] = a;
279+ operands[2] = b;
280+ arm_output_asm_insn (emit, 0, operands, "%s\t%%0, %%1, %%2", mnemonic);
281+}
282+
283+/* Emit a load store exclusive synchronization loop.
284+
285+ do
286+ old_value = [mem]
287+ if old_value != required_value
288+ break;
289+ t1 = sync_op (old_value, new_value)
290+ [mem] = t1, t2 = [0|1]
291+ while ! t2
292+
293+ Note:
294+ t1 == t2 is not permitted
295+ t1 == old_value is permitted
296+
297+ required_value:
298+
299+ RTX register or const_int representing the required old_value for
300+ the modify to continue, if NULL no comparsion is performed. */
301+static void
302+arm_output_sync_loop (emit_f emit,
303+ enum machine_mode mode,
304+ rtx old_value,
305+ rtx memory,
306+ rtx required_value,
307+ rtx new_value,
308+ rtx t1,
309+ rtx t2,
310+ enum attr_sync_op sync_op,
311+ int early_barrier_required)
312+{
313+ rtx operands[1];
314+
315+ gcc_assert (t1 != t2);
316+
317+ if (early_barrier_required)
318+ arm_process_output_memory_barrier (emit, NULL);
319+
320+ arm_output_asm_insn (emit, 1, operands, "%sLSYT%%=:", LOCAL_LABEL_PREFIX);
321+
322+ arm_output_ldrex (emit, mode, old_value, memory);
323+
324+ if (required_value)
325+ {
326+ rtx operands[2];
327+
328+ operands[0] = old_value;
329+ operands[1] = required_value;
330+ arm_output_asm_insn (emit, 0, operands, "cmp\t%%0, %%1");
331+ arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYB%%=", LOCAL_LABEL_PREFIX);
332+ }
333+
334+ switch (sync_op)
335+ {
336+ case SYNC_OP_ADD:
337+ arm_output_op3 (emit, "add", t1, old_value, new_value);
338+ break;
339+
340+ case SYNC_OP_SUB:
341+ arm_output_op3 (emit, "sub", t1, old_value, new_value);
342+ break;
343+
344+ case SYNC_OP_IOR:
345+ arm_output_op3 (emit, "orr", t1, old_value, new_value);
346+ break;
347+
348+ case SYNC_OP_XOR:
349+ arm_output_op3 (emit, "eor", t1, old_value, new_value);
350+ break;
351+
352+ case SYNC_OP_AND:
353+ arm_output_op3 (emit,"and", t1, old_value, new_value);
354+ break;
355+
356+ case SYNC_OP_NAND:
357+ arm_output_op3 (emit, "and", t1, old_value, new_value);
358+ arm_output_op2 (emit, "mvn", t1, t1);
359+ break;
360+
361+ case SYNC_OP_NONE:
362+ t1 = new_value;
363+ break;
364+ }
365+
366+ arm_output_strex (emit, mode, "", t2, t1, memory);
367+ operands[0] = t2;
368+ arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
369+ arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=", LOCAL_LABEL_PREFIX);
370+
371+ arm_process_output_memory_barrier (emit, NULL);
372+ arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
373+}
374+
375+static rtx
376+arm_get_sync_operand (rtx *operands, int index, rtx default_value)
377+{
378+ if (index > 0)
379+ default_value = operands[index - 1];
380+
381+ return default_value;
382+}
383+
384+#define FETCH_SYNC_OPERAND(NAME, DEFAULT) \
385+ arm_get_sync_operand (operands, (int) get_attr_sync_##NAME (insn), DEFAULT);
386+
387+/* Extract the operands for a synchroniztion instruction from the
388+ instructions attributes and emit the instruction. */
389+static void
390+arm_process_output_sync_insn (emit_f emit, rtx insn, rtx *operands)
391+{
392+ rtx result, memory, required_value, new_value, t1, t2;
393+ int early_barrier;
394+ enum machine_mode mode;
395+ enum attr_sync_op sync_op;
396+
397+ result = FETCH_SYNC_OPERAND(result, 0);
398+ memory = FETCH_SYNC_OPERAND(memory, 0);
399+ required_value = FETCH_SYNC_OPERAND(required_value, 0);
400+ new_value = FETCH_SYNC_OPERAND(new_value, 0);
401+ t1 = FETCH_SYNC_OPERAND(t1, 0);
402+ t2 = FETCH_SYNC_OPERAND(t2, 0);
403+ early_barrier =
404+ get_attr_sync_release_barrier (insn) == SYNC_RELEASE_BARRIER_YES;
405+ sync_op = get_attr_sync_op (insn);
406+ mode = GET_MODE (memory);
407+
408+ arm_output_sync_loop (emit, mode, result, memory, required_value,
409+ new_value, t1, t2, sync_op, early_barrier);
410+}
411+
412+/* Emit a synchronization instruction loop. */
413+const char *
414+arm_output_sync_insn (rtx insn, rtx *operands)
415+{
416+ arm_process_output_sync_insn (arm_emit, insn, operands);
417+ return "";
418+}
419+
420+/* Count the number of machine instruction that will be emitted for a
421+ synchronization instruction. Note that the emitter used does not
422+ emit instructions, it just counts instructions being carefull not
423+ to count labels. */
424+unsigned int
425+arm_sync_loop_insns (rtx insn, rtx *operands)
426+{
427+ arm_insn_count = 0;
428+ arm_process_output_sync_insn (arm_count, insn, operands);
429+ return arm_insn_count;
430+}
431+
432+/* Helper to call a target sync instruction generator, dealing with
433+ the variation in operands required by the different generators. */
434+static rtx
435+arm_call_generator (struct arm_sync_generator *generator, rtx old_value,
436+ rtx memory, rtx required_value, rtx new_value)
437+{
438+ switch (generator->op)
439+ {
440+ case arm_sync_generator_omn:
441+ gcc_assert (! required_value);
442+ return generator->u.omn (old_value, memory, new_value);
443+
444+ case arm_sync_generator_omrn:
445+ gcc_assert (required_value);
446+ return generator->u.omrn (old_value, memory, required_value, new_value);
447+ }
448+
449+ return NULL;
450+}
451+
452+/* Expand a synchronization loop. The synchronization loop is expanded
453+ as an opaque block of instructions in order to ensure that we do
454+ not subsequently get extraneous memory accesses inserted within the
455+ critical region. The exclusive access property of ldrex/strex is
456+ only guaranteed in there are no intervening memory accesses. */
457+void
458+arm_expand_sync (enum machine_mode mode,
459+ struct arm_sync_generator *generator,
460+ rtx target, rtx memory, rtx required_value, rtx new_value)
461+{
462+ if (target == NULL)
463+ target = gen_reg_rtx (mode);
464+
465+ memory = arm_legitimize_sync_memory (memory);
466+ if (mode != SImode)
467+ {
468+ rtx load_temp = gen_reg_rtx (SImode);
469+
470+ if (required_value)
471+ required_value = convert_modes (SImode, mode, required_value, true);
472+
473+ new_value = convert_modes (SImode, mode, new_value, true);
474+ emit_insn (arm_call_generator (generator, load_temp, memory,
475+ required_value, new_value));
476+ emit_move_insn (target, gen_lowpart (mode, load_temp));
477+ }
478+ else
479+ {
480+ emit_insn (arm_call_generator (generator, target, memory, required_value,
481+ new_value));
482+ }
483+}
484+
485 #include "gt-arm.h"
486
487=== modified file 'gcc/config/arm/arm.h'
488--- old/gcc/config/arm/arm.h 2010-09-01 13:29:58 +0000
489+++ new/gcc/config/arm/arm.h 2010-09-09 15:03:00 +0000
490@@ -128,6 +128,24 @@
491 /* The processor for which instructions should be scheduled. */
492 extern enum processor_type arm_tune;
493
494+enum arm_sync_generator_tag
495+ {
496+ arm_sync_generator_omn,
497+ arm_sync_generator_omrn
498+ };
499+
500+/* Wrapper to pass around a polymorphic pointer to a sync instruction
501+ generator and. */
502+struct arm_sync_generator
503+{
504+ enum arm_sync_generator_tag op;
505+ union
506+ {
507+ rtx (* omn) (rtx, rtx, rtx);
508+ rtx (* omrn) (rtx, rtx, rtx, rtx);
509+ } u;
510+};
511+
512 typedef enum arm_cond_code
513 {
514 ARM_EQ = 0, ARM_NE, ARM_CS, ARM_CC, ARM_MI, ARM_PL, ARM_VS, ARM_VC,
515@@ -272,6 +290,20 @@
516 for Thumb-2. */
517 #define TARGET_UNIFIED_ASM TARGET_THUMB2
518
519+/* Nonzero if this chip provides the DMB instruction. */
520+#define TARGET_HAVE_DMB (arm_arch7)
521+
522+/* Nonzero if this chip implements a memory barrier via CP15. */
523+#define TARGET_HAVE_DMB_MCR (arm_arch6k && ! TARGET_HAVE_DMB)
524+
525+/* Nonzero if this chip implements a memory barrier instruction. */
526+#define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
527+
528+/* Nonzero if this chip supports ldrex and strex */
529+#define TARGET_HAVE_LDREX ((arm_arch6 && TARGET_ARM) || arm_arch7)
530+
531+/* Nonzero if this chip supports ldrex{bhd} and strex{bhd}. */
532+#define TARGET_HAVE_LDREXBHD ((arm_arch6k && TARGET_ARM) || arm_arch7)
533
534 /* True iff the full BPABI is being used. If TARGET_BPABI is true,
535 then TARGET_AAPCS_BASED must be true -- but the converse does not
536@@ -405,6 +437,12 @@
537 /* Nonzero if this chip supports the ARM Architecture 6 extensions. */
538 extern int arm_arch6;
539
540+/* Nonzero if this chip supports the ARM Architecture 6k extensions. */
541+extern int arm_arch6k;
542+
543+/* Nonzero if this chip supports the ARM Architecture 7 extensions. */
544+extern int arm_arch7;
545+
546 /* Nonzero if instructions not present in the 'M' profile can be used. */
547 extern int arm_arch_notm;
548
549
550=== modified file 'gcc/config/arm/arm.md'
551--- old/gcc/config/arm/arm.md 2010-09-09 14:11:34 +0000
552+++ new/gcc/config/arm/arm.md 2010-09-09 15:03:00 +0000
553@@ -103,6 +103,7 @@
554 (UNSPEC_RBIT 26) ; rbit operation.
555 (UNSPEC_SYMBOL_OFFSET 27) ; The offset of the start of the symbol from
556 ; another symbolic address.
557+ (UNSPEC_MEMORY_BARRIER 28) ; Represent a memory barrier.
558 ]
559 )
560
561@@ -139,6 +140,11 @@
562 (VUNSPEC_ALIGN32 16) ; Used to force 32-byte alignment.
563 (VUNSPEC_EH_RETURN 20); Use to override the return address for exception
564 ; handling.
565+ (VUNSPEC_SYNC_COMPARE_AND_SWAP 21) ; Represent an atomic compare swap.
566+ (VUNSPEC_SYNC_LOCK 22) ; Represent a sync_lock_test_and_set.
567+ (VUNSPEC_SYNC_OP 23) ; Represent a sync_<op>
568+ (VUNSPEC_SYNC_NEW_OP 24) ; Represent a sync_new_<op>
569+ (VUNSPEC_SYNC_OLD_OP 25) ; Represent a sync_old_<op>
570 ]
571 )
572
573@@ -163,8 +169,21 @@
574 (define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp"
575 (const (symbol_ref "arm_fpu_attr")))
576
577+(define_attr "sync_result" "none,0,1,2,3,4,5" (const_string "none"))
578+(define_attr "sync_memory" "none,0,1,2,3,4,5" (const_string "none"))
579+(define_attr "sync_required_value" "none,0,1,2,3,4,5" (const_string "none"))
580+(define_attr "sync_new_value" "none,0,1,2,3,4,5" (const_string "none"))
581+(define_attr "sync_t1" "none,0,1,2,3,4,5" (const_string "none"))
582+(define_attr "sync_t2" "none,0,1,2,3,4,5" (const_string "none"))
583+(define_attr "sync_release_barrier" "yes,no" (const_string "yes"))
584+(define_attr "sync_op" "none,add,sub,ior,xor,and,nand"
585+ (const_string "none"))
586+
587 ; LENGTH of an instruction (in bytes)
588-(define_attr "length" "" (const_int 4))
589+(define_attr "length" ""
590+ (cond [(not (eq_attr "sync_memory" "none"))
591+ (symbol_ref "arm_sync_loop_insns (insn, operands) * 4")
592+ ] (const_int 4)))
593
594 ; POOL_RANGE is how far away from a constant pool entry that this insn
595 ; can be placed. If the distance is zero, then this insn will never
596@@ -11530,4 +11549,5 @@
597 (include "thumb2.md")
598 ;; Neon patterns
599 (include "neon.md")
600-
601+;; Synchronization Primitives
602+(include "sync.md")
603
604=== added file 'gcc/config/arm/sync.md'
605--- old/gcc/config/arm/sync.md 1970-01-01 00:00:00 +0000
606+++ new/gcc/config/arm/sync.md 2010-09-09 15:03:00 +0000
607@@ -0,0 +1,594 @@
608+;; Machine description for ARM processor synchronization primitives.
609+;; Copyright (C) 2010 Free Software Foundation, Inc.
610+;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com)
611+;;
612+;; This file is part of GCC.
613+;;
614+;; GCC is free software; you can redistribute it and/or modify it
615+;; under the terms of the GNU General Public License as published by
616+;; the Free Software Foundation; either version 3, or (at your option)
617+;; any later version.
618+;;
619+;; GCC is distributed in the hope that it will be useful, but
620+;; WITHOUT ANY WARRANTY; without even the implied warranty of
621+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
622+;; General Public License for more details.
623+;;
624+;; You should have received a copy of the GNU General Public License
625+;; along with GCC; see the file COPYING3. If not see
626+;; <http://www.gnu.org/licenses/>. */
627+
628+;; ARMV6 introduced ldrex and strex instruction. These instruction
629+;; access SI width data. In order to implement synchronization
630+;; primitives for the narrower QI and HI modes we insert appropriate
631+;; AND/OR sequences into the synchronization loop to mask out the
632+;; relevant component of an SI access.
633+
634+(define_expand "memory_barrier"
635+ [(set (match_dup 0)
636+ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
637+ "TARGET_HAVE_MEMORY_BARRIER"
638+{
639+ operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
640+ MEM_VOLATILE_P (operands[0]) = 1;
641+})
642+
643+(define_expand "sync_compare_and_swapsi"
644+ [(set (match_operand:SI 0 "s_register_operand")
645+ (unspec_volatile:SI [(match_operand:SI 1 "memory_operand")
646+ (match_operand:SI 2 "s_register_operand")
647+ (match_operand:SI 3 "s_register_operand")]
648+ VUNSPEC_SYNC_COMPARE_AND_SWAP))]
649+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
650+ {
651+ struct arm_sync_generator generator;
652+ generator.op = arm_sync_generator_omrn;
653+ generator.u.omrn = gen_arm_sync_compare_and_swapsi;
654+ arm_expand_sync (SImode, &generator, operands[0], operands[1], operands[2],
655+ operands[3]);
656+ DONE;
657+ })
658+
659+(define_mode_iterator NARROW [QI HI])
660+
661+(define_expand "sync_compare_and_swap<mode>"
662+ [(set (match_operand:NARROW 0 "s_register_operand")
663+ (unspec_volatile:NARROW [(match_operand:NARROW 1 "memory_operand")
664+ (match_operand:NARROW 2 "s_register_operand")
665+ (match_operand:NARROW 3 "s_register_operand")]
666+ VUNSPEC_SYNC_COMPARE_AND_SWAP))]
667+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
668+ {
669+ struct arm_sync_generator generator;
670+ generator.op = arm_sync_generator_omrn;
671+ generator.u.omrn = gen_arm_sync_compare_and_swap<mode>;
672+ arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
673+ operands[2], operands[3]);
674+ DONE;
675+ })
676+
677+(define_expand "sync_lock_test_and_setsi"
678+ [(match_operand:SI 0 "s_register_operand")
679+ (match_operand:SI 1 "memory_operand")
680+ (match_operand:SI 2 "s_register_operand")]
681+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
682+ {
683+ struct arm_sync_generator generator;
684+ generator.op = arm_sync_generator_omn;
685+ generator.u.omn = gen_arm_sync_lock_test_and_setsi;
686+ arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
687+ operands[2]);
688+ DONE;
689+ })
690+
691+(define_expand "sync_lock_test_and_set<mode>"
692+ [(match_operand:NARROW 0 "s_register_operand")
693+ (match_operand:NARROW 1 "memory_operand")
694+ (match_operand:NARROW 2 "s_register_operand")]
695+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
696+ {
697+ struct arm_sync_generator generator;
698+ generator.op = arm_sync_generator_omn;
699+ generator.u.omn = gen_arm_sync_lock_test_and_set<mode>;
700+ arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1], NULL,
701+ operands[2]);
702+ DONE;
703+ })
704+
705+(define_code_iterator syncop [plus minus ior xor and])
706+
707+(define_code_attr sync_optab [(ior "ior")
708+ (xor "xor")
709+ (and "and")
710+ (plus "add")
711+ (minus "sub")])
712+
713+(define_expand "sync_<sync_optab>si"
714+ [(match_operand:SI 0 "memory_operand")
715+ (match_operand:SI 1 "s_register_operand")
716+ (syncop:SI (match_dup 0) (match_dup 1))]
717+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
718+ {
719+ struct arm_sync_generator generator;
720+ generator.op = arm_sync_generator_omn;
721+ generator.u.omn = gen_arm_sync_new_<sync_optab>si;
722+ arm_expand_sync (SImode, &generator, NULL, operands[0], NULL, operands[1]);
723+ DONE;
724+ })
725+
726+(define_expand "sync_nandsi"
727+ [(match_operand:SI 0 "memory_operand")
728+ (match_operand:SI 1 "s_register_operand")
729+ (not:SI (and:SI (match_dup 0) (match_dup 1)))]
730+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
731+ {
732+ struct arm_sync_generator generator;
733+ generator.op = arm_sync_generator_omn;
734+ generator.u.omn = gen_arm_sync_new_nandsi;
735+ arm_expand_sync (SImode, &generator, NULL, operands[0], NULL, operands[1]);
736+ DONE;
737+ })
738+
739+(define_expand "sync_<sync_optab><mode>"
740+ [(match_operand:NARROW 0 "memory_operand")
741+ (match_operand:NARROW 1 "s_register_operand")
742+ (syncop:NARROW (match_dup 0) (match_dup 1))]
743+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
744+ {
745+ struct arm_sync_generator generator;
746+ generator.op = arm_sync_generator_omn;
747+ generator.u.omn = gen_arm_sync_new_<sync_optab><mode>;
748+ arm_expand_sync (<MODE>mode, &generator, NULL, operands[0], NULL,
749+ operands[1]);
750+ DONE;
751+ })
752+
753+(define_expand "sync_nand<mode>"
754+ [(match_operand:NARROW 0 "memory_operand")
755+ (match_operand:NARROW 1 "s_register_operand")
756+ (not:NARROW (and:NARROW (match_dup 0) (match_dup 1)))]
757+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
758+ {
759+ struct arm_sync_generator generator;
760+ generator.op = arm_sync_generator_omn;
761+ generator.u.omn = gen_arm_sync_new_nand<mode>;
762+ arm_expand_sync (<MODE>mode, &generator, NULL, operands[0], NULL,
763+ operands[1]);
764+ DONE;
765+ })
766+
767+(define_expand "sync_new_<sync_optab>si"
768+ [(match_operand:SI 0 "s_register_operand")
769+ (match_operand:SI 1 "memory_operand")
770+ (match_operand:SI 2 "s_register_operand")
771+ (syncop:SI (match_dup 1) (match_dup 2))]
772+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
773+ {
774+ struct arm_sync_generator generator;
775+ generator.op = arm_sync_generator_omn;
776+ generator.u.omn = gen_arm_sync_new_<sync_optab>si;
777+ arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
778+ operands[2]);
779+ DONE;
780+ })
781+
782+(define_expand "sync_new_nandsi"
783+ [(match_operand:SI 0 "s_register_operand")
784+ (match_operand:SI 1 "memory_operand")
785+ (match_operand:SI 2 "s_register_operand")
786+ (not:SI (and:SI (match_dup 1) (match_dup 2)))]
787+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
788+ {
789+ struct arm_sync_generator generator;
790+ generator.op = arm_sync_generator_omn;
791+ generator.u.omn = gen_arm_sync_new_nandsi;
792+ arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
793+ operands[2]);
794+ DONE;
795+ })
796+
797+(define_expand "sync_new_<sync_optab><mode>"
798+ [(match_operand:NARROW 0 "s_register_operand")
799+ (match_operand:NARROW 1 "memory_operand")
800+ (match_operand:NARROW 2 "s_register_operand")
801+ (syncop:NARROW (match_dup 1) (match_dup 2))]
802+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
803+ {
804+ struct arm_sync_generator generator;
805+ generator.op = arm_sync_generator_omn;
806+ generator.u.omn = gen_arm_sync_new_<sync_optab><mode>;
807+ arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
808+ NULL, operands[2]);
809+ DONE;
810+ })
811+
812+(define_expand "sync_new_nand<mode>"
813+ [(match_operand:NARROW 0 "s_register_operand")
814+ (match_operand:NARROW 1 "memory_operand")
815+ (match_operand:NARROW 2 "s_register_operand")
816+ (not:NARROW (and:NARROW (match_dup 1) (match_dup 2)))]
817+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
818+ {
819+ struct arm_sync_generator generator;
820+ generator.op = arm_sync_generator_omn;
821+ generator.u.omn = gen_arm_sync_new_nand<mode>;
822+ arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
823+ NULL, operands[2]);
824+ DONE;
825+ });
826+
827+(define_expand "sync_old_<sync_optab>si"
828+ [(match_operand:SI 0 "s_register_operand")
829+ (match_operand:SI 1 "memory_operand")
830+ (match_operand:SI 2 "s_register_operand")
831+ (syncop:SI (match_dup 1) (match_dup 2))]
832+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
833+ {
834+ struct arm_sync_generator generator;
835+ generator.op = arm_sync_generator_omn;
836+ generator.u.omn = gen_arm_sync_old_<sync_optab>si;
837+ arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
838+ operands[2]);
839+ DONE;
840+ })
841+
842+(define_expand "sync_old_nandsi"
843+ [(match_operand:SI 0 "s_register_operand")
844+ (match_operand:SI 1 "memory_operand")
845+ (match_operand:SI 2 "s_register_operand")
846+ (not:SI (and:SI (match_dup 1) (match_dup 2)))]
847+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
848+ {
849+ struct arm_sync_generator generator;
850+ generator.op = arm_sync_generator_omn;
851+ generator.u.omn = gen_arm_sync_old_nandsi;
852+ arm_expand_sync (SImode, &generator, operands[0], operands[1], NULL,
853+ operands[2]);
854+ DONE;
855+ })
856+
857+(define_expand "sync_old_<sync_optab><mode>"
858+ [(match_operand:NARROW 0 "s_register_operand")
859+ (match_operand:NARROW 1 "memory_operand")
860+ (match_operand:NARROW 2 "s_register_operand")
861+ (syncop:NARROW (match_dup 1) (match_dup 2))]
862+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
863+ {
864+ struct arm_sync_generator generator;
865+ generator.op = arm_sync_generator_omn;
866+ generator.u.omn = gen_arm_sync_old_<sync_optab><mode>;
867+ arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
868+ NULL, operands[2]);
869+ DONE;
870+ })
871+
872+(define_expand "sync_old_nand<mode>"
873+ [(match_operand:NARROW 0 "s_register_operand")
874+ (match_operand:NARROW 1 "memory_operand")
875+ (match_operand:NARROW 2 "s_register_operand")
876+ (not:NARROW (and:NARROW (match_dup 1) (match_dup 2)))]
877+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
878+ {
879+ struct arm_sync_generator generator;
880+ generator.op = arm_sync_generator_omn;
881+ generator.u.omn = gen_arm_sync_old_nand<mode>;
882+ arm_expand_sync (<MODE>mode, &generator, operands[0], operands[1],
883+ NULL, operands[2]);
884+ DONE;
885+ })
886+
887+(define_insn "arm_sync_compare_and_swapsi"
888+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
889+ (unspec_volatile:SI
890+ [(match_operand:SI 1 "memory_operand" "+m")
891+ (match_operand:SI 2 "s_register_operand" "r")
892+ (match_operand:SI 3 "s_register_operand" "r")]
893+ VUNSPEC_SYNC_COMPARE_AND_SWAP))
894+ (set (match_dup 1) (unspec_volatile:SI [(match_dup 2)]
895+ VUNSPEC_SYNC_COMPARE_AND_SWAP))
896+ (clobber:SI (match_scratch:SI 4 "=&r"))
897+ (set (reg:CC CC_REGNUM) (unspec_volatile:CC [(match_dup 1)]
898+ VUNSPEC_SYNC_COMPARE_AND_SWAP))
899+ ]
900+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
901+ {
902+ return arm_output_sync_insn (insn, operands);
903+ }
904+ [(set_attr "sync_result" "0")
905+ (set_attr "sync_memory" "1")
906+ (set_attr "sync_required_value" "2")
907+ (set_attr "sync_new_value" "3")
908+ (set_attr "sync_t1" "0")
909+ (set_attr "sync_t2" "4")
910+ (set_attr "conds" "nocond")
911+ (set_attr "predicable" "no")])
912+
913+(define_insn "arm_sync_compare_and_swap<mode>"
914+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
915+ (zero_extend:SI
916+ (unspec_volatile:NARROW
917+ [(match_operand:NARROW 1 "memory_operand" "+m")
918+ (match_operand:SI 2 "s_register_operand" "r")
919+ (match_operand:SI 3 "s_register_operand" "r")]
920+ VUNSPEC_SYNC_COMPARE_AND_SWAP)))
921+ (set (match_dup 1) (unspec_volatile:NARROW [(match_dup 2)]
922+ VUNSPEC_SYNC_COMPARE_AND_SWAP))
923+ (clobber:SI (match_scratch:SI 4 "=&r"))
924+ (set (reg:CC CC_REGNUM) (unspec_volatile:CC [(match_dup 1)]
925+ VUNSPEC_SYNC_COMPARE_AND_SWAP))
926+ ]
927+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
928+ {
929+ return arm_output_sync_insn (insn, operands);
930+ }
931+ [(set_attr "sync_result" "0")
932+ (set_attr "sync_memory" "1")
933+ (set_attr "sync_required_value" "2")
934+ (set_attr "sync_new_value" "3")
935+ (set_attr "sync_t1" "0")
936+ (set_attr "sync_t2" "4")
937+ (set_attr "conds" "nocond")
938+ (set_attr "predicable" "no")])
939+
940+(define_insn "arm_sync_lock_test_and_setsi"
941+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
942+ (match_operand:SI 1 "memory_operand" "+m"))
943+ (set (match_dup 1)
944+ (unspec_volatile:SI [(match_operand:SI 2 "s_register_operand" "r")]
945+ VUNSPEC_SYNC_LOCK))
946+ (clobber (reg:CC CC_REGNUM))
947+ (clobber (match_scratch:SI 3 "=&r"))]
948+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
949+ {
950+ return arm_output_sync_insn (insn, operands);
951+ }
952+ [(set_attr "sync_release_barrier" "no")
953+ (set_attr "sync_result" "0")
954+ (set_attr "sync_memory" "1")
955+ (set_attr "sync_new_value" "2")
956+ (set_attr "sync_t1" "0")
957+ (set_attr "sync_t2" "3")
958+ (set_attr "conds" "nocond")
959+ (set_attr "predicable" "no")])
960+
961+(define_insn "arm_sync_lock_test_and_set<mode>"
962+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
963+ (zero_extend:SI (match_operand:NARROW 1 "memory_operand" "+m")))
964+ (set (match_dup 1)
965+ (unspec_volatile:NARROW [(match_operand:SI 2 "s_register_operand" "r")]
966+ VUNSPEC_SYNC_LOCK))
967+ (clobber (reg:CC CC_REGNUM))
968+ (clobber (match_scratch:SI 3 "=&r"))]
969+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
970+ {
971+ return arm_output_sync_insn (insn, operands);
972+ }
973+ [(set_attr "sync_release_barrier" "no")
974+ (set_attr "sync_result" "0")
975+ (set_attr "sync_memory" "1")
976+ (set_attr "sync_new_value" "2")
977+ (set_attr "sync_t1" "0")
978+ (set_attr "sync_t2" "3")
979+ (set_attr "conds" "nocond")
980+ (set_attr "predicable" "no")])
981+
982+(define_insn "arm_sync_new_<sync_optab>si"
983+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
984+ (unspec_volatile:SI [(syncop:SI
985+ (match_operand:SI 1 "memory_operand" "+m")
986+ (match_operand:SI 2 "s_register_operand" "r"))
987+ ]
988+ VUNSPEC_SYNC_NEW_OP))
989+ (set (match_dup 1)
990+ (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
991+ VUNSPEC_SYNC_NEW_OP))
992+ (clobber (reg:CC CC_REGNUM))
993+ (clobber (match_scratch:SI 3 "=&r"))]
994+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
995+ {
996+ return arm_output_sync_insn (insn, operands);
997+ }
998+ [(set_attr "sync_result" "0")
999+ (set_attr "sync_memory" "1")
1000+ (set_attr "sync_new_value" "2")
1001+ (set_attr "sync_t1" "0")
1002+ (set_attr "sync_t2" "3")
1003+ (set_attr "sync_op" "<sync_optab>")
1004+ (set_attr "conds" "nocond")
1005+ (set_attr "predicable" "no")])
1006+
1007+(define_insn "arm_sync_new_nandsi"
1008+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1009+ (unspec_volatile:SI [(not:SI (and:SI
1010+ (match_operand:SI 1 "memory_operand" "+m")
1011+ (match_operand:SI 2 "s_register_operand" "r")))
1012+ ]
1013+ VUNSPEC_SYNC_NEW_OP))
1014+ (set (match_dup 1)
1015+ (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
1016+ VUNSPEC_SYNC_NEW_OP))
1017+ (clobber (reg:CC CC_REGNUM))
1018+ (clobber (match_scratch:SI 3 "=&r"))]
1019+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
1020+ {
1021+ return arm_output_sync_insn (insn, operands);
1022+ }
1023+ [(set_attr "sync_result" "0")
1024+ (set_attr "sync_memory" "1")
1025+ (set_attr "sync_new_value" "2")
1026+ (set_attr "sync_t1" "0")
1027+ (set_attr "sync_t2" "3")
1028+ (set_attr "sync_op" "nand")
1029+ (set_attr "conds" "nocond")
1030+ (set_attr "predicable" "no")])
1031+
1032+(define_insn "arm_sync_new_<sync_optab><mode>"
1033+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1034+ (unspec_volatile:SI [(syncop:SI
1035+ (zero_extend:SI
1036+ (match_operand:NARROW 1 "memory_operand" "+m"))
1037+ (match_operand:SI 2 "s_register_operand" "r"))
1038+ ]
1039+ VUNSPEC_SYNC_NEW_OP))
1040+ (set (match_dup 1)
1041+ (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
1042+ VUNSPEC_SYNC_NEW_OP))
1043+ (clobber (reg:CC CC_REGNUM))
1044+ (clobber (match_scratch:SI 3 "=&r"))]
1045+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
1046+ {
1047+ return arm_output_sync_insn (insn, operands);
1048+ }
1049+ [(set_attr "sync_result" "0")
1050+ (set_attr "sync_memory" "1")
1051+ (set_attr "sync_new_value" "2")
1052+ (set_attr "sync_t1" "0")
1053+ (set_attr "sync_t2" "3")
1054+ (set_attr "sync_op" "<sync_optab>")
1055+ (set_attr "conds" "nocond")
1056+ (set_attr "predicable" "no")])
1057+
1058+(define_insn "arm_sync_new_nand<mode>"
1059+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1060+ (unspec_volatile:SI
1061+ [(not:SI
1062+ (and:SI
1063+ (zero_extend:SI
1064+ (match_operand:NARROW 1 "memory_operand" "+m"))
1065+ (match_operand:SI 2 "s_register_operand" "r")))
1066+ ] VUNSPEC_SYNC_NEW_OP))
1067+ (set (match_dup 1)
1068+ (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
1069+ VUNSPEC_SYNC_NEW_OP))
1070+ (clobber (reg:CC CC_REGNUM))
1071+ (clobber (match_scratch:SI 3 "=&r"))]
1072+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
1073+ {
1074+ return arm_output_sync_insn (insn, operands);
1075+ }
1076+ [(set_attr "sync_result" "0")
1077+ (set_attr "sync_memory" "1")
1078+ (set_attr "sync_new_value" "2")
1079+ (set_attr "sync_t1" "0")
1080+ (set_attr "sync_t2" "3")
1081+ (set_attr "sync_op" "nand")
1082+ (set_attr "conds" "nocond")
1083+ (set_attr "predicable" "no")])
1084+
1085+(define_insn "arm_sync_old_<sync_optab>si"
1086+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1087+ (unspec_volatile:SI [(syncop:SI
1088+ (match_operand:SI 1 "memory_operand" "+m")
1089+ (match_operand:SI 2 "s_register_operand" "r"))
1090+ ]
1091+ VUNSPEC_SYNC_OLD_OP))
1092+ (set (match_dup 1)
1093+ (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
1094+ VUNSPEC_SYNC_OLD_OP))
1095+ (clobber (reg:CC CC_REGNUM))
1096+ (clobber (match_scratch:SI 3 "=&r"))
1097+ (clobber (match_scratch:SI 4 "=&r"))]
1098+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
1099+ {
1100+ return arm_output_sync_insn (insn, operands);
1101+ }
1102+ [(set_attr "sync_result" "0")
1103+ (set_attr "sync_memory" "1")
1104+ (set_attr "sync_new_value" "2")
1105+ (set_attr "sync_t1" "3")
1106+ (set_attr "sync_t2" "4")
1107+ (set_attr "sync_op" "<sync_optab>")
1108+ (set_attr "conds" "nocond")
1109+ (set_attr "predicable" "no")])
1110+
1111+(define_insn "arm_sync_old_nandsi"
1112+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1113+ (unspec_volatile:SI [(not:SI (and:SI
1114+ (match_operand:SI 1 "memory_operand" "+m")
1115+ (match_operand:SI 2 "s_register_operand" "r")))
1116+ ]
1117+ VUNSPEC_SYNC_OLD_OP))
1118+ (set (match_dup 1)
1119+ (unspec_volatile:SI [(match_dup 1) (match_dup 2)]
1120+ VUNSPEC_SYNC_OLD_OP))
1121+ (clobber (reg:CC CC_REGNUM))
1122+ (clobber (match_scratch:SI 3 "=&r"))
1123+ (clobber (match_scratch:SI 4 "=&r"))]
1124+ "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
1125+ {
1126+ return arm_output_sync_insn (insn, operands);
1127+ }
1128+ [(set_attr "sync_result" "0")
1129+ (set_attr "sync_memory" "1")
1130+ (set_attr "sync_new_value" "2")
1131+ (set_attr "sync_t1" "3")
1132+ (set_attr "sync_t2" "4")
1133+ (set_attr "sync_op" "nand")
1134+ (set_attr "conds" "nocond")
1135+ (set_attr "predicable" "no")])
1136+
1137+(define_insn "arm_sync_old_<sync_optab><mode>"
1138+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1139+ (unspec_volatile:SI [(syncop:SI
1140+ (zero_extend:SI
1141+ (match_operand:NARROW 1 "memory_operand" "+m"))
1142+ (match_operand:SI 2 "s_register_operand" "r"))
1143+ ]
1144+ VUNSPEC_SYNC_OLD_OP))
1145+ (set (match_dup 1)
1146+ (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
1147+ VUNSPEC_SYNC_OLD_OP))
1148+ (clobber (reg:CC CC_REGNUM))
1149+ (clobber (match_scratch:SI 3 "=&r"))
1150+ (clobber (match_scratch:SI 4 "=&r"))]
1151+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
1152+ {
1153+ return arm_output_sync_insn (insn, operands);
1154+ }
1155+ [(set_attr "sync_result" "0")
1156+ (set_attr "sync_memory" "1")
1157+ (set_attr "sync_new_value" "2")
1158+ (set_attr "sync_t1" "3")
1159+ (set_attr "sync_t2" "4")
1160+ (set_attr "sync_op" "<sync_optab>")
1161+ (set_attr "conds" "nocond")
1162+ (set_attr "predicable" "no")])
1163+
1164+(define_insn "arm_sync_old_nand<mode>"
1165+ [(set (match_operand:SI 0 "s_register_operand" "=&r")
1166+ (unspec_volatile:SI [(not:SI (and:SI
1167+ (zero_extend:SI
1168+ (match_operand:NARROW 1 "memory_operand" "+m"))
1169+ (match_operand:SI 2 "s_register_operand" "r")))
1170+ ]
1171+ VUNSPEC_SYNC_OLD_OP))
1172+ (set (match_dup 1)
1173+ (unspec_volatile:NARROW [(match_dup 1) (match_dup 2)]
1174+ VUNSPEC_SYNC_OLD_OP))
1175+ (clobber (reg:CC CC_REGNUM))
1176+ (clobber (match_scratch:SI 3 "=&r"))
1177+ (clobber (match_scratch:SI 4 "=&r"))]
1178+ "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
1179+ {
1180+ return arm_output_sync_insn (insn, operands);
1181+ }
1182+ [(set_attr "sync_result" "0")
1183+ (set_attr "sync_memory" "1")
1184+ (set_attr "sync_new_value" "2")
1185+ (set_attr "sync_t1" "3")
1186+ (set_attr "sync_t2" "4")
1187+ (set_attr "sync_op" "nand")
1188+ (set_attr "conds" "nocond")
1189+ (set_attr "predicable" "no")])
1190+
1191+(define_insn "*memory_barrier"
1192+ [(set (match_operand:BLK 0 "" "")
1193+ (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
1194+ "TARGET_HAVE_MEMORY_BARRIER"
1195+ {
1196+ return arm_output_memory_barrier (operands);
1197+ }
1198+ [(set_attr "length" "4")
1199+ (set_attr "conds" "unconditional")
1200+ (set_attr "predicable" "no")])
1201+
1202
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99385.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99385.patch
new file mode 100644
index 000000000..d10cf3465
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99385.patch
@@ -0,0 +1,151 @@
1 2010-09-02 Marcus Shawcroft <marcus.shawcroft@arm.com>
2 * config/arm/predicates.md (arm_sync_memory_operand): New.
3 * config/arm/sync.md (arm_sync_compare_and_swapsi): Change predicate
4 to arm_sync_memory_operand and constraint to Q.
5 (arm_sync_compare_and_swap<mode>): Likewise.
6 (arm_sync_compare_and_swap<mode>): Likewise.
7 (arm_sync_lock_test_and_setsi): Likewise.
8 (arm_sync_lock_test_and_set<mode>): Likewise.
9 (arm_sync_new_<sync_optab>si): Likewise.
10 (arm_sync_new_nandsi): Likewise.
11 (arm_sync_new_<sync_optab><mode>): Likewise.
12 (arm_sync_new_nand<mode>): Likewise.
13 (arm_sync_old_<sync_optab>si): Likewise.
14 (arm_sync_old_nandsi): Likewise.
15 (arm_sync_old_<sync_optab><mode>): Likewise.
16 (arm_sync_old_nand<mode>): Likewise.
17
182010-09-09 Andrew Stubbs <ams@codesourcery.com>
19
20 Backport from mainline:
21
22 2010-08-18 Marcus Shawcroft <marcus.shawcroft@arm.com>
23
24=== modified file 'gcc/config/arm/predicates.md'
25--- old/gcc/config/arm/predicates.md 2010-09-09 14:11:34 +0000
26+++ new/gcc/config/arm/predicates.md 2010-09-09 15:18:16 +0000
27@@ -573,6 +573,11 @@
28 (and (match_test "TARGET_32BIT")
29 (match_operand 0 "arm_di_operand"))))
30
31+;; True if the operand is memory reference suitable for a ldrex/strex.
32+(define_predicate "arm_sync_memory_operand"
33+ (and (match_operand 0 "memory_operand")
34+ (match_code "reg" "0")))
35+
36 ;; Predicates for parallel expanders based on mode.
37 (define_special_predicate "vect_par_constant_high"
38 (match_code "parallel")
39
40=== modified file 'gcc/config/arm/sync.md'
41--- old/gcc/config/arm/sync.md 2010-09-09 15:03:00 +0000
42+++ new/gcc/config/arm/sync.md 2010-09-09 15:18:16 +0000
43@@ -280,7 +280,7 @@
44 (define_insn "arm_sync_compare_and_swapsi"
45 [(set (match_operand:SI 0 "s_register_operand" "=&r")
46 (unspec_volatile:SI
47- [(match_operand:SI 1 "memory_operand" "+m")
48+ [(match_operand:SI 1 "arm_sync_memory_operand" "+Q")
49 (match_operand:SI 2 "s_register_operand" "r")
50 (match_operand:SI 3 "s_register_operand" "r")]
51 VUNSPEC_SYNC_COMPARE_AND_SWAP))
52@@ -307,7 +307,7 @@
53 [(set (match_operand:SI 0 "s_register_operand" "=&r")
54 (zero_extend:SI
55 (unspec_volatile:NARROW
56- [(match_operand:NARROW 1 "memory_operand" "+m")
57+ [(match_operand:NARROW 1 "arm_sync_memory_operand" "+Q")
58 (match_operand:SI 2 "s_register_operand" "r")
59 (match_operand:SI 3 "s_register_operand" "r")]
60 VUNSPEC_SYNC_COMPARE_AND_SWAP)))
61@@ -332,7 +332,7 @@
62
63 (define_insn "arm_sync_lock_test_and_setsi"
64 [(set (match_operand:SI 0 "s_register_operand" "=&r")
65- (match_operand:SI 1 "memory_operand" "+m"))
66+ (match_operand:SI 1 "arm_sync_memory_operand" "+Q"))
67 (set (match_dup 1)
68 (unspec_volatile:SI [(match_operand:SI 2 "s_register_operand" "r")]
69 VUNSPEC_SYNC_LOCK))
70@@ -353,7 +353,7 @@
71
72 (define_insn "arm_sync_lock_test_and_set<mode>"
73 [(set (match_operand:SI 0 "s_register_operand" "=&r")
74- (zero_extend:SI (match_operand:NARROW 1 "memory_operand" "+m")))
75+ (zero_extend:SI (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q")))
76 (set (match_dup 1)
77 (unspec_volatile:NARROW [(match_operand:SI 2 "s_register_operand" "r")]
78 VUNSPEC_SYNC_LOCK))
79@@ -375,7 +375,7 @@
80 (define_insn "arm_sync_new_<sync_optab>si"
81 [(set (match_operand:SI 0 "s_register_operand" "=&r")
82 (unspec_volatile:SI [(syncop:SI
83- (match_operand:SI 1 "memory_operand" "+m")
84+ (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
85 (match_operand:SI 2 "s_register_operand" "r"))
86 ]
87 VUNSPEC_SYNC_NEW_OP))
88@@ -400,7 +400,7 @@
89 (define_insn "arm_sync_new_nandsi"
90 [(set (match_operand:SI 0 "s_register_operand" "=&r")
91 (unspec_volatile:SI [(not:SI (and:SI
92- (match_operand:SI 1 "memory_operand" "+m")
93+ (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
94 (match_operand:SI 2 "s_register_operand" "r")))
95 ]
96 VUNSPEC_SYNC_NEW_OP))
97@@ -426,7 +426,7 @@
98 [(set (match_operand:SI 0 "s_register_operand" "=&r")
99 (unspec_volatile:SI [(syncop:SI
100 (zero_extend:SI
101- (match_operand:NARROW 1 "memory_operand" "+m"))
102+ (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
103 (match_operand:SI 2 "s_register_operand" "r"))
104 ]
105 VUNSPEC_SYNC_NEW_OP))
106@@ -454,7 +454,7 @@
107 [(not:SI
108 (and:SI
109 (zero_extend:SI
110- (match_operand:NARROW 1 "memory_operand" "+m"))
111+ (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
112 (match_operand:SI 2 "s_register_operand" "r")))
113 ] VUNSPEC_SYNC_NEW_OP))
114 (set (match_dup 1)
115@@ -478,7 +478,7 @@
116 (define_insn "arm_sync_old_<sync_optab>si"
117 [(set (match_operand:SI 0 "s_register_operand" "=&r")
118 (unspec_volatile:SI [(syncop:SI
119- (match_operand:SI 1 "memory_operand" "+m")
120+ (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
121 (match_operand:SI 2 "s_register_operand" "r"))
122 ]
123 VUNSPEC_SYNC_OLD_OP))
124@@ -504,7 +504,7 @@
125 (define_insn "arm_sync_old_nandsi"
126 [(set (match_operand:SI 0 "s_register_operand" "=&r")
127 (unspec_volatile:SI [(not:SI (and:SI
128- (match_operand:SI 1 "memory_operand" "+m")
129+ (match_operand:SI 1 "arm_sync_memory_operand" "+Q")
130 (match_operand:SI 2 "s_register_operand" "r")))
131 ]
132 VUNSPEC_SYNC_OLD_OP))
133@@ -531,7 +531,7 @@
134 [(set (match_operand:SI 0 "s_register_operand" "=&r")
135 (unspec_volatile:SI [(syncop:SI
136 (zero_extend:SI
137- (match_operand:NARROW 1 "memory_operand" "+m"))
138+ (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
139 (match_operand:SI 2 "s_register_operand" "r"))
140 ]
141 VUNSPEC_SYNC_OLD_OP))
142@@ -558,7 +558,7 @@
143 [(set (match_operand:SI 0 "s_register_operand" "=&r")
144 (unspec_volatile:SI [(not:SI (and:SI
145 (zero_extend:SI
146- (match_operand:NARROW 1 "memory_operand" "+m"))
147+ (match_operand:NARROW 1 "arm_sync_memory_operand" "+Q"))
148 (match_operand:SI 2 "s_register_operand" "r")))
149 ]
150 VUNSPEC_SYNC_OLD_OP))
151
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99388.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99388.patch
new file mode 100644
index 000000000..f603fcadb
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99388.patch
@@ -0,0 +1,191 @@
12010-09-13 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from FSF:
4
5 2010-09-13 Marcus Shawcroft <marcus.shawcroft@arm.com>
6
7 * config/arm/arm.md: (define_attr "conds"): Update comment.
8 * config/arm/sync.md (arm_sync_compare_and_swapsi): Change
9 conds attribute to clob.
10 (arm_sync_compare_and_swapsi): Likewise.
11 (arm_sync_compare_and_swap<mode>): Likewise.
12 (arm_sync_lock_test_and_setsi): Likewise.
13 (arm_sync_lock_test_and_set<mode>): Likewise.
14 (arm_sync_new_<sync_optab>si): Likewise.
15 (arm_sync_new_nandsi): Likewise.
16 (arm_sync_new_<sync_optab><mode>): Likewise.
17 (arm_sync_new_nand<mode>): Likewise.
18 (arm_sync_old_<sync_optab>si): Likewise.
19 (arm_sync_old_nandsi): Likewise.
20 (arm_sync_old_<sync_optab><mode>): Likewise.
21 (arm_sync_old_nand<mode>): Likewise.
22
23 2010-09-13 Marcus Shawcroft <marcus.shawcroft@arm.com>
24
25 * gcc.target/arm/sync-1.c: New.
26
27 2010-09-10 Andrew Stubbs <ams@codesourcery.com>
28
29 gcc/
30
31=== modified file 'gcc/config/arm/arm.md'
32--- old/gcc/config/arm/arm.md 2010-09-09 15:03:00 +0000
33+++ new/gcc/config/arm/arm.md 2010-09-13 15:39:11 +0000
34@@ -352,10 +352,11 @@
35 ; CLOB means that the condition codes are altered in an undefined manner, if
36 ; they are altered at all
37 ;
38-; UNCONDITIONAL means the instions can not be conditionally executed.
39+; UNCONDITIONAL means the instruction can not be conditionally executed and
40+; that the instruction does not use or alter the condition codes.
41 ;
42-; NOCOND means that the condition codes are neither altered nor affect the
43-; output of this insn
44+; NOCOND means that the instruction does not use or alter the condition
45+; codes but can be converted into a conditionally exectuted instruction.
46
47 (define_attr "conds" "use,set,clob,unconditional,nocond"
48 (if_then_else (eq_attr "type" "call")
49
50=== modified file 'gcc/config/arm/sync.md'
51--- old/gcc/config/arm/sync.md 2010-09-09 15:18:16 +0000
52+++ new/gcc/config/arm/sync.md 2010-09-13 15:39:11 +0000
53@@ -300,7 +300,7 @@
54 (set_attr "sync_new_value" "3")
55 (set_attr "sync_t1" "0")
56 (set_attr "sync_t2" "4")
57- (set_attr "conds" "nocond")
58+ (set_attr "conds" "clob")
59 (set_attr "predicable" "no")])
60
61 (define_insn "arm_sync_compare_and_swap<mode>"
62@@ -327,7 +327,7 @@
63 (set_attr "sync_new_value" "3")
64 (set_attr "sync_t1" "0")
65 (set_attr "sync_t2" "4")
66- (set_attr "conds" "nocond")
67+ (set_attr "conds" "clob")
68 (set_attr "predicable" "no")])
69
70 (define_insn "arm_sync_lock_test_and_setsi"
71@@ -348,7 +348,7 @@
72 (set_attr "sync_new_value" "2")
73 (set_attr "sync_t1" "0")
74 (set_attr "sync_t2" "3")
75- (set_attr "conds" "nocond")
76+ (set_attr "conds" "clob")
77 (set_attr "predicable" "no")])
78
79 (define_insn "arm_sync_lock_test_and_set<mode>"
80@@ -369,7 +369,7 @@
81 (set_attr "sync_new_value" "2")
82 (set_attr "sync_t1" "0")
83 (set_attr "sync_t2" "3")
84- (set_attr "conds" "nocond")
85+ (set_attr "conds" "clob")
86 (set_attr "predicable" "no")])
87
88 (define_insn "arm_sync_new_<sync_optab>si"
89@@ -394,7 +394,7 @@
90 (set_attr "sync_t1" "0")
91 (set_attr "sync_t2" "3")
92 (set_attr "sync_op" "<sync_optab>")
93- (set_attr "conds" "nocond")
94+ (set_attr "conds" "clob")
95 (set_attr "predicable" "no")])
96
97 (define_insn "arm_sync_new_nandsi"
98@@ -419,7 +419,7 @@
99 (set_attr "sync_t1" "0")
100 (set_attr "sync_t2" "3")
101 (set_attr "sync_op" "nand")
102- (set_attr "conds" "nocond")
103+ (set_attr "conds" "clob")
104 (set_attr "predicable" "no")])
105
106 (define_insn "arm_sync_new_<sync_optab><mode>"
107@@ -445,7 +445,7 @@
108 (set_attr "sync_t1" "0")
109 (set_attr "sync_t2" "3")
110 (set_attr "sync_op" "<sync_optab>")
111- (set_attr "conds" "nocond")
112+ (set_attr "conds" "clob")
113 (set_attr "predicable" "no")])
114
115 (define_insn "arm_sync_new_nand<mode>"
116@@ -472,7 +472,7 @@
117 (set_attr "sync_t1" "0")
118 (set_attr "sync_t2" "3")
119 (set_attr "sync_op" "nand")
120- (set_attr "conds" "nocond")
121+ (set_attr "conds" "clob")
122 (set_attr "predicable" "no")])
123
124 (define_insn "arm_sync_old_<sync_optab>si"
125@@ -498,7 +498,7 @@
126 (set_attr "sync_t1" "3")
127 (set_attr "sync_t2" "4")
128 (set_attr "sync_op" "<sync_optab>")
129- (set_attr "conds" "nocond")
130+ (set_attr "conds" "clob")
131 (set_attr "predicable" "no")])
132
133 (define_insn "arm_sync_old_nandsi"
134@@ -524,7 +524,7 @@
135 (set_attr "sync_t1" "3")
136 (set_attr "sync_t2" "4")
137 (set_attr "sync_op" "nand")
138- (set_attr "conds" "nocond")
139+ (set_attr "conds" "clob")
140 (set_attr "predicable" "no")])
141
142 (define_insn "arm_sync_old_<sync_optab><mode>"
143@@ -551,7 +551,7 @@
144 (set_attr "sync_t1" "3")
145 (set_attr "sync_t2" "4")
146 (set_attr "sync_op" "<sync_optab>")
147- (set_attr "conds" "nocond")
148+ (set_attr "conds" "clob")
149 (set_attr "predicable" "no")])
150
151 (define_insn "arm_sync_old_nand<mode>"
152@@ -578,7 +578,7 @@
153 (set_attr "sync_t1" "3")
154 (set_attr "sync_t2" "4")
155 (set_attr "sync_op" "nand")
156- (set_attr "conds" "nocond")
157+ (set_attr "conds" "clob")
158 (set_attr "predicable" "no")])
159
160 (define_insn "*memory_barrier"
161
162=== added file 'gcc/testsuite/gcc.target/arm/sync-1.c'
163--- old/gcc/testsuite/gcc.target/arm/sync-1.c 1970-01-01 00:00:00 +0000
164+++ new/gcc/testsuite/gcc.target/arm/sync-1.c 2010-09-13 15:39:11 +0000
165@@ -0,0 +1,25 @@
166+/* { dg-do run } */
167+/* { dg-options "-O2 -march=armv7-a" } */
168+
169+volatile int mem;
170+
171+int
172+bar (int x, int y)
173+{
174+ if (x)
175+ __sync_fetch_and_add(&mem, y);
176+ return 0;
177+}
178+
179+extern void abort (void);
180+
181+int
182+main (int argc, char *argv[])
183+{
184+ mem = 0;
185+ bar (0, 1);
186+ bar (1, 1);
187+ if (mem != 1)
188+ abort ();
189+ return 0;
190+}
191
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99391.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99391.patch
new file mode 100644
index 000000000..31122e34b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99391.patch
@@ -0,0 +1,43 @@
12010-09-08 Tom de Vries <tom@codesourcery.com>
2
3 gcc/
4 * gcc/emit-rtl.c (set_mem_attributes_minus_bitpos): Set MEM_READONLY_P
5 for static const strings.
6 * gcc/testsuite/gcc.dg/memcpy-3.c: New test.
7
8 2010-09-13 Andrew Stubbs <ams@codesourcery.com>
9
10 gcc/
11
12=== modified file 'gcc/emit-rtl.c'
13--- old/gcc/emit-rtl.c 2009-11-27 12:00:28 +0000
14+++ new/gcc/emit-rtl.c 2010-09-15 16:40:06 +0000
15@@ -1648,6 +1648,11 @@
16 MEM_READONLY_P (ref) = 1;
17 }
18
19+ /* Mark static const strings readonly as well. */
20+ if (base && TREE_CODE (base) == STRING_CST && TREE_READONLY (base)
21+ && TREE_STATIC (base))
22+ MEM_READONLY_P (ref) = 1;
23+
24 /* If this expression uses it's parent's alias set, mark it such
25 that we won't change it. */
26 if (component_uses_parent_alias_set (t))
27
28=== added file 'gcc/testsuite/gcc.dg/memcpy-3.c'
29--- old/gcc/testsuite/gcc.dg/memcpy-3.c 1970-01-01 00:00:00 +0000
30+++ new/gcc/testsuite/gcc.dg/memcpy-3.c 2010-09-15 16:40:06 +0000
31@@ -0,0 +1,11 @@
32+/* { dg-do compile } */
33+/* { dg-options "-O2 -fdump-rtl-expand" } */
34+
35+void
36+f1 (char *p)
37+{
38+ __builtin_memcpy (p, "123", 3);
39+}
40+
41+/* { dg-final { scan-rtl-dump-times "mem/s/u:" 3 "expand" { target mips*-*-* } } } */
42+/* { dg-final { cleanup-rtl-dump "expand" } } */
43
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99392.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99392.patch
new file mode 100644
index 000000000..9a9d5940c
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99392.patch
@@ -0,0 +1,33 @@
12010-09-10 Nathan Froyd <froydnj@codesourcery.com>
2
3 Issue #9120
4
5 * release-notes-csl.xml (Compiler optimization improvements): New
6 bullet.
7
8 gcc/
9 * gimple.c (is_gimple_min_invariant): Check for constant INDIRECT_REFs.
10
11 2010-09-08 Tom de Vries <tom@codesourcery.com>
12
13 gcc/
14
15=== modified file 'gcc/gimple.c'
16--- old/gcc/gimple.c 2010-06-22 17:23:11 +0000
17+++ new/gcc/gimple.c 2010-09-15 16:47:52 +0000
18@@ -2591,7 +2591,13 @@
19
20 op = strip_invariant_refs (TREE_OPERAND (t, 0));
21
22- return op && (CONSTANT_CLASS_P (op) || decl_address_invariant_p (op));
23+ if (!op)
24+ return false;
25+
26+ if (TREE_CODE (op) == INDIRECT_REF)
27+ return CONSTANT_CLASS_P (TREE_OPERAND (op, 0));
28+ else
29+ return CONSTANT_CLASS_P (op) || decl_address_invariant_p (op);
30 }
31
32 /* Return true if T is a gimple invariant address at IPA level
33
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99393.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99393.patch
new file mode 100644
index 000000000..d8df57a44
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99393.patch
@@ -0,0 +1,45 @@
12010-09-13 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-09-12 Bernd Schmidt <bernds@codesourcery.com>
6
7 gcc/
8 * config/arm/arm.md (arm_ashldi3_1bit, arm_ashrdi3_1bit,
9 arm_lshrdi3_1bit): Put earlyclobber on the right alternative.
10
11 2010-09-10 Nathan Froyd <froydnj@codesourcery.com>
12
13 Issue #9120
14
15=== modified file 'gcc/config/arm/arm.md'
16--- old/gcc/config/arm/arm.md 2010-09-13 15:39:11 +0000
17+++ new/gcc/config/arm/arm.md 2010-09-15 16:55:55 +0000
18@@ -3295,7 +3295,7 @@
19 )
20
21 (define_insn "arm_ashldi3_1bit"
22- [(set (match_operand:DI 0 "s_register_operand" "=&r,r")
23+ [(set (match_operand:DI 0 "s_register_operand" "=r,&r")
24 (ashift:DI (match_operand:DI 1 "s_register_operand" "0,r")
25 (const_int 1)))
26 (clobber (reg:CC CC_REGNUM))]
27@@ -3354,7 +3354,7 @@
28 )
29
30 (define_insn "arm_ashrdi3_1bit"
31- [(set (match_operand:DI 0 "s_register_operand" "=&r,r")
32+ [(set (match_operand:DI 0 "s_register_operand" "=r,&r")
33 (ashiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r")
34 (const_int 1)))
35 (clobber (reg:CC CC_REGNUM))]
36@@ -3410,7 +3410,7 @@
37 )
38
39 (define_insn "arm_lshrdi3_1bit"
40- [(set (match_operand:DI 0 "s_register_operand" "=&r,r")
41+ [(set (match_operand:DI 0 "s_register_operand" "=r,&r")
42 (lshiftrt:DI (match_operand:DI 1 "s_register_operand" "0,r")
43 (const_int 1)))
44 (clobber (reg:CC CC_REGNUM))]
45
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99395.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99395.patch
new file mode 100644
index 000000000..809a20aae
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99395.patch
@@ -0,0 +1,26 @@
12010-09-15 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/
6 2010-09-15 Jie Zhang <jie@codesourcery.com>
7 * config/arm/vfp.md (cmpsf_trap_vfp): Change type from
8 fcmpd to fcmps.
9
10 2010-09-13 Chung-Lin Tang <cltang@codesourcery.com>
11
12 Backport from mainline:
13
14=== modified file 'gcc/config/arm/vfp.md'
15--- old/gcc/config/arm/vfp.md 2010-08-13 15:28:31 +0000
16+++ new/gcc/config/arm/vfp.md 2010-09-16 08:57:30 +0000
17@@ -1159,7 +1159,7 @@
18 fcmpes%?\\t%0, %1
19 fcmpezs%?\\t%0"
20 [(set_attr "predicable" "yes")
21- (set_attr "type" "fcmpd")]
22+ (set_attr "type" "fcmps")]
23 )
24
25 (define_insn "*cmpdf_vfp"
26
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99396.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99396.patch
new file mode 100644
index 000000000..655399ab1
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99396.patch
@@ -0,0 +1,1760 @@
12010-09-15 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Issue #9441
4
5 Backport from mainline:
6
7 2010-06-25 Bernd Schmidt <bernds@codesourcery.com>
8
9 With large parts from Jim Wilson:
10 PR target/43902
11
12 gcc/
13 * tree-pretty-print.c (dump_generic_node, op_code_prio): Add
14 WIDEN_MULT_PLUS_EXPR and WIDEN_MULT_MINUS_EXPR.
15 * optabs.c (optab_for_tree_code): Likewise.
16 (expand_widen_pattern_expr): Likewise.
17 * tree-ssa-math-opts.c (convert_mult_to_widen): New function, broken
18 out of execute_optimize_widening_mul.
19 (convert_plusminus_to_widen): New function.
20 (execute_optimize_widening_mul): Use the two new functions.
21 * expr.c (expand_expr_real_2): Add support for GIMPLE_TERNARY_RHS.
22 Remove code to generate widening multiply-accumulate. Add support
23 for WIDEN_MULT_PLUS_EXPR and WIDEN_MULT_MINUS_EXPR.
24 * gimple-pretty-print.c (dump_ternary_rhs): New function.
25 (dump_gimple_assign): Call it when appropriate.
26 * tree.def (WIDEN_MULT_PLUS_EXPR, WIDEN_MULT_MINUS_EXPR): New codes.
27 * cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
28 (expand_gimple_stmt_1): Likewise.
29 (expand_debug_expr): Support WIDEN_MULT_PLUS_EXPR and
30 WIDEN_MULT_MINUS_EXPR.
31 * tree-ssa-operands.c (get_expr_operands): Likewise.
32 * tree-inline.c (estimate_operator_cost): Likewise.
33 * gimple.c (extract_ops_from_tree_1): Renamed from
34 extract_ops_from_tree. Add new arg for a third operand; fill it.
35 (gimple_build_assign_stat): Support operations with three operands.
36 (gimple_build_assign_with_ops_stat): Likewise.
37 (gimple_assign_set_rhs_from_tree): Likewise.
38 (gimple_assign_set_rhs_with_ops_1): Renamed from
39 gimple_assign_set_rhs_with_ops. Add new arg for a third operand.
40 (get_gimple_rhs_num_ops): Support GIMPLE_TERNARY_RHS.
41 (get_gimple_rhs_num_ops): Handle WIDEN_MULT_PLUS_EXPR and
42 WIDEN_MULT_MINUS_EXPR.
43 * gimple.h (enum gimple_rhs_class): Add GIMPLE_TERNARY_RHS.
44 (extract_ops_from_tree_1): Adjust declaration.
45 (gimple_assign_set_rhs_with_ops_1): Likewise.
46 (gimple_build_assign_with_ops): Pass NULL for last operand.
47 (gimple_build_assign_with_ops3): New macro.
48 (gimple_assign_rhs3, gimple_assign_rhs3_ptr, gimple_assign_set_rhs3,
49 gimple_assign_set_rhs_with_ops, extract_ops_from_tree): New inline
50 functions.
51 * tree-cfg.c (verify_gimple_assign_ternary): New static function.
52 (verify_gimple_assign): Call it.
53 * doc/gimple.texi (Manipulating operands): Document GIMPLE_TERNARY_RHS.
54 (Tuple specific accessors, subsection GIMPLE_ASSIGN): Document new
55 functions for dealing with three-operand statements.
56 * tree.c (commutative_ternary_tree_code): New function.
57 * tree.h (commutative_ternary_tree_code): Declare it.
58 * tree-vrp.c (gimple_assign_nonnegative_warnv_p): Return false for
59 ternary statements.
60 (gimple_assign_nonzero_warnv_p): Likewise.
61 * tree-ssa-sccvn.c (stmt_has_constants): Handle GIMPLE_TERNARY_RHS.
62 * tree-ssa-ccp.c (get_rhs_assign_op_for_ccp): New static function.
63 (ccp_fold): Use it. Handle GIMPLE_TERNARY_RHS.
64 * tree-ssa-dom.c (enum expr_kind): Add EXPR_TERNARY.
65 (struct hashtable_expr): New member ternary in the union.
66 (initialize_hash_element): Handle GIMPLE_TERNARY_RHS.
67 (hashable_expr_equal_p): Fix indentation. Handle EXPR_TERNARY.
68 (iterative_hash_hashable_expr): Likewise.
69 (print_expr_hash_elt): Handle EXPR_TERNARY.
70 * gimple-fold.c (fold_gimple_assign): Handle GIMPLE_TERNARY_RHS.
71 * tree-ssa-threadedge.c (fold_assignment_stmt): Remove useless break
72 statements. Handle GIMPLE_TERNARY_RHS.
73
74 From Jim Wilson:
75 gcc/testsuite/
76 * gcc.target/mips/madd-9.c: New test.
77
78 2010-06-29 Bernd Schmidt <bernds@codesourcery.com>
79
80 PR target/43902
81 gcc/
82 * config/arm/arm.md (maddsidi4, umaddsidi4): New expanders.
83 (maddhisi4): Renamed from mulhisi3addsi. Operands renumbered.
84 (maddhidi4): Likewise.
85
86 gcc/testsuite/
87 * gcc.target/arm/wmul-1.c: Test for smlabb instead of smulbb.
88 * gcc.target/arm/wmul-3.c: New test.
89 * gcc.target/arm/wmul-4.c: New test.
90
91 2010-07-22 Richard Sandiford <rdsandiford@googlemail.com>
92
93 gcc/
94 * tree-ssa-math-opts.c (is_widening_mult_rhs_p): New function.
95 (is_widening_mult_p): Likewise.
96 (convert_to_widen): Use them.
97 (convert_plusminus_to_widen): Likewise. Handle fixed-point types as
98 well as integer ones.
99
100 2010-07-31 Richard Sandiford <rdsandiford@googlemail.com>
101
102 gcc/
103 * tree-ssa-math-opts.c (convert_plusminus_to_widen): Fix type
104 used in the call to optab_for_tree_code. Fix the second
105 is_widening_mult_p call. Check that both unwidened operands
106 have the same sign.
107
108 2010-09-15 Jie Zhang <jie@codesourcery.com>
109
110 Backport from mainline:
111
112=== modified file 'gcc/cfgexpand.c'
113--- old/gcc/cfgexpand.c 2010-09-01 13:29:58 +0000
114+++ new/gcc/cfgexpand.c 2010-09-16 09:15:46 +0000
115@@ -64,7 +64,13 @@
116
117 grhs_class = get_gimple_rhs_class (gimple_expr_code (stmt));
118
119- if (grhs_class == GIMPLE_BINARY_RHS)
120+ if (grhs_class == GIMPLE_TERNARY_RHS)
121+ t = build3 (gimple_assign_rhs_code (stmt),
122+ TREE_TYPE (gimple_assign_lhs (stmt)),
123+ gimple_assign_rhs1 (stmt),
124+ gimple_assign_rhs2 (stmt),
125+ gimple_assign_rhs3 (stmt));
126+ else if (grhs_class == GIMPLE_BINARY_RHS)
127 t = build2 (gimple_assign_rhs_code (stmt),
128 TREE_TYPE (gimple_assign_lhs (stmt)),
129 gimple_assign_rhs1 (stmt),
130@@ -1887,6 +1893,9 @@
131 ops.type = TREE_TYPE (lhs);
132 switch (get_gimple_rhs_class (gimple_expr_code (stmt)))
133 {
134+ case GIMPLE_TERNARY_RHS:
135+ ops.op2 = gimple_assign_rhs3 (stmt);
136+ /* Fallthru */
137 case GIMPLE_BINARY_RHS:
138 ops.op1 = gimple_assign_rhs2 (stmt);
139 /* Fallthru */
140@@ -2237,6 +2246,8 @@
141 {
142 case COND_EXPR:
143 case DOT_PROD_EXPR:
144+ case WIDEN_MULT_PLUS_EXPR:
145+ case WIDEN_MULT_MINUS_EXPR:
146 goto ternary;
147
148 case TRUTH_ANDIF_EXPR:
149@@ -3023,6 +3034,8 @@
150 return NULL;
151
152 case WIDEN_MULT_EXPR:
153+ case WIDEN_MULT_PLUS_EXPR:
154+ case WIDEN_MULT_MINUS_EXPR:
155 if (SCALAR_INT_MODE_P (GET_MODE (op0))
156 && SCALAR_INT_MODE_P (mode))
157 {
158@@ -3035,7 +3048,13 @@
159 op1 = simplify_gen_unary (ZERO_EXTEND, mode, op1, inner_mode);
160 else
161 op1 = simplify_gen_unary (SIGN_EXTEND, mode, op1, inner_mode);
162- return gen_rtx_MULT (mode, op0, op1);
163+ op0 = gen_rtx_MULT (mode, op0, op1);
164+ if (TREE_CODE (exp) == WIDEN_MULT_EXPR)
165+ return op0;
166+ else if (TREE_CODE (exp) == WIDEN_MULT_PLUS_EXPR)
167+ return gen_rtx_PLUS (mode, op0, op2);
168+ else
169+ return gen_rtx_MINUS (mode, op2, op0);
170 }
171 return NULL;
172
173
174=== modified file 'gcc/config/arm/arm.md'
175--- old/gcc/config/arm/arm.md 2010-09-15 16:55:55 +0000
176+++ new/gcc/config/arm/arm.md 2010-09-16 09:15:46 +0000
177@@ -1507,7 +1507,15 @@
178 (set_attr "predicable" "yes")]
179 )
180
181-;; Unnamed template to match long long multiply-accumulate (smlal)
182+(define_expand "maddsidi4"
183+ [(set (match_operand:DI 0 "s_register_operand" "")
184+ (plus:DI
185+ (mult:DI
186+ (sign_extend:DI (match_operand:SI 1 "s_register_operand" ""))
187+ (sign_extend:DI (match_operand:SI 2 "s_register_operand" "")))
188+ (match_operand:DI 3 "s_register_operand" "")))]
189+ "TARGET_32BIT && arm_arch3m"
190+ "")
191
192 (define_insn "*mulsidi3adddi"
193 [(set (match_operand:DI 0 "s_register_operand" "=&r")
194@@ -1603,7 +1611,15 @@
195 (set_attr "predicable" "yes")]
196 )
197
198-;; Unnamed template to match long long unsigned multiply-accumulate (umlal)
199+(define_expand "umaddsidi4"
200+ [(set (match_operand:DI 0 "s_register_operand" "")
201+ (plus:DI
202+ (mult:DI
203+ (zero_extend:DI (match_operand:SI 1 "s_register_operand" ""))
204+ (zero_extend:DI (match_operand:SI 2 "s_register_operand" "")))
205+ (match_operand:DI 3 "s_register_operand" "")))]
206+ "TARGET_32BIT && arm_arch3m"
207+ "")
208
209 (define_insn "*umulsidi3adddi"
210 [(set (match_operand:DI 0 "s_register_operand" "=&r")
211@@ -1771,29 +1787,29 @@
212 (set_attr "predicable" "yes")]
213 )
214
215-(define_insn "*mulhisi3addsi"
216+(define_insn "maddhisi4"
217 [(set (match_operand:SI 0 "s_register_operand" "=r")
218- (plus:SI (match_operand:SI 1 "s_register_operand" "r")
219+ (plus:SI (match_operand:SI 3 "s_register_operand" "r")
220 (mult:SI (sign_extend:SI
221- (match_operand:HI 2 "s_register_operand" "%r"))
222+ (match_operand:HI 1 "s_register_operand" "%r"))
223 (sign_extend:SI
224- (match_operand:HI 3 "s_register_operand" "r")))))]
225+ (match_operand:HI 2 "s_register_operand" "r")))))]
226 "TARGET_DSP_MULTIPLY"
227- "smlabb%?\\t%0, %2, %3, %1"
228+ "smlabb%?\\t%0, %1, %2, %3"
229 [(set_attr "insn" "smlaxy")
230 (set_attr "predicable" "yes")]
231 )
232
233-(define_insn "*mulhidi3adddi"
234+(define_insn "*maddhidi4"
235 [(set (match_operand:DI 0 "s_register_operand" "=r")
236 (plus:DI
237- (match_operand:DI 1 "s_register_operand" "0")
238+ (match_operand:DI 3 "s_register_operand" "0")
239 (mult:DI (sign_extend:DI
240- (match_operand:HI 2 "s_register_operand" "%r"))
241+ (match_operand:HI 1 "s_register_operand" "%r"))
242 (sign_extend:DI
243- (match_operand:HI 3 "s_register_operand" "r")))))]
244+ (match_operand:HI 2 "s_register_operand" "r")))))]
245 "TARGET_DSP_MULTIPLY"
246- "smlalbb%?\\t%Q0, %R0, %2, %3"
247+ "smlalbb%?\\t%Q0, %R0, %1, %2"
248 [(set_attr "insn" "smlalxy")
249 (set_attr "predicable" "yes")])
250
251
252=== modified file 'gcc/doc/gimple.texi'
253--- old/gcc/doc/gimple.texi 2010-07-06 19:23:53 +0000
254+++ new/gcc/doc/gimple.texi 2010-09-16 09:15:46 +0000
255@@ -554,6 +554,9 @@
256 @item @code{GIMPLE_INVALID_RHS}
257 The tree cannot be used as a GIMPLE operand.
258
259+@item @code{GIMPLE_TERNARY_RHS}
260+The tree is a valid GIMPLE ternary operation.
261+
262 @item @code{GIMPLE_BINARY_RHS}
263 The tree is a valid GIMPLE binary operation.
264
265@@ -575,10 +578,11 @@
266 expressions should be flattened into the operand vector.
267 @end itemize
268
269-For tree nodes in the categories @code{GIMPLE_BINARY_RHS} and
270-@code{GIMPLE_UNARY_RHS}, they cannot be stored inside tuples directly.
271-They first need to be flattened and separated into individual
272-components. For instance, given the GENERIC expression
273+For tree nodes in the categories @code{GIMPLE_TERNARY_RHS},
274+@code{GIMPLE_BINARY_RHS} and @code{GIMPLE_UNARY_RHS}, they cannot be
275+stored inside tuples directly. They first need to be flattened and
276+separated into individual components. For instance, given the GENERIC
277+expression
278
279 @smallexample
280 a = b + c
281@@ -1082,7 +1086,16 @@
282 Return the address of the second operand on the @code{RHS} of assignment
283 statement @code{G}.
284 @end deftypefn
285+
286+@deftypefn {GIMPLE function} tree gimple_assign_rhs3 (gimple g)
287+Return the third operand on the @code{RHS} of assignment statement @code{G}.
288+@end deftypefn
289
290+@deftypefn {GIMPLE function} tree *gimple_assign_rhs3_ptr (gimple g)
291+Return the address of the third operand on the @code{RHS} of assignment
292+statement @code{G}.
293+@end deftypefn
294+
295 @deftypefn {GIMPLE function} void gimple_assign_set_lhs (gimple g, tree lhs)
296 Set @code{LHS} to be the @code{LHS} operand of assignment statement @code{G}.
297 @end deftypefn
298@@ -1092,20 +1105,16 @@
299 statement @code{G}.
300 @end deftypefn
301
302-@deftypefn {GIMPLE function} tree gimple_assign_rhs2 (gimple g)
303-Return the second operand on the @code{RHS} of assignment statement @code{G}.
304-@end deftypefn
305-
306-@deftypefn {GIMPLE function} tree *gimple_assign_rhs2_ptr (gimple g)
307-Return a pointer to the second operand on the @code{RHS} of assignment
308-statement @code{G}.
309-@end deftypefn
310-
311 @deftypefn {GIMPLE function} void gimple_assign_set_rhs2 (gimple g, tree rhs)
312 Set @code{RHS} to be the second operand on the @code{RHS} of assignment
313 statement @code{G}.
314 @end deftypefn
315
316+@deftypefn {GIMPLE function} void gimple_assign_set_rhs3 (gimple g, tree rhs)
317+Set @code{RHS} to be the third operand on the @code{RHS} of assignment
318+statement @code{G}.
319+@end deftypefn
320+
321 @deftypefn {GIMPLE function} bool gimple_assign_cast_p (gimple s)
322 Return true if @code{S} is a type-cast assignment.
323 @end deftypefn
324
325=== modified file 'gcc/expr.c'
326--- old/gcc/expr.c 2010-09-01 13:29:58 +0000
327+++ new/gcc/expr.c 2010-09-16 09:15:46 +0000
328@@ -7225,8 +7225,6 @@
329 rtx subtarget, original_target;
330 int ignore;
331 bool reduce_bit_field;
332- gimple subexp0_def, subexp1_def;
333- tree top0, top1;
334 location_t loc = ops->location;
335 tree treeop0, treeop1;
336 #define REDUCE_BIT_FIELD(expr) (reduce_bit_field \
337@@ -7246,7 +7244,8 @@
338 exactly those that are valid in gimple expressions that aren't
339 GIMPLE_SINGLE_RHS (or invalid). */
340 gcc_assert (get_gimple_rhs_class (code) == GIMPLE_UNARY_RHS
341- || get_gimple_rhs_class (code) == GIMPLE_BINARY_RHS);
342+ || get_gimple_rhs_class (code) == GIMPLE_BINARY_RHS
343+ || get_gimple_rhs_class (code) == GIMPLE_TERNARY_RHS);
344
345 ignore = (target == const0_rtx
346 || ((CONVERT_EXPR_CODE_P (code)
347@@ -7421,58 +7420,6 @@
348 fold_convert_loc (loc, ssizetype,
349 treeop1));
350 case PLUS_EXPR:
351-
352- /* Check if this is a case for multiplication and addition. */
353- if ((TREE_CODE (type) == INTEGER_TYPE
354- || TREE_CODE (type) == FIXED_POINT_TYPE)
355- && (subexp0_def = get_def_for_expr (treeop0,
356- MULT_EXPR)))
357- {
358- tree subsubexp0, subsubexp1;
359- gimple subsubexp0_def, subsubexp1_def;
360- enum tree_code this_code;
361-
362- this_code = TREE_CODE (type) == INTEGER_TYPE ? NOP_EXPR
363- : FIXED_CONVERT_EXPR;
364- subsubexp0 = gimple_assign_rhs1 (subexp0_def);
365- subsubexp0_def = get_def_for_expr (subsubexp0, this_code);
366- subsubexp1 = gimple_assign_rhs2 (subexp0_def);
367- subsubexp1_def = get_def_for_expr (subsubexp1, this_code);
368- if (subsubexp0_def && subsubexp1_def
369- && (top0 = gimple_assign_rhs1 (subsubexp0_def))
370- && (top1 = gimple_assign_rhs1 (subsubexp1_def))
371- && (TYPE_PRECISION (TREE_TYPE (top0))
372- < TYPE_PRECISION (TREE_TYPE (subsubexp0)))
373- && (TYPE_PRECISION (TREE_TYPE (top0))
374- == TYPE_PRECISION (TREE_TYPE (top1)))
375- && (TYPE_UNSIGNED (TREE_TYPE (top0))
376- == TYPE_UNSIGNED (TREE_TYPE (top1))))
377- {
378- tree op0type = TREE_TYPE (top0);
379- enum machine_mode innermode = TYPE_MODE (op0type);
380- bool zextend_p = TYPE_UNSIGNED (op0type);
381- bool sat_p = TYPE_SATURATING (TREE_TYPE (subsubexp0));
382- if (sat_p == 0)
383- this_optab = zextend_p ? umadd_widen_optab : smadd_widen_optab;
384- else
385- this_optab = zextend_p ? usmadd_widen_optab
386- : ssmadd_widen_optab;
387- if (mode == GET_MODE_2XWIDER_MODE (innermode)
388- && (optab_handler (this_optab, mode)->insn_code
389- != CODE_FOR_nothing))
390- {
391- expand_operands (top0, top1, NULL_RTX, &op0, &op1,
392- EXPAND_NORMAL);
393- op2 = expand_expr (treeop1, subtarget,
394- VOIDmode, EXPAND_NORMAL);
395- temp = expand_ternary_op (mode, this_optab, op0, op1, op2,
396- target, unsignedp);
397- gcc_assert (temp);
398- return REDUCE_BIT_FIELD (temp);
399- }
400- }
401- }
402-
403 /* If we are adding a constant, a VAR_DECL that is sp, fp, or ap, and
404 something else, make sure we add the register to the constant and
405 then to the other thing. This case can occur during strength
406@@ -7587,57 +7534,6 @@
407 return REDUCE_BIT_FIELD (simplify_gen_binary (PLUS, mode, op0, op1));
408
409 case MINUS_EXPR:
410- /* Check if this is a case for multiplication and subtraction. */
411- if ((TREE_CODE (type) == INTEGER_TYPE
412- || TREE_CODE (type) == FIXED_POINT_TYPE)
413- && (subexp1_def = get_def_for_expr (treeop1,
414- MULT_EXPR)))
415- {
416- tree subsubexp0, subsubexp1;
417- gimple subsubexp0_def, subsubexp1_def;
418- enum tree_code this_code;
419-
420- this_code = TREE_CODE (type) == INTEGER_TYPE ? NOP_EXPR
421- : FIXED_CONVERT_EXPR;
422- subsubexp0 = gimple_assign_rhs1 (subexp1_def);
423- subsubexp0_def = get_def_for_expr (subsubexp0, this_code);
424- subsubexp1 = gimple_assign_rhs2 (subexp1_def);
425- subsubexp1_def = get_def_for_expr (subsubexp1, this_code);
426- if (subsubexp0_def && subsubexp1_def
427- && (top0 = gimple_assign_rhs1 (subsubexp0_def))
428- && (top1 = gimple_assign_rhs1 (subsubexp1_def))
429- && (TYPE_PRECISION (TREE_TYPE (top0))
430- < TYPE_PRECISION (TREE_TYPE (subsubexp0)))
431- && (TYPE_PRECISION (TREE_TYPE (top0))
432- == TYPE_PRECISION (TREE_TYPE (top1)))
433- && (TYPE_UNSIGNED (TREE_TYPE (top0))
434- == TYPE_UNSIGNED (TREE_TYPE (top1))))
435- {
436- tree op0type = TREE_TYPE (top0);
437- enum machine_mode innermode = TYPE_MODE (op0type);
438- bool zextend_p = TYPE_UNSIGNED (op0type);
439- bool sat_p = TYPE_SATURATING (TREE_TYPE (subsubexp0));
440- if (sat_p == 0)
441- this_optab = zextend_p ? umsub_widen_optab : smsub_widen_optab;
442- else
443- this_optab = zextend_p ? usmsub_widen_optab
444- : ssmsub_widen_optab;
445- if (mode == GET_MODE_2XWIDER_MODE (innermode)
446- && (optab_handler (this_optab, mode)->insn_code
447- != CODE_FOR_nothing))
448- {
449- expand_operands (top0, top1, NULL_RTX, &op0, &op1,
450- EXPAND_NORMAL);
451- op2 = expand_expr (treeop0, subtarget,
452- VOIDmode, EXPAND_NORMAL);
453- temp = expand_ternary_op (mode, this_optab, op0, op1, op2,
454- target, unsignedp);
455- gcc_assert (temp);
456- return REDUCE_BIT_FIELD (temp);
457- }
458- }
459- }
460-
461 /* For initializers, we are allowed to return a MINUS of two
462 symbolic constants. Here we handle all cases when both operands
463 are constant. */
464@@ -7678,6 +7574,14 @@
465
466 goto binop2;
467
468+ case WIDEN_MULT_PLUS_EXPR:
469+ case WIDEN_MULT_MINUS_EXPR:
470+ expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1, EXPAND_NORMAL);
471+ op2 = expand_normal (ops->op2);
472+ target = expand_widen_pattern_expr (ops, op0, op1, op2,
473+ target, unsignedp);
474+ return target;
475+
476 case WIDEN_MULT_EXPR:
477 /* If first operand is constant, swap them.
478 Thus the following special case checks need only
479
480=== modified file 'gcc/gimple-pretty-print.c'
481--- old/gcc/gimple-pretty-print.c 2009-11-25 10:55:54 +0000
482+++ new/gcc/gimple-pretty-print.c 2010-09-16 09:15:46 +0000
483@@ -376,6 +376,34 @@
484 }
485 }
486
487+/* Helper for dump_gimple_assign. Print the ternary RHS of the
488+ assignment GS. BUFFER, SPC and FLAGS are as in dump_gimple_stmt. */
489+
490+static void
491+dump_ternary_rhs (pretty_printer *buffer, gimple gs, int spc, int flags)
492+{
493+ const char *p;
494+ enum tree_code code = gimple_assign_rhs_code (gs);
495+ switch (code)
496+ {
497+ case WIDEN_MULT_PLUS_EXPR:
498+ case WIDEN_MULT_MINUS_EXPR:
499+ for (p = tree_code_name [(int) code]; *p; p++)
500+ pp_character (buffer, TOUPPER (*p));
501+ pp_string (buffer, " <");
502+ dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false);
503+ pp_string (buffer, ", ");
504+ dump_generic_node (buffer, gimple_assign_rhs2 (gs), spc, flags, false);
505+ pp_string (buffer, ", ");
506+ dump_generic_node (buffer, gimple_assign_rhs3 (gs), spc, flags, false);
507+ pp_character (buffer, '>');
508+ break;
509+
510+ default:
511+ gcc_unreachable ();
512+ }
513+}
514+
515
516 /* Dump the gimple assignment GS. BUFFER, SPC and FLAGS are as in
517 dump_gimple_stmt. */
518@@ -418,6 +446,8 @@
519 dump_unary_rhs (buffer, gs, spc, flags);
520 else if (gimple_num_ops (gs) == 3)
521 dump_binary_rhs (buffer, gs, spc, flags);
522+ else if (gimple_num_ops (gs) == 4)
523+ dump_ternary_rhs (buffer, gs, spc, flags);
524 else
525 gcc_unreachable ();
526 if (!(flags & TDF_RHS_ONLY))
527
528=== modified file 'gcc/gimple.c'
529--- old/gcc/gimple.c 2010-09-15 16:47:52 +0000
530+++ new/gcc/gimple.c 2010-09-16 09:15:46 +0000
531@@ -289,31 +289,40 @@
532
533
534 /* Extract the operands and code for expression EXPR into *SUBCODE_P,
535- *OP1_P and *OP2_P respectively. */
536+ *OP1_P, *OP2_P and *OP3_P respectively. */
537
538 void
539-extract_ops_from_tree (tree expr, enum tree_code *subcode_p, tree *op1_p,
540- tree *op2_p)
541+extract_ops_from_tree_1 (tree expr, enum tree_code *subcode_p, tree *op1_p,
542+ tree *op2_p, tree *op3_p)
543 {
544 enum gimple_rhs_class grhs_class;
545
546 *subcode_p = TREE_CODE (expr);
547 grhs_class = get_gimple_rhs_class (*subcode_p);
548
549- if (grhs_class == GIMPLE_BINARY_RHS)
550- {
551- *op1_p = TREE_OPERAND (expr, 0);
552- *op2_p = TREE_OPERAND (expr, 1);
553+ if (grhs_class == GIMPLE_TERNARY_RHS)
554+ {
555+ *op1_p = TREE_OPERAND (expr, 0);
556+ *op2_p = TREE_OPERAND (expr, 1);
557+ *op3_p = TREE_OPERAND (expr, 2);
558+ }
559+ else if (grhs_class == GIMPLE_BINARY_RHS)
560+ {
561+ *op1_p = TREE_OPERAND (expr, 0);
562+ *op2_p = TREE_OPERAND (expr, 1);
563+ *op3_p = NULL_TREE;
564 }
565 else if (grhs_class == GIMPLE_UNARY_RHS)
566 {
567 *op1_p = TREE_OPERAND (expr, 0);
568 *op2_p = NULL_TREE;
569+ *op3_p = NULL_TREE;
570 }
571 else if (grhs_class == GIMPLE_SINGLE_RHS)
572 {
573 *op1_p = expr;
574 *op2_p = NULL_TREE;
575+ *op3_p = NULL_TREE;
576 }
577 else
578 gcc_unreachable ();
579@@ -329,10 +338,10 @@
580 gimple_build_assign_stat (tree lhs, tree rhs MEM_STAT_DECL)
581 {
582 enum tree_code subcode;
583- tree op1, op2;
584+ tree op1, op2, op3;
585
586- extract_ops_from_tree (rhs, &subcode, &op1, &op2);
587- return gimple_build_assign_with_ops_stat (subcode, lhs, op1, op2
588+ extract_ops_from_tree_1 (rhs, &subcode, &op1, &op2, &op3);
589+ return gimple_build_assign_with_ops_stat (subcode, lhs, op1, op2, op3
590 PASS_MEM_STAT);
591 }
592
593@@ -343,7 +352,7 @@
594
595 gimple
596 gimple_build_assign_with_ops_stat (enum tree_code subcode, tree lhs, tree op1,
597- tree op2 MEM_STAT_DECL)
598+ tree op2, tree op3 MEM_STAT_DECL)
599 {
600 unsigned num_ops;
601 gimple p;
602@@ -362,6 +371,12 @@
603 gimple_assign_set_rhs2 (p, op2);
604 }
605
606+ if (op3)
607+ {
608+ gcc_assert (num_ops > 3);
609+ gimple_assign_set_rhs3 (p, op3);
610+ }
611+
612 return p;
613 }
614
615@@ -1860,22 +1875,22 @@
616 gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *gsi, tree expr)
617 {
618 enum tree_code subcode;
619- tree op1, op2;
620+ tree op1, op2, op3;
621
622- extract_ops_from_tree (expr, &subcode, &op1, &op2);
623- gimple_assign_set_rhs_with_ops (gsi, subcode, op1, op2);
624+ extract_ops_from_tree_1 (expr, &subcode, &op1, &op2, &op3);
625+ gimple_assign_set_rhs_with_ops_1 (gsi, subcode, op1, op2, op3);
626 }
627
628
629 /* Set the RHS of assignment statement pointed-to by GSI to CODE with
630- operands OP1 and OP2.
631+ operands OP1, OP2 and OP3.
632
633 NOTE: The statement pointed-to by GSI may be reallocated if it
634 did not have enough operand slots. */
635
636 void
637-gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
638- tree op1, tree op2)
639+gimple_assign_set_rhs_with_ops_1 (gimple_stmt_iterator *gsi, enum tree_code code,
640+ tree op1, tree op2, tree op3)
641 {
642 unsigned new_rhs_ops = get_gimple_rhs_num_ops (code);
643 gimple stmt = gsi_stmt (*gsi);
644@@ -1899,6 +1914,8 @@
645 gimple_assign_set_rhs1 (stmt, op1);
646 if (new_rhs_ops > 1)
647 gimple_assign_set_rhs2 (stmt, op2);
648+ if (new_rhs_ops > 2)
649+ gimple_assign_set_rhs3 (stmt, op3);
650 }
651
652
653@@ -2378,6 +2395,8 @@
654 return 1;
655 else if (rhs_class == GIMPLE_BINARY_RHS)
656 return 2;
657+ else if (rhs_class == GIMPLE_TERNARY_RHS)
658+ return 3;
659 else
660 gcc_unreachable ();
661 }
662@@ -2394,6 +2413,8 @@
663 || (SYM) == TRUTH_OR_EXPR \
664 || (SYM) == TRUTH_XOR_EXPR) ? GIMPLE_BINARY_RHS \
665 : (SYM) == TRUTH_NOT_EXPR ? GIMPLE_UNARY_RHS \
666+ : ((SYM) == WIDEN_MULT_PLUS_EXPR \
667+ || (SYM) == WIDEN_MULT_MINUS_EXPR) ? GIMPLE_TERNARY_RHS \
668 : ((SYM) == COND_EXPR \
669 || (SYM) == CONSTRUCTOR \
670 || (SYM) == OBJ_TYPE_REF \
671
672=== modified file 'gcc/gimple.h'
673--- old/gcc/gimple.h 2010-08-10 13:31:21 +0000
674+++ new/gcc/gimple.h 2010-09-16 09:15:46 +0000
675@@ -80,6 +80,7 @@
676 enum gimple_rhs_class
677 {
678 GIMPLE_INVALID_RHS, /* The expression cannot be used on the RHS. */
679+ GIMPLE_TERNARY_RHS, /* The expression is a ternary operation. */
680 GIMPLE_BINARY_RHS, /* The expression is a binary operation. */
681 GIMPLE_UNARY_RHS, /* The expression is a unary operation. */
682 GIMPLE_SINGLE_RHS /* The expression is a single object (an SSA
683@@ -786,12 +787,14 @@
684 gimple gimple_build_assign_stat (tree, tree MEM_STAT_DECL);
685 #define gimple_build_assign(l,r) gimple_build_assign_stat (l, r MEM_STAT_INFO)
686
687-void extract_ops_from_tree (tree, enum tree_code *, tree *, tree *);
688+void extract_ops_from_tree_1 (tree, enum tree_code *, tree *, tree *, tree *);
689
690 gimple gimple_build_assign_with_ops_stat (enum tree_code, tree, tree,
691- tree MEM_STAT_DECL);
692-#define gimple_build_assign_with_ops(c,o1,o2,o3) \
693- gimple_build_assign_with_ops_stat (c, o1, o2, o3 MEM_STAT_INFO)
694+ tree, tree MEM_STAT_DECL);
695+#define gimple_build_assign_with_ops(c,o1,o2,o3) \
696+ gimple_build_assign_with_ops_stat (c, o1, o2, o3, NULL_TREE MEM_STAT_INFO)
697+#define gimple_build_assign_with_ops3(c,o1,o2,o3,o4) \
698+ gimple_build_assign_with_ops_stat (c, o1, o2, o3, o4 MEM_STAT_INFO)
699
700 gimple gimple_build_debug_bind_stat (tree, tree, gimple MEM_STAT_DECL);
701 #define gimple_build_debug_bind(var,val,stmt) \
702@@ -850,8 +853,8 @@
703 bool gimple_assign_unary_nop_p (gimple);
704 void gimple_set_bb (gimple, struct basic_block_def *);
705 void gimple_assign_set_rhs_from_tree (gimple_stmt_iterator *, tree);
706-void gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *, enum tree_code,
707- tree, tree);
708+void gimple_assign_set_rhs_with_ops_1 (gimple_stmt_iterator *, enum tree_code,
709+ tree, tree, tree);
710 tree gimple_get_lhs (const_gimple);
711 void gimple_set_lhs (gimple, tree);
712 void gimple_replace_lhs (gimple, tree);
713@@ -1793,6 +1796,63 @@
714 gimple_set_op (gs, 2, rhs);
715 }
716
717+/* Return the third operand on the RHS of assignment statement GS.
718+ If GS does not have two operands, NULL is returned instead. */
719+
720+static inline tree
721+gimple_assign_rhs3 (const_gimple gs)
722+{
723+ GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
724+
725+ if (gimple_num_ops (gs) >= 4)
726+ return gimple_op (gs, 3);
727+ else
728+ return NULL_TREE;
729+}
730+
731+/* Return a pointer to the third operand on the RHS of assignment
732+ statement GS. */
733+
734+static inline tree *
735+gimple_assign_rhs3_ptr (const_gimple gs)
736+{
737+ GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
738+ return gimple_op_ptr (gs, 3);
739+}
740+
741+
742+/* Set RHS to be the third operand on the RHS of assignment statement GS. */
743+
744+static inline void
745+gimple_assign_set_rhs3 (gimple gs, tree rhs)
746+{
747+ GIMPLE_CHECK (gs, GIMPLE_ASSIGN);
748+
749+ gimple_set_op (gs, 3, rhs);
750+}
751+
752+/* A wrapper around gimple_assign_set_rhs_with_ops_1, for callers which expect
753+ to see only a maximum of two operands. */
754+
755+static inline void
756+gimple_assign_set_rhs_with_ops (gimple_stmt_iterator *gsi, enum tree_code code,
757+ tree op1, tree op2)
758+{
759+ gimple_assign_set_rhs_with_ops_1 (gsi, code, op1, op2, NULL);
760+}
761+
762+/* A wrapper around extract_ops_from_tree_1, for callers which expect
763+ to see only a maximum of two operands. */
764+
765+static inline void
766+extract_ops_from_tree (tree expr, enum tree_code *code, tree *op0,
767+ tree *op1)
768+{
769+ tree op2;
770+ extract_ops_from_tree_1 (expr, code, op0, op1, &op2);
771+ gcc_assert (op2 == NULL_TREE);
772+}
773+
774 /* Returns true if GS is a nontemporal move. */
775
776 static inline bool
777
778=== modified file 'gcc/optabs.c'
779--- old/gcc/optabs.c 2010-03-19 19:45:01 +0000
780+++ new/gcc/optabs.c 2010-09-16 09:15:46 +0000
781@@ -408,6 +408,20 @@
782 case DOT_PROD_EXPR:
783 return TYPE_UNSIGNED (type) ? udot_prod_optab : sdot_prod_optab;
784
785+ case WIDEN_MULT_PLUS_EXPR:
786+ return (TYPE_UNSIGNED (type)
787+ ? (TYPE_SATURATING (type)
788+ ? usmadd_widen_optab : umadd_widen_optab)
789+ : (TYPE_SATURATING (type)
790+ ? ssmadd_widen_optab : smadd_widen_optab));
791+
792+ case WIDEN_MULT_MINUS_EXPR:
793+ return (TYPE_UNSIGNED (type)
794+ ? (TYPE_SATURATING (type)
795+ ? usmsub_widen_optab : umsub_widen_optab)
796+ : (TYPE_SATURATING (type)
797+ ? ssmsub_widen_optab : smsub_widen_optab));
798+
799 case REDUC_MAX_EXPR:
800 return TYPE_UNSIGNED (type) ? reduc_umax_optab : reduc_smax_optab;
801
802@@ -547,7 +561,12 @@
803 tmode0 = TYPE_MODE (TREE_TYPE (oprnd0));
804 widen_pattern_optab =
805 optab_for_tree_code (ops->code, TREE_TYPE (oprnd0), optab_default);
806- icode = (int) optab_handler (widen_pattern_optab, tmode0)->insn_code;
807+ if (ops->code == WIDEN_MULT_PLUS_EXPR
808+ || ops->code == WIDEN_MULT_MINUS_EXPR)
809+ icode = (int) optab_handler (widen_pattern_optab,
810+ TYPE_MODE (TREE_TYPE (ops->op2)))->insn_code;
811+ else
812+ icode = (int) optab_handler (widen_pattern_optab, tmode0)->insn_code;
813 gcc_assert (icode != CODE_FOR_nothing);
814 xmode0 = insn_data[icode].operand[1].mode;
815
816
817=== modified file 'gcc/testsuite/gcc.target/arm/wmul-1.c'
818--- old/gcc/testsuite/gcc.target/arm/wmul-1.c 2010-09-01 13:29:58 +0000
819+++ new/gcc/testsuite/gcc.target/arm/wmul-1.c 2010-09-16 09:15:46 +0000
820@@ -15,4 +15,4 @@
821 return sqr;
822 }
823
824-/* { dg-final { scan-assembler-times "smulbb" 2 } } */
825+/* { dg-final { scan-assembler-times "smlabb" 2 } } */
826
827=== modified file 'gcc/tree-cfg.c'
828--- old/gcc/tree-cfg.c 2010-09-01 13:29:58 +0000
829+++ new/gcc/tree-cfg.c 2010-09-16 09:15:46 +0000
830@@ -3483,6 +3483,65 @@
831 return false;
832 }
833
834+/* Verify a gimple assignment statement STMT with a ternary rhs.
835+ Returns true if anything is wrong. */
836+
837+static bool
838+verify_gimple_assign_ternary (gimple stmt)
839+{
840+ enum tree_code rhs_code = gimple_assign_rhs_code (stmt);
841+ tree lhs = gimple_assign_lhs (stmt);
842+ tree lhs_type = TREE_TYPE (lhs);
843+ tree rhs1 = gimple_assign_rhs1 (stmt);
844+ tree rhs1_type = TREE_TYPE (rhs1);
845+ tree rhs2 = gimple_assign_rhs2 (stmt);
846+ tree rhs2_type = TREE_TYPE (rhs2);
847+ tree rhs3 = gimple_assign_rhs3 (stmt);
848+ tree rhs3_type = TREE_TYPE (rhs3);
849+
850+ if (!is_gimple_reg (lhs)
851+ && !(optimize == 0
852+ && TREE_CODE (lhs_type) == COMPLEX_TYPE))
853+ {
854+ error ("non-register as LHS of ternary operation");
855+ return true;
856+ }
857+
858+ if (!is_gimple_val (rhs1)
859+ || !is_gimple_val (rhs2)
860+ || !is_gimple_val (rhs3))
861+ {
862+ error ("invalid operands in ternary operation");
863+ return true;
864+ }
865+
866+ /* First handle operations that involve different types. */
867+ switch (rhs_code)
868+ {
869+ case WIDEN_MULT_PLUS_EXPR:
870+ case WIDEN_MULT_MINUS_EXPR:
871+ if ((!INTEGRAL_TYPE_P (rhs1_type)
872+ && !FIXED_POINT_TYPE_P (rhs1_type))
873+ || !useless_type_conversion_p (rhs1_type, rhs2_type)
874+ || !useless_type_conversion_p (lhs_type, rhs3_type)
875+ || 2 * TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (lhs_type)
876+ || TYPE_PRECISION (rhs1_type) != TYPE_PRECISION (rhs2_type))
877+ {
878+ error ("type mismatch in widening multiply-accumulate expression");
879+ debug_generic_expr (lhs_type);
880+ debug_generic_expr (rhs1_type);
881+ debug_generic_expr (rhs2_type);
882+ debug_generic_expr (rhs3_type);
883+ return true;
884+ }
885+ break;
886+
887+ default:
888+ gcc_unreachable ();
889+ }
890+ return false;
891+}
892+
893 /* Verify a gimple assignment statement STMT with a single rhs.
894 Returns true if anything is wrong. */
895
896@@ -3615,6 +3674,9 @@
897 case GIMPLE_BINARY_RHS:
898 return verify_gimple_assign_binary (stmt);
899
900+ case GIMPLE_TERNARY_RHS:
901+ return verify_gimple_assign_ternary (stmt);
902+
903 default:
904 gcc_unreachable ();
905 }
906
907=== modified file 'gcc/tree-inline.c'
908--- old/gcc/tree-inline.c 2010-09-01 13:29:58 +0000
909+++ new/gcc/tree-inline.c 2010-09-16 09:15:46 +0000
910@@ -3199,6 +3199,8 @@
911 case WIDEN_SUM_EXPR:
912 case WIDEN_MULT_EXPR:
913 case DOT_PROD_EXPR:
914+ case WIDEN_MULT_PLUS_EXPR:
915+ case WIDEN_MULT_MINUS_EXPR:
916
917 case VEC_WIDEN_MULT_HI_EXPR:
918 case VEC_WIDEN_MULT_LO_EXPR:
919
920=== modified file 'gcc/tree-pretty-print.c'
921--- old/gcc/tree-pretty-print.c 2009-11-30 10:36:54 +0000
922+++ new/gcc/tree-pretty-print.c 2010-09-16 09:15:46 +0000
923@@ -1939,6 +1939,26 @@
924 pp_string (buffer, " > ");
925 break;
926
927+ case WIDEN_MULT_PLUS_EXPR:
928+ pp_string (buffer, " WIDEN_MULT_PLUS_EXPR < ");
929+ dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
930+ pp_string (buffer, ", ");
931+ dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
932+ pp_string (buffer, ", ");
933+ dump_generic_node (buffer, TREE_OPERAND (node, 2), spc, flags, false);
934+ pp_string (buffer, " > ");
935+ break;
936+
937+ case WIDEN_MULT_MINUS_EXPR:
938+ pp_string (buffer, " WIDEN_MULT_MINUS_EXPR < ");
939+ dump_generic_node (buffer, TREE_OPERAND (node, 0), spc, flags, false);
940+ pp_string (buffer, ", ");
941+ dump_generic_node (buffer, TREE_OPERAND (node, 1), spc, flags, false);
942+ pp_string (buffer, ", ");
943+ dump_generic_node (buffer, TREE_OPERAND (node, 2), spc, flags, false);
944+ pp_string (buffer, " > ");
945+ break;
946+
947 case OMP_PARALLEL:
948 pp_string (buffer, "#pragma omp parallel");
949 dump_omp_clauses (buffer, OMP_PARALLEL_CLAUSES (node), spc, flags);
950@@ -2432,6 +2452,8 @@
951 case VEC_WIDEN_MULT_LO_EXPR:
952 case WIDEN_MULT_EXPR:
953 case DOT_PROD_EXPR:
954+ case WIDEN_MULT_PLUS_EXPR:
955+ case WIDEN_MULT_MINUS_EXPR:
956 case MULT_EXPR:
957 case TRUNC_DIV_EXPR:
958 case CEIL_DIV_EXPR:
959
960=== modified file 'gcc/tree-ssa-ccp.c'
961--- old/gcc/tree-ssa-ccp.c 2010-08-10 13:31:21 +0000
962+++ new/gcc/tree-ssa-ccp.c 2010-09-16 09:15:46 +0000
963@@ -915,6 +915,23 @@
964 TREE_TYPE (TREE_OPERAND (addr, 0))));
965 }
966
967+/* Get operand number OPNR from the rhs of STMT. Before returning it,
968+ simplify it to a constant if possible. */
969+
970+static tree
971+get_rhs_assign_op_for_ccp (gimple stmt, int opnr)
972+{
973+ tree op = gimple_op (stmt, opnr);
974+
975+ if (TREE_CODE (op) == SSA_NAME)
976+ {
977+ prop_value_t *val = get_value (op);
978+ if (val->lattice_val == CONSTANT)
979+ op = get_value (op)->value;
980+ }
981+ return op;
982+}
983+
984 /* CCP specific front-end to the non-destructive constant folding
985 routines.
986
987@@ -1037,15 +1054,7 @@
988 Note that we know the single operand must be a constant,
989 so this should almost always return a simplified RHS. */
990 tree lhs = gimple_assign_lhs (stmt);
991- tree op0 = gimple_assign_rhs1 (stmt);
992-
993- /* Simplify the operand down to a constant. */
994- if (TREE_CODE (op0) == SSA_NAME)
995- {
996- prop_value_t *val = get_value (op0);
997- if (val->lattice_val == CONSTANT)
998- op0 = get_value (op0)->value;
999- }
1000+ tree op0 = get_rhs_assign_op_for_ccp (stmt, 1);
1001
1002 /* Conversions are useless for CCP purposes if they are
1003 value-preserving. Thus the restrictions that
1004@@ -1082,23 +1091,8 @@
1005 case GIMPLE_BINARY_RHS:
1006 {
1007 /* Handle binary operators that can appear in GIMPLE form. */
1008- tree op0 = gimple_assign_rhs1 (stmt);
1009- tree op1 = gimple_assign_rhs2 (stmt);
1010-
1011- /* Simplify the operands down to constants when appropriate. */
1012- if (TREE_CODE (op0) == SSA_NAME)
1013- {
1014- prop_value_t *val = get_value (op0);
1015- if (val->lattice_val == CONSTANT)
1016- op0 = val->value;
1017- }
1018-
1019- if (TREE_CODE (op1) == SSA_NAME)
1020- {
1021- prop_value_t *val = get_value (op1);
1022- if (val->lattice_val == CONSTANT)
1023- op1 = val->value;
1024- }
1025+ tree op0 = get_rhs_assign_op_for_ccp (stmt, 1);
1026+ tree op1 = get_rhs_assign_op_for_ccp (stmt, 2);
1027
1028 /* Fold &foo + CST into an invariant reference if possible. */
1029 if (gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR
1030@@ -1115,6 +1109,17 @@
1031 gimple_expr_type (stmt), op0, op1);
1032 }
1033
1034+ case GIMPLE_TERNARY_RHS:
1035+ {
1036+ /* Handle binary operators that can appear in GIMPLE form. */
1037+ tree op0 = get_rhs_assign_op_for_ccp (stmt, 1);
1038+ tree op1 = get_rhs_assign_op_for_ccp (stmt, 2);
1039+ tree op2 = get_rhs_assign_op_for_ccp (stmt, 3);
1040+
1041+ return fold_ternary_loc (loc, subcode,
1042+ gimple_expr_type (stmt), op0, op1, op2);
1043+ }
1044+
1045 default:
1046 gcc_unreachable ();
1047 }
1048@@ -2959,6 +2964,33 @@
1049 }
1050 break;
1051
1052+ case GIMPLE_TERNARY_RHS:
1053+ result = fold_ternary_loc (loc, subcode,
1054+ TREE_TYPE (gimple_assign_lhs (stmt)),
1055+ gimple_assign_rhs1 (stmt),
1056+ gimple_assign_rhs2 (stmt),
1057+ gimple_assign_rhs3 (stmt));
1058+
1059+ if (result)
1060+ {
1061+ STRIP_USELESS_TYPE_CONVERSION (result);
1062+ if (valid_gimple_rhs_p (result))
1063+ return result;
1064+
1065+ /* Fold might have produced non-GIMPLE, so if we trust it blindly
1066+ we lose canonicalization opportunities. Do not go again
1067+ through fold here though, or the same non-GIMPLE will be
1068+ produced. */
1069+ if (commutative_ternary_tree_code (subcode)
1070+ && tree_swap_operands_p (gimple_assign_rhs1 (stmt),
1071+ gimple_assign_rhs2 (stmt), false))
1072+ return build3 (subcode, TREE_TYPE (gimple_assign_lhs (stmt)),
1073+ gimple_assign_rhs2 (stmt),
1074+ gimple_assign_rhs1 (stmt),
1075+ gimple_assign_rhs3 (stmt));
1076+ }
1077+ break;
1078+
1079 case GIMPLE_INVALID_RHS:
1080 gcc_unreachable ();
1081 }
1082
1083=== modified file 'gcc/tree-ssa-dom.c'
1084--- old/gcc/tree-ssa-dom.c 2010-07-20 11:44:16 +0000
1085+++ new/gcc/tree-ssa-dom.c 2010-09-16 09:15:46 +0000
1086@@ -54,6 +54,7 @@
1087 EXPR_SINGLE,
1088 EXPR_UNARY,
1089 EXPR_BINARY,
1090+ EXPR_TERNARY,
1091 EXPR_CALL
1092 };
1093
1094@@ -64,7 +65,8 @@
1095 union {
1096 struct { tree rhs; } single;
1097 struct { enum tree_code op; tree opnd; } unary;
1098- struct { enum tree_code op; tree opnd0; tree opnd1; } binary;
1099+ struct { enum tree_code op; tree opnd0, opnd1; } binary;
1100+ struct { enum tree_code op; tree opnd0, opnd1, opnd2; } ternary;
1101 struct { tree fn; bool pure; size_t nargs; tree *args; } call;
1102 } ops;
1103 };
1104@@ -214,22 +216,30 @@
1105 switch (get_gimple_rhs_class (subcode))
1106 {
1107 case GIMPLE_SINGLE_RHS:
1108- expr->kind = EXPR_SINGLE;
1109- expr->ops.single.rhs = gimple_assign_rhs1 (stmt);
1110- break;
1111+ expr->kind = EXPR_SINGLE;
1112+ expr->ops.single.rhs = gimple_assign_rhs1 (stmt);
1113+ break;
1114 case GIMPLE_UNARY_RHS:
1115- expr->kind = EXPR_UNARY;
1116+ expr->kind = EXPR_UNARY;
1117 expr->type = TREE_TYPE (gimple_assign_lhs (stmt));
1118- expr->ops.unary.op = subcode;
1119- expr->ops.unary.opnd = gimple_assign_rhs1 (stmt);
1120- break;
1121+ expr->ops.unary.op = subcode;
1122+ expr->ops.unary.opnd = gimple_assign_rhs1 (stmt);
1123+ break;
1124 case GIMPLE_BINARY_RHS:
1125- expr->kind = EXPR_BINARY;
1126- expr->type = TREE_TYPE (gimple_assign_lhs (stmt));
1127- expr->ops.binary.op = subcode;
1128- expr->ops.binary.opnd0 = gimple_assign_rhs1 (stmt);
1129- expr->ops.binary.opnd1 = gimple_assign_rhs2 (stmt);
1130- break;
1131+ expr->kind = EXPR_BINARY;
1132+ expr->type = TREE_TYPE (gimple_assign_lhs (stmt));
1133+ expr->ops.binary.op = subcode;
1134+ expr->ops.binary.opnd0 = gimple_assign_rhs1 (stmt);
1135+ expr->ops.binary.opnd1 = gimple_assign_rhs2 (stmt);
1136+ break;
1137+ case GIMPLE_TERNARY_RHS:
1138+ expr->kind = EXPR_TERNARY;
1139+ expr->type = TREE_TYPE (gimple_assign_lhs (stmt));
1140+ expr->ops.ternary.op = subcode;
1141+ expr->ops.ternary.opnd0 = gimple_assign_rhs1 (stmt);
1142+ expr->ops.ternary.opnd1 = gimple_assign_rhs2 (stmt);
1143+ expr->ops.ternary.opnd2 = gimple_assign_rhs3 (stmt);
1144+ break;
1145 default:
1146 gcc_unreachable ();
1147 }
1148@@ -374,23 +384,40 @@
1149 expr1->ops.unary.opnd, 0);
1150
1151 case EXPR_BINARY:
1152- {
1153- if (expr0->ops.binary.op != expr1->ops.binary.op)
1154- return false;
1155-
1156- if (operand_equal_p (expr0->ops.binary.opnd0,
1157- expr1->ops.binary.opnd0, 0)
1158- && operand_equal_p (expr0->ops.binary.opnd1,
1159- expr1->ops.binary.opnd1, 0))
1160- return true;
1161-
1162- /* For commutative ops, allow the other order. */
1163- return (commutative_tree_code (expr0->ops.binary.op)
1164- && operand_equal_p (expr0->ops.binary.opnd0,
1165- expr1->ops.binary.opnd1, 0)
1166- && operand_equal_p (expr0->ops.binary.opnd1,
1167- expr1->ops.binary.opnd0, 0));
1168- }
1169+ if (expr0->ops.binary.op != expr1->ops.binary.op)
1170+ return false;
1171+
1172+ if (operand_equal_p (expr0->ops.binary.opnd0,
1173+ expr1->ops.binary.opnd0, 0)
1174+ && operand_equal_p (expr0->ops.binary.opnd1,
1175+ expr1->ops.binary.opnd1, 0))
1176+ return true;
1177+
1178+ /* For commutative ops, allow the other order. */
1179+ return (commutative_tree_code (expr0->ops.binary.op)
1180+ && operand_equal_p (expr0->ops.binary.opnd0,
1181+ expr1->ops.binary.opnd1, 0)
1182+ && operand_equal_p (expr0->ops.binary.opnd1,
1183+ expr1->ops.binary.opnd0, 0));
1184+
1185+ case EXPR_TERNARY:
1186+ if (expr0->ops.ternary.op != expr1->ops.ternary.op
1187+ || !operand_equal_p (expr0->ops.ternary.opnd2,
1188+ expr1->ops.ternary.opnd2, 0))
1189+ return false;
1190+
1191+ if (operand_equal_p (expr0->ops.ternary.opnd0,
1192+ expr1->ops.ternary.opnd0, 0)
1193+ && operand_equal_p (expr0->ops.ternary.opnd1,
1194+ expr1->ops.ternary.opnd1, 0))
1195+ return true;
1196+
1197+ /* For commutative ops, allow the other order. */
1198+ return (commutative_ternary_tree_code (expr0->ops.ternary.op)
1199+ && operand_equal_p (expr0->ops.ternary.opnd0,
1200+ expr1->ops.ternary.opnd1, 0)
1201+ && operand_equal_p (expr0->ops.ternary.opnd1,
1202+ expr1->ops.ternary.opnd0, 0));
1203
1204 case EXPR_CALL:
1205 {
1206@@ -453,8 +480,8 @@
1207 case EXPR_BINARY:
1208 val = iterative_hash_object (expr->ops.binary.op, val);
1209 if (commutative_tree_code (expr->ops.binary.op))
1210- val = iterative_hash_exprs_commutative (expr->ops.binary.opnd0,
1211- expr->ops.binary.opnd1, val);
1212+ val = iterative_hash_exprs_commutative (expr->ops.binary.opnd0,
1213+ expr->ops.binary.opnd1, val);
1214 else
1215 {
1216 val = iterative_hash_expr (expr->ops.binary.opnd0, val);
1217@@ -462,6 +489,19 @@
1218 }
1219 break;
1220
1221+ case EXPR_TERNARY:
1222+ val = iterative_hash_object (expr->ops.ternary.op, val);
1223+ if (commutative_ternary_tree_code (expr->ops.ternary.op))
1224+ val = iterative_hash_exprs_commutative (expr->ops.ternary.opnd0,
1225+ expr->ops.ternary.opnd1, val);
1226+ else
1227+ {
1228+ val = iterative_hash_expr (expr->ops.ternary.opnd0, val);
1229+ val = iterative_hash_expr (expr->ops.ternary.opnd1, val);
1230+ }
1231+ val = iterative_hash_expr (expr->ops.ternary.opnd2, val);
1232+ break;
1233+
1234 case EXPR_CALL:
1235 {
1236 size_t i;
1237@@ -514,6 +554,16 @@
1238 print_generic_expr (stream, element->expr.ops.binary.opnd1, 0);
1239 break;
1240
1241+ case EXPR_TERNARY:
1242+ fprintf (stream, " %s <", tree_code_name[element->expr.ops.ternary.op]);
1243+ print_generic_expr (stream, element->expr.ops.ternary.opnd0, 0);
1244+ fputs (", ", stream);
1245+ print_generic_expr (stream, element->expr.ops.ternary.opnd1, 0);
1246+ fputs (", ", stream);
1247+ print_generic_expr (stream, element->expr.ops.ternary.opnd2, 0);
1248+ fputs (">", stream);
1249+ break;
1250+
1251 case EXPR_CALL:
1252 {
1253 size_t i;
1254
1255=== modified file 'gcc/tree-ssa-math-opts.c'
1256--- old/gcc/tree-ssa-math-opts.c 2010-09-01 13:29:58 +0000
1257+++ new/gcc/tree-ssa-math-opts.c 2010-09-16 09:15:46 +0000
1258@@ -1261,6 +1261,235 @@
1259 }
1260 };
1261
1262+/* Return true if RHS is a suitable operand for a widening multiplication.
1263+ There are two cases:
1264+
1265+ - RHS makes some value twice as wide. Store that value in *NEW_RHS_OUT
1266+ if so, and store its type in *TYPE_OUT.
1267+
1268+ - RHS is an integer constant. Store that value in *NEW_RHS_OUT if so,
1269+ but leave *TYPE_OUT untouched. */
1270+
1271+static bool
1272+is_widening_mult_rhs_p (tree rhs, tree *type_out, tree *new_rhs_out)
1273+{
1274+ gimple stmt;
1275+ tree type, type1, rhs1;
1276+ enum tree_code rhs_code;
1277+
1278+ if (TREE_CODE (rhs) == SSA_NAME)
1279+ {
1280+ type = TREE_TYPE (rhs);
1281+ stmt = SSA_NAME_DEF_STMT (rhs);
1282+ if (!is_gimple_assign (stmt))
1283+ return false;
1284+
1285+ rhs_code = gimple_assign_rhs_code (stmt);
1286+ if (TREE_CODE (type) == INTEGER_TYPE
1287+ ? !CONVERT_EXPR_CODE_P (rhs_code)
1288+ : rhs_code != FIXED_CONVERT_EXPR)
1289+ return false;
1290+
1291+ rhs1 = gimple_assign_rhs1 (stmt);
1292+ type1 = TREE_TYPE (rhs1);
1293+ if (TREE_CODE (type1) != TREE_CODE (type)
1294+ || TYPE_PRECISION (type1) * 2 != TYPE_PRECISION (type))
1295+ return false;
1296+
1297+ *new_rhs_out = rhs1;
1298+ *type_out = type1;
1299+ return true;
1300+ }
1301+
1302+ if (TREE_CODE (rhs) == INTEGER_CST)
1303+ {
1304+ *new_rhs_out = rhs;
1305+ *type_out = NULL;
1306+ return true;
1307+ }
1308+
1309+ return false;
1310+}
1311+
1312+/* Return true if STMT performs a widening multiplication. If so,
1313+ store the unwidened types of the operands in *TYPE1_OUT and *TYPE2_OUT
1314+ respectively. Also fill *RHS1_OUT and *RHS2_OUT such that converting
1315+ those operands to types *TYPE1_OUT and *TYPE2_OUT would give the
1316+ operands of the multiplication. */
1317+
1318+static bool
1319+is_widening_mult_p (gimple stmt,
1320+ tree *type1_out, tree *rhs1_out,
1321+ tree *type2_out, tree *rhs2_out)
1322+{
1323+ tree type;
1324+
1325+ type = TREE_TYPE (gimple_assign_lhs (stmt));
1326+ if (TREE_CODE (type) != INTEGER_TYPE
1327+ && TREE_CODE (type) != FIXED_POINT_TYPE)
1328+ return false;
1329+
1330+ if (!is_widening_mult_rhs_p (gimple_assign_rhs1 (stmt), type1_out, rhs1_out))
1331+ return false;
1332+
1333+ if (!is_widening_mult_rhs_p (gimple_assign_rhs2 (stmt), type2_out, rhs2_out))
1334+ return false;
1335+
1336+ if (*type1_out == NULL)
1337+ {
1338+ if (*type2_out == NULL || !int_fits_type_p (*rhs1_out, *type2_out))
1339+ return false;
1340+ *type1_out = *type2_out;
1341+ }
1342+
1343+ if (*type2_out == NULL)
1344+ {
1345+ if (!int_fits_type_p (*rhs2_out, *type1_out))
1346+ return false;
1347+ *type2_out = *type1_out;
1348+ }
1349+
1350+ return true;
1351+}
1352+
1353+/* Process a single gimple statement STMT, which has a MULT_EXPR as
1354+ its rhs, and try to convert it into a WIDEN_MULT_EXPR. The return
1355+ value is true iff we converted the statement. */
1356+
1357+static bool
1358+convert_mult_to_widen (gimple stmt)
1359+{
1360+ tree lhs, rhs1, rhs2, type, type1, type2;
1361+ enum insn_code handler;
1362+
1363+ lhs = gimple_assign_lhs (stmt);
1364+ type = TREE_TYPE (lhs);
1365+ if (TREE_CODE (type) != INTEGER_TYPE)
1366+ return false;
1367+
1368+ if (!is_widening_mult_p (stmt, &type1, &rhs1, &type2, &rhs2))
1369+ return false;
1370+
1371+ if (TYPE_UNSIGNED (type1) && TYPE_UNSIGNED (type2))
1372+ handler = optab_handler (umul_widen_optab, TYPE_MODE (type))->insn_code;
1373+ else if (!TYPE_UNSIGNED (type1) && !TYPE_UNSIGNED (type2))
1374+ handler = optab_handler (smul_widen_optab, TYPE_MODE (type))->insn_code;
1375+ else
1376+ handler = optab_handler (usmul_widen_optab, TYPE_MODE (type))->insn_code;
1377+
1378+ if (handler == CODE_FOR_nothing)
1379+ return false;
1380+
1381+ gimple_assign_set_rhs1 (stmt, fold_convert (type1, rhs1));
1382+ gimple_assign_set_rhs2 (stmt, fold_convert (type2, rhs2));
1383+ gimple_assign_set_rhs_code (stmt, WIDEN_MULT_EXPR);
1384+ update_stmt (stmt);
1385+ return true;
1386+}
1387+
1388+/* Process a single gimple statement STMT, which is found at the
1389+ iterator GSI and has a either a PLUS_EXPR or a MINUS_EXPR as its
1390+ rhs (given by CODE), and try to convert it into a
1391+ WIDEN_MULT_PLUS_EXPR or a WIDEN_MULT_MINUS_EXPR. The return value
1392+ is true iff we converted the statement. */
1393+
1394+static bool
1395+convert_plusminus_to_widen (gimple_stmt_iterator *gsi, gimple stmt,
1396+ enum tree_code code)
1397+{
1398+ gimple rhs1_stmt = NULL, rhs2_stmt = NULL;
1399+ tree type, type1, type2;
1400+ tree lhs, rhs1, rhs2, mult_rhs1, mult_rhs2, add_rhs;
1401+ enum tree_code rhs1_code = ERROR_MARK, rhs2_code = ERROR_MARK;
1402+ optab this_optab;
1403+ enum tree_code wmult_code;
1404+
1405+ lhs = gimple_assign_lhs (stmt);
1406+ type = TREE_TYPE (lhs);
1407+ if (TREE_CODE (type) != INTEGER_TYPE
1408+ && TREE_CODE (type) != FIXED_POINT_TYPE)
1409+ return false;
1410+
1411+ if (code == MINUS_EXPR)
1412+ wmult_code = WIDEN_MULT_MINUS_EXPR;
1413+ else
1414+ wmult_code = WIDEN_MULT_PLUS_EXPR;
1415+
1416+ rhs1 = gimple_assign_rhs1 (stmt);
1417+ rhs2 = gimple_assign_rhs2 (stmt);
1418+
1419+ if (TREE_CODE (rhs1) == SSA_NAME)
1420+ {
1421+ rhs1_stmt = SSA_NAME_DEF_STMT (rhs1);
1422+ if (is_gimple_assign (rhs1_stmt))
1423+ rhs1_code = gimple_assign_rhs_code (rhs1_stmt);
1424+ }
1425+ else
1426+ return false;
1427+
1428+ if (TREE_CODE (rhs2) == SSA_NAME)
1429+ {
1430+ rhs2_stmt = SSA_NAME_DEF_STMT (rhs2);
1431+ if (is_gimple_assign (rhs2_stmt))
1432+ rhs2_code = gimple_assign_rhs_code (rhs2_stmt);
1433+ }
1434+ else
1435+ return false;
1436+
1437+ if (code == PLUS_EXPR && rhs1_code == MULT_EXPR)
1438+ {
1439+ if (!is_widening_mult_p (rhs1_stmt, &type1, &mult_rhs1,
1440+ &type2, &mult_rhs2))
1441+ return false;
1442+ add_rhs = rhs2;
1443+ }
1444+ else if (rhs2_code == MULT_EXPR)
1445+ {
1446+ if (!is_widening_mult_p (rhs2_stmt, &type1, &mult_rhs1,
1447+ &type2, &mult_rhs2))
1448+ return false;
1449+ add_rhs = rhs1;
1450+ }
1451+ else if (code == PLUS_EXPR && rhs1_code == WIDEN_MULT_EXPR)
1452+ {
1453+ mult_rhs1 = gimple_assign_rhs1 (rhs1_stmt);
1454+ mult_rhs2 = gimple_assign_rhs2 (rhs1_stmt);
1455+ type1 = TREE_TYPE (mult_rhs1);
1456+ type2 = TREE_TYPE (mult_rhs2);
1457+ add_rhs = rhs2;
1458+ }
1459+ else if (rhs2_code == WIDEN_MULT_EXPR)
1460+ {
1461+ mult_rhs1 = gimple_assign_rhs1 (rhs2_stmt);
1462+ mult_rhs2 = gimple_assign_rhs2 (rhs2_stmt);
1463+ type1 = TREE_TYPE (mult_rhs1);
1464+ type2 = TREE_TYPE (mult_rhs2);
1465+ add_rhs = rhs1;
1466+ }
1467+ else
1468+ return false;
1469+
1470+ if (TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2))
1471+ return false;
1472+
1473+ /* Verify that the machine can perform a widening multiply
1474+ accumulate in this mode/signedness combination, otherwise
1475+ this transformation is likely to pessimize code. */
1476+ this_optab = optab_for_tree_code (wmult_code, type1, optab_default);
1477+ if (optab_handler (this_optab, TYPE_MODE (type))->insn_code
1478+ == CODE_FOR_nothing)
1479+ return false;
1480+
1481+ /* ??? May need some type verification here? */
1482+
1483+ gimple_assign_set_rhs_with_ops_1 (gsi, wmult_code,
1484+ fold_convert (type1, mult_rhs1),
1485+ fold_convert (type2, mult_rhs2),
1486+ add_rhs);
1487+ update_stmt (gsi_stmt (*gsi));
1488+ return true;
1489+}
1490+
1491 /* Find integer multiplications where the operands are extended from
1492 smaller types, and replace the MULT_EXPR with a WIDEN_MULT_EXPR
1493 where appropriate. */
1494@@ -1278,94 +1507,19 @@
1495 for (gsi = gsi_after_labels (bb); !gsi_end_p (gsi); gsi_next (&gsi))
1496 {
1497 gimple stmt = gsi_stmt (gsi);
1498- gimple rhs1_stmt = NULL, rhs2_stmt = NULL;
1499- tree type, type1 = NULL, type2 = NULL;
1500- tree rhs1, rhs2, rhs1_convop = NULL, rhs2_convop = NULL;
1501- enum tree_code rhs1_code, rhs2_code;
1502-
1503- if (!is_gimple_assign (stmt)
1504- || gimple_assign_rhs_code (stmt) != MULT_EXPR)
1505- continue;
1506-
1507- type = TREE_TYPE (gimple_assign_lhs (stmt));
1508-
1509- if (TREE_CODE (type) != INTEGER_TYPE)
1510- continue;
1511-
1512- rhs1 = gimple_assign_rhs1 (stmt);
1513- rhs2 = gimple_assign_rhs2 (stmt);
1514-
1515- if (TREE_CODE (rhs1) == SSA_NAME)
1516- {
1517- rhs1_stmt = SSA_NAME_DEF_STMT (rhs1);
1518- if (!is_gimple_assign (rhs1_stmt))
1519- continue;
1520- rhs1_code = gimple_assign_rhs_code (rhs1_stmt);
1521- if (!CONVERT_EXPR_CODE_P (rhs1_code))
1522- continue;
1523- rhs1_convop = gimple_assign_rhs1 (rhs1_stmt);
1524- type1 = TREE_TYPE (rhs1_convop);
1525- if (TYPE_PRECISION (type1) * 2 != TYPE_PRECISION (type))
1526- continue;
1527- }
1528- else if (TREE_CODE (rhs1) != INTEGER_CST)
1529- continue;
1530-
1531- if (TREE_CODE (rhs2) == SSA_NAME)
1532- {
1533- rhs2_stmt = SSA_NAME_DEF_STMT (rhs2);
1534- if (!is_gimple_assign (rhs2_stmt))
1535- continue;
1536- rhs2_code = gimple_assign_rhs_code (rhs2_stmt);
1537- if (!CONVERT_EXPR_CODE_P (rhs2_code))
1538- continue;
1539- rhs2_convop = gimple_assign_rhs1 (rhs2_stmt);
1540- type2 = TREE_TYPE (rhs2_convop);
1541- if (TYPE_PRECISION (type2) * 2 != TYPE_PRECISION (type))
1542- continue;
1543- }
1544- else if (TREE_CODE (rhs2) != INTEGER_CST)
1545- continue;
1546-
1547- if (rhs1_stmt == NULL && rhs2_stmt == NULL)
1548- continue;
1549-
1550- /* Verify that the machine can perform a widening multiply in this
1551- mode/signedness combination, otherwise this transformation is
1552- likely to pessimize code. */
1553- if ((rhs1_stmt == NULL || TYPE_UNSIGNED (type1))
1554- && (rhs2_stmt == NULL || TYPE_UNSIGNED (type2))
1555- && (optab_handler (umul_widen_optab, TYPE_MODE (type))
1556- ->insn_code == CODE_FOR_nothing))
1557- continue;
1558- else if ((rhs1_stmt == NULL || !TYPE_UNSIGNED (type1))
1559- && (rhs2_stmt == NULL || !TYPE_UNSIGNED (type2))
1560- && (optab_handler (smul_widen_optab, TYPE_MODE (type))
1561- ->insn_code == CODE_FOR_nothing))
1562- continue;
1563- else if (rhs1_stmt != NULL && rhs2_stmt != 0
1564- && (TYPE_UNSIGNED (type1) != TYPE_UNSIGNED (type2))
1565- && (optab_handler (usmul_widen_optab, TYPE_MODE (type))
1566- ->insn_code == CODE_FOR_nothing))
1567- continue;
1568-
1569- if ((rhs1_stmt == NULL && !int_fits_type_p (rhs1, type2))
1570- || (rhs2_stmt == NULL && !int_fits_type_p (rhs2, type1)))
1571- continue;
1572-
1573- if (rhs1_stmt == NULL)
1574- gimple_assign_set_rhs1 (stmt, fold_convert (type2, rhs1));
1575- else
1576- gimple_assign_set_rhs1 (stmt, rhs1_convop);
1577- if (rhs2_stmt == NULL)
1578- gimple_assign_set_rhs2 (stmt, fold_convert (type1, rhs2));
1579- else
1580- gimple_assign_set_rhs2 (stmt, rhs2_convop);
1581- gimple_assign_set_rhs_code (stmt, WIDEN_MULT_EXPR);
1582- update_stmt (stmt);
1583- changed = true;
1584+ enum tree_code code;
1585+
1586+ if (!is_gimple_assign (stmt))
1587+ continue;
1588+
1589+ code = gimple_assign_rhs_code (stmt);
1590+ if (code == MULT_EXPR)
1591+ changed |= convert_mult_to_widen (stmt);
1592+ else if (code == PLUS_EXPR || code == MINUS_EXPR)
1593+ changed |= convert_plusminus_to_widen (&gsi, stmt, code);
1594 }
1595 }
1596+
1597 return (changed ? TODO_dump_func | TODO_update_ssa | TODO_verify_ssa
1598 | TODO_verify_stmts : 0);
1599 }
1600
1601=== modified file 'gcc/tree-ssa-operands.c'
1602--- old/gcc/tree-ssa-operands.c 2010-04-02 18:54:46 +0000
1603+++ new/gcc/tree-ssa-operands.c 2010-09-16 09:15:46 +0000
1604@@ -994,11 +994,13 @@
1605
1606 case DOT_PROD_EXPR:
1607 case REALIGN_LOAD_EXPR:
1608+ case WIDEN_MULT_PLUS_EXPR:
1609+ case WIDEN_MULT_MINUS_EXPR:
1610 {
1611 get_expr_operands (stmt, &TREE_OPERAND (expr, 0), flags);
1612- get_expr_operands (stmt, &TREE_OPERAND (expr, 1), flags);
1613- get_expr_operands (stmt, &TREE_OPERAND (expr, 2), flags);
1614- return;
1615+ get_expr_operands (stmt, &TREE_OPERAND (expr, 1), flags);
1616+ get_expr_operands (stmt, &TREE_OPERAND (expr, 2), flags);
1617+ return;
1618 }
1619
1620 case FUNCTION_DECL:
1621
1622=== modified file 'gcc/tree-ssa-sccvn.c'
1623--- old/gcc/tree-ssa-sccvn.c 2010-05-14 11:40:18 +0000
1624+++ new/gcc/tree-ssa-sccvn.c 2010-09-16 09:15:46 +0000
1625@@ -2277,6 +2277,10 @@
1626 case GIMPLE_BINARY_RHS:
1627 return (is_gimple_min_invariant (gimple_assign_rhs1 (stmt))
1628 || is_gimple_min_invariant (gimple_assign_rhs2 (stmt)));
1629+ case GIMPLE_TERNARY_RHS:
1630+ return (is_gimple_min_invariant (gimple_assign_rhs1 (stmt))
1631+ || is_gimple_min_invariant (gimple_assign_rhs2 (stmt))
1632+ || is_gimple_min_invariant (gimple_assign_rhs3 (stmt)));
1633 case GIMPLE_SINGLE_RHS:
1634 /* Constants inside reference ops are rarely interesting, but
1635 it can take a lot of looking to find them. */
1636
1637=== modified file 'gcc/tree-ssa-threadedge.c'
1638--- old/gcc/tree-ssa-threadedge.c 2009-11-25 10:55:54 +0000
1639+++ new/gcc/tree-ssa-threadedge.c 2010-09-16 09:15:46 +0000
1640@@ -247,14 +247,14 @@
1641
1642 return fold (rhs);
1643 }
1644- break;
1645+
1646 case GIMPLE_UNARY_RHS:
1647 {
1648 tree lhs = gimple_assign_lhs (stmt);
1649 tree op0 = gimple_assign_rhs1 (stmt);
1650 return fold_unary (subcode, TREE_TYPE (lhs), op0);
1651 }
1652- break;
1653+
1654 case GIMPLE_BINARY_RHS:
1655 {
1656 tree lhs = gimple_assign_lhs (stmt);
1657@@ -262,7 +262,16 @@
1658 tree op1 = gimple_assign_rhs2 (stmt);
1659 return fold_binary (subcode, TREE_TYPE (lhs), op0, op1);
1660 }
1661- break;
1662+
1663+ case GIMPLE_TERNARY_RHS:
1664+ {
1665+ tree lhs = gimple_assign_lhs (stmt);
1666+ tree op0 = gimple_assign_rhs1 (stmt);
1667+ tree op1 = gimple_assign_rhs2 (stmt);
1668+ tree op2 = gimple_assign_rhs3 (stmt);
1669+ return fold_ternary (subcode, TREE_TYPE (lhs), op0, op1, op2);
1670+ }
1671+
1672 default:
1673 gcc_unreachable ();
1674 }
1675
1676=== modified file 'gcc/tree-vrp.c'
1677--- old/gcc/tree-vrp.c 2010-06-14 14:23:31 +0000
1678+++ new/gcc/tree-vrp.c 2010-09-16 09:15:46 +0000
1679@@ -864,6 +864,8 @@
1680 gimple_assign_rhs1 (stmt),
1681 gimple_assign_rhs2 (stmt),
1682 strict_overflow_p);
1683+ case GIMPLE_TERNARY_RHS:
1684+ return false;
1685 case GIMPLE_SINGLE_RHS:
1686 return tree_single_nonnegative_warnv_p (gimple_assign_rhs1 (stmt),
1687 strict_overflow_p);
1688@@ -935,6 +937,8 @@
1689 gimple_assign_rhs1 (stmt),
1690 gimple_assign_rhs2 (stmt),
1691 strict_overflow_p);
1692+ case GIMPLE_TERNARY_RHS:
1693+ return false;
1694 case GIMPLE_SINGLE_RHS:
1695 return tree_single_nonzero_warnv_p (gimple_assign_rhs1 (stmt),
1696 strict_overflow_p);
1697
1698=== modified file 'gcc/tree.c'
1699--- old/gcc/tree.c 2010-08-10 13:31:21 +0000
1700+++ new/gcc/tree.c 2010-09-16 09:15:46 +0000
1701@@ -6538,6 +6538,23 @@
1702 return false;
1703 }
1704
1705+/* Return true if CODE represents a ternary tree code for which the
1706+ first two operands are commutative. Otherwise return false. */
1707+bool
1708+commutative_ternary_tree_code (enum tree_code code)
1709+{
1710+ switch (code)
1711+ {
1712+ case WIDEN_MULT_PLUS_EXPR:
1713+ case WIDEN_MULT_MINUS_EXPR:
1714+ return true;
1715+
1716+ default:
1717+ break;
1718+ }
1719+ return false;
1720+}
1721+
1722 /* Generate a hash value for an expression. This can be used iteratively
1723 by passing a previous result as the VAL argument.
1724
1725
1726=== modified file 'gcc/tree.def'
1727--- old/gcc/tree.def 2010-04-02 18:54:46 +0000
1728+++ new/gcc/tree.def 2010-09-16 09:15:46 +0000
1729@@ -1083,6 +1083,18 @@
1730 the arguments from type t1 to type t2, and then multiplying them. */
1731 DEFTREECODE (WIDEN_MULT_EXPR, "widen_mult_expr", tcc_binary, 2)
1732
1733+/* Widening multiply-accumulate.
1734+ The first two arguments are of type t1.
1735+ The third argument and the result are of type t2, such as t2 is at least
1736+ twice the size of t1. t1 and t2 must be integral or fixed-point types.
1737+ The expression is equivalent to a WIDEN_MULT_EXPR operation
1738+ of the first two operands followed by an add or subtract of the third
1739+ operand. */
1740+DEFTREECODE (WIDEN_MULT_PLUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3)
1741+/* This is like the above, except in the final expression the multiply result
1742+ is subtracted from t3. */
1743+DEFTREECODE (WIDEN_MULT_MINUS_EXPR, "widen_mult_plus_expr", tcc_expression, 3)
1744+
1745 /* Whole vector left/right shift in bits.
1746 Operand 0 is a vector to be shifted.
1747 Operand 1 is an integer shift amount in bits. */
1748
1749=== modified file 'gcc/tree.h'
1750--- old/gcc/tree.h 2010-08-10 13:31:21 +0000
1751+++ new/gcc/tree.h 2010-09-16 09:15:46 +0000
1752@@ -4705,6 +4705,7 @@
1753 extern int type_num_arguments (const_tree);
1754 extern bool associative_tree_code (enum tree_code);
1755 extern bool commutative_tree_code (enum tree_code);
1756+extern bool commutative_ternary_tree_code (enum tree_code);
1757 extern tree upper_bound_in_type (tree, tree);
1758 extern tree lower_bound_in_type (tree, tree);
1759 extern int operand_equal_for_phi_arg_p (const_tree, const_tree);
1760
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch
new file mode 100644
index 000000000..e795d54e0
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch
@@ -0,0 +1,3565 @@
12010-09-16 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from FSF:
4
5 2010-09-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6
7 * config/arm/neon-schedgen.ml (core): New type.
8 (allCores): List of supported cores.
9 (availability_table): Add supported cores.
10 (collate_bypasses): Accept core as a parameter.
11 (worst_case_latencies_and_bypasses): Accept core as a
12 parameter.
13 (emit_insn_reservations): Accept core as a parameter.
14 Use tuneStr and coreStr to get tune attribute and prefix
15 for functional units.
16 (emit_bypasses): Accept core name and use it.
17 (calculate_per_core_availability_table): New.
18 (filter_core): New.
19 (calculate_core_availability_table): New.
20 (main): Use calculate_core_availablity_table.
21 * config/arm/cortex-a8-neon.md: Update copyright year.
22 Regenerated from ml file and merged in.
23 (neon_mrrc, neon_mrc): Rename to cortex_a8_neon_mrrc and
24 cortex_a8_neon_mrc.
25
26 2010-09-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
27
28 * config/arm/neon-schedgen.ml (allCores): Add support for
29 Cortex-A9.
30 * config/arm/cortex-a9-neon.md: New and partially generated.
31 * config/arm/cortex-a9.md (cortex_a9_dp): Adjust for Neon.
32
33 2010-09-15 Chung-Lin Tang <cltang@codesourcery.com>
34
35 Issue #9441
36
37=== modified file 'gcc/config/arm/cortex-a8-neon.md'
38--- old/gcc/config/arm/cortex-a8-neon.md 2009-02-20 15:20:38 +0000
39+++ new/gcc/config/arm/cortex-a8-neon.md 2010-09-16 09:47:44 +0000
40@@ -182,12 +182,12 @@
41
42 ;; NEON -> core transfers.
43
44-(define_insn_reservation "neon_mrc" 20
45+(define_insn_reservation "cortex_a8_neon_mrc" 20
46 (and (eq_attr "tune" "cortexa8")
47 (eq_attr "neon_type" "neon_mrc"))
48 "cortex_a8_neon_ls")
49
50-(define_insn_reservation "neon_mrrc" 21
51+(define_insn_reservation "cortex_a8_neon_mrrc" 21
52 (and (eq_attr "tune" "cortexa8")
53 (eq_attr "neon_type" "neon_mrrc"))
54 "cortex_a8_neon_ls_2")
55@@ -196,48 +196,48 @@
56
57 ;; Instructions using this reservation read their source operands at N2, and
58 ;; produce a result at N3.
59-(define_insn_reservation "neon_int_1" 3
60+(define_insn_reservation "cortex_a8_neon_int_1" 3
61 (and (eq_attr "tune" "cortexa8")
62 (eq_attr "neon_type" "neon_int_1"))
63 "cortex_a8_neon_dp")
64
65 ;; Instructions using this reservation read their (D|Q)m operands at N1,
66 ;; their (D|Q)n operands at N2, and produce a result at N3.
67-(define_insn_reservation "neon_int_2" 3
68+(define_insn_reservation "cortex_a8_neon_int_2" 3
69 (and (eq_attr "tune" "cortexa8")
70 (eq_attr "neon_type" "neon_int_2"))
71 "cortex_a8_neon_dp")
72
73 ;; Instructions using this reservation read their source operands at N1, and
74 ;; produce a result at N3.
75-(define_insn_reservation "neon_int_3" 3
76+(define_insn_reservation "cortex_a8_neon_int_3" 3
77 (and (eq_attr "tune" "cortexa8")
78 (eq_attr "neon_type" "neon_int_3"))
79 "cortex_a8_neon_dp")
80
81 ;; Instructions using this reservation read their source operands at N2, and
82 ;; produce a result at N4.
83-(define_insn_reservation "neon_int_4" 4
84+(define_insn_reservation "cortex_a8_neon_int_4" 4
85 (and (eq_attr "tune" "cortexa8")
86 (eq_attr "neon_type" "neon_int_4"))
87 "cortex_a8_neon_dp")
88
89 ;; Instructions using this reservation read their (D|Q)m operands at N1,
90 ;; their (D|Q)n operands at N2, and produce a result at N4.
91-(define_insn_reservation "neon_int_5" 4
92+(define_insn_reservation "cortex_a8_neon_int_5" 4
93 (and (eq_attr "tune" "cortexa8")
94 (eq_attr "neon_type" "neon_int_5"))
95 "cortex_a8_neon_dp")
96
97 ;; Instructions using this reservation read their source operands at N1, and
98 ;; produce a result at N4.
99-(define_insn_reservation "neon_vqneg_vqabs" 4
100+(define_insn_reservation "cortex_a8_neon_vqneg_vqabs" 4
101 (and (eq_attr "tune" "cortexa8")
102 (eq_attr "neon_type" "neon_vqneg_vqabs"))
103 "cortex_a8_neon_dp")
104
105 ;; Instructions using this reservation produce a result at N3.
106-(define_insn_reservation "neon_vmov" 3
107+(define_insn_reservation "cortex_a8_neon_vmov" 3
108 (and (eq_attr "tune" "cortexa8")
109 (eq_attr "neon_type" "neon_vmov"))
110 "cortex_a8_neon_dp")
111@@ -245,7 +245,7 @@
112 ;; Instructions using this reservation read their (D|Q)n operands at N2,
113 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
114 ;; produce a result at N6.
115-(define_insn_reservation "neon_vaba" 6
116+(define_insn_reservation "cortex_a8_neon_vaba" 6
117 (and (eq_attr "tune" "cortexa8")
118 (eq_attr "neon_type" "neon_vaba"))
119 "cortex_a8_neon_dp")
120@@ -253,35 +253,35 @@
121 ;; Instructions using this reservation read their (D|Q)n operands at N2,
122 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
123 ;; produce a result at N6 on cycle 2.
124-(define_insn_reservation "neon_vaba_qqq" 7
125+(define_insn_reservation "cortex_a8_neon_vaba_qqq" 7
126 (and (eq_attr "tune" "cortexa8")
127 (eq_attr "neon_type" "neon_vaba_qqq"))
128 "cortex_a8_neon_dp_2")
129
130 ;; Instructions using this reservation read their (D|Q)m operands at N1,
131 ;; their (D|Q)d operands at N3, and produce a result at N6.
132-(define_insn_reservation "neon_vsma" 6
133+(define_insn_reservation "cortex_a8_neon_vsma" 6
134 (and (eq_attr "tune" "cortexa8")
135 (eq_attr "neon_type" "neon_vsma"))
136 "cortex_a8_neon_dp")
137
138 ;; Instructions using this reservation read their source operands at N2, and
139 ;; produce a result at N6.
140-(define_insn_reservation "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
141+(define_insn_reservation "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
142 (and (eq_attr "tune" "cortexa8")
143 (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
144 "cortex_a8_neon_dp")
145
146 ;; Instructions using this reservation read their source operands at N2, and
147 ;; produce a result at N6 on cycle 2.
148-(define_insn_reservation "neon_mul_qqq_8_16_32_ddd_32" 7
149+(define_insn_reservation "cortex_a8_neon_mul_qqq_8_16_32_ddd_32" 7
150 (and (eq_attr "tune" "cortexa8")
151 (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
152 "cortex_a8_neon_dp_2")
153
154 ;; Instructions using this reservation read their (D|Q)n operands at N2,
155 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
156-(define_insn_reservation "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
157+(define_insn_reservation "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
158 (and (eq_attr "tune" "cortexa8")
159 (eq_attr "neon_type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
160 "cortex_a8_neon_dp_2")
161@@ -289,7 +289,7 @@
162 ;; Instructions using this reservation read their (D|Q)n operands at N2,
163 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
164 ;; produce a result at N6.
165-(define_insn_reservation "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
166+(define_insn_reservation "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
167 (and (eq_attr "tune" "cortexa8")
168 (eq_attr "neon_type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
169 "cortex_a8_neon_dp")
170@@ -297,7 +297,7 @@
171 ;; Instructions using this reservation read their (D|Q)n operands at N2,
172 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
173 ;; produce a result at N6 on cycle 2.
174-(define_insn_reservation "neon_mla_qqq_8_16" 7
175+(define_insn_reservation "cortex_a8_neon_mla_qqq_8_16" 7
176 (and (eq_attr "tune" "cortexa8")
177 (eq_attr "neon_type" "neon_mla_qqq_8_16"))
178 "cortex_a8_neon_dp_2")
179@@ -305,7 +305,7 @@
180 ;; Instructions using this reservation read their (D|Q)n operands at N2,
181 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
182 ;; produce a result at N6 on cycle 2.
183-(define_insn_reservation "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
184+(define_insn_reservation "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
185 (and (eq_attr "tune" "cortexa8")
186 (eq_attr "neon_type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
187 "cortex_a8_neon_dp_2")
188@@ -313,21 +313,21 @@
189 ;; Instructions using this reservation read their (D|Q)n operands at N2,
190 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
191 ;; produce a result at N6 on cycle 4.
192-(define_insn_reservation "neon_mla_qqq_32_qqd_32_scalar" 9
193+(define_insn_reservation "cortex_a8_neon_mla_qqq_32_qqd_32_scalar" 9
194 (and (eq_attr "tune" "cortexa8")
195 (eq_attr "neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
196 "cortex_a8_neon_dp_4")
197
198 ;; Instructions using this reservation read their (D|Q)n operands at N2,
199 ;; their (D|Q)m operands at N1, and produce a result at N6.
200-(define_insn_reservation "neon_mul_ddd_16_scalar_32_16_long_scalar" 6
201+(define_insn_reservation "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
202 (and (eq_attr "tune" "cortexa8")
203 (eq_attr "neon_type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
204 "cortex_a8_neon_dp")
205
206 ;; Instructions using this reservation read their (D|Q)n operands at N2,
207 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
208-(define_insn_reservation "neon_mul_qqd_32_scalar" 9
209+(define_insn_reservation "cortex_a8_neon_mul_qqd_32_scalar" 9
210 (and (eq_attr "tune" "cortexa8")
211 (eq_attr "neon_type" "neon_mul_qqd_32_scalar"))
212 "cortex_a8_neon_dp_4")
213@@ -335,84 +335,84 @@
214 ;; Instructions using this reservation read their (D|Q)n operands at N2,
215 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
216 ;; produce a result at N6.
217-(define_insn_reservation "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
218+(define_insn_reservation "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
219 (and (eq_attr "tune" "cortexa8")
220 (eq_attr "neon_type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
221 "cortex_a8_neon_dp")
222
223 ;; Instructions using this reservation read their source operands at N1, and
224 ;; produce a result at N3.
225-(define_insn_reservation "neon_shift_1" 3
226+(define_insn_reservation "cortex_a8_neon_shift_1" 3
227 (and (eq_attr "tune" "cortexa8")
228 (eq_attr "neon_type" "neon_shift_1"))
229 "cortex_a8_neon_dp")
230
231 ;; Instructions using this reservation read their source operands at N1, and
232 ;; produce a result at N4.
233-(define_insn_reservation "neon_shift_2" 4
234+(define_insn_reservation "cortex_a8_neon_shift_2" 4
235 (and (eq_attr "tune" "cortexa8")
236 (eq_attr "neon_type" "neon_shift_2"))
237 "cortex_a8_neon_dp")
238
239 ;; Instructions using this reservation read their source operands at N1, and
240 ;; produce a result at N3 on cycle 2.
241-(define_insn_reservation "neon_shift_3" 4
242+(define_insn_reservation "cortex_a8_neon_shift_3" 4
243 (and (eq_attr "tune" "cortexa8")
244 (eq_attr "neon_type" "neon_shift_3"))
245 "cortex_a8_neon_dp_2")
246
247 ;; Instructions using this reservation read their source operands at N1, and
248 ;; produce a result at N1.
249-(define_insn_reservation "neon_vshl_ddd" 1
250+(define_insn_reservation "cortex_a8_neon_vshl_ddd" 1
251 (and (eq_attr "tune" "cortexa8")
252 (eq_attr "neon_type" "neon_vshl_ddd"))
253 "cortex_a8_neon_dp")
254
255 ;; Instructions using this reservation read their source operands at N1, and
256 ;; produce a result at N4 on cycle 2.
257-(define_insn_reservation "neon_vqshl_vrshl_vqrshl_qqq" 5
258+(define_insn_reservation "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq" 5
259 (and (eq_attr "tune" "cortexa8")
260 (eq_attr "neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
261 "cortex_a8_neon_dp_2")
262
263 ;; Instructions using this reservation read their (D|Q)m operands at N1,
264 ;; their (D|Q)d operands at N3, and produce a result at N6.
265-(define_insn_reservation "neon_vsra_vrsra" 6
266+(define_insn_reservation "cortex_a8_neon_vsra_vrsra" 6
267 (and (eq_attr "tune" "cortexa8")
268 (eq_attr "neon_type" "neon_vsra_vrsra"))
269 "cortex_a8_neon_dp")
270
271 ;; Instructions using this reservation read their source operands at N2, and
272 ;; produce a result at N5.
273-(define_insn_reservation "neon_fp_vadd_ddd_vabs_dd" 5
274+(define_insn_reservation "cortex_a8_neon_fp_vadd_ddd_vabs_dd" 5
275 (and (eq_attr "tune" "cortexa8")
276 (eq_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd"))
277 "cortex_a8_neon_fadd")
278
279 ;; Instructions using this reservation read their source operands at N2, and
280 ;; produce a result at N5 on cycle 2.
281-(define_insn_reservation "neon_fp_vadd_qqq_vabs_qq" 6
282+(define_insn_reservation "cortex_a8_neon_fp_vadd_qqq_vabs_qq" 6
283 (and (eq_attr "tune" "cortexa8")
284 (eq_attr "neon_type" "neon_fp_vadd_qqq_vabs_qq"))
285 "cortex_a8_neon_fadd_2")
286
287 ;; Instructions using this reservation read their source operands at N1, and
288 ;; produce a result at N5.
289-(define_insn_reservation "neon_fp_vsum" 5
290+(define_insn_reservation "cortex_a8_neon_fp_vsum" 5
291 (and (eq_attr "tune" "cortexa8")
292 (eq_attr "neon_type" "neon_fp_vsum"))
293 "cortex_a8_neon_fadd")
294
295 ;; Instructions using this reservation read their (D|Q)n operands at N2,
296 ;; their (D|Q)m operands at N1, and produce a result at N5.
297-(define_insn_reservation "neon_fp_vmul_ddd" 5
298+(define_insn_reservation "cortex_a8_neon_fp_vmul_ddd" 5
299 (and (eq_attr "tune" "cortexa8")
300 (eq_attr "neon_type" "neon_fp_vmul_ddd"))
301 "cortex_a8_neon_dp")
302
303 ;; Instructions using this reservation read their (D|Q)n operands at N2,
304 ;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
305-(define_insn_reservation "neon_fp_vmul_qqd" 6
306+(define_insn_reservation "cortex_a8_neon_fp_vmul_qqd" 6
307 (and (eq_attr "tune" "cortexa8")
308 (eq_attr "neon_type" "neon_fp_vmul_qqd"))
309 "cortex_a8_neon_dp_2")
310@@ -420,7 +420,7 @@
311 ;; Instructions using this reservation read their (D|Q)n operands at N2,
312 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
313 ;; produce a result at N9.
314-(define_insn_reservation "neon_fp_vmla_ddd" 9
315+(define_insn_reservation "cortex_a8_neon_fp_vmla_ddd" 9
316 (and (eq_attr "tune" "cortexa8")
317 (eq_attr "neon_type" "neon_fp_vmla_ddd"))
318 "cortex_a8_neon_fmul_then_fadd")
319@@ -428,7 +428,7 @@
320 ;; Instructions using this reservation read their (D|Q)n operands at N2,
321 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
322 ;; produce a result at N9 on cycle 2.
323-(define_insn_reservation "neon_fp_vmla_qqq" 10
324+(define_insn_reservation "cortex_a8_neon_fp_vmla_qqq" 10
325 (and (eq_attr "tune" "cortexa8")
326 (eq_attr "neon_type" "neon_fp_vmla_qqq"))
327 "cortex_a8_neon_fmul_then_fadd_2")
328@@ -436,7 +436,7 @@
329 ;; Instructions using this reservation read their (D|Q)n operands at N2,
330 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
331 ;; produce a result at N9.
332-(define_insn_reservation "neon_fp_vmla_ddd_scalar" 9
333+(define_insn_reservation "cortex_a8_neon_fp_vmla_ddd_scalar" 9
334 (and (eq_attr "tune" "cortexa8")
335 (eq_attr "neon_type" "neon_fp_vmla_ddd_scalar"))
336 "cortex_a8_neon_fmul_then_fadd")
337@@ -444,869 +444,869 @@
338 ;; Instructions using this reservation read their (D|Q)n operands at N2,
339 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
340 ;; produce a result at N9 on cycle 2.
341-(define_insn_reservation "neon_fp_vmla_qqq_scalar" 10
342+(define_insn_reservation "cortex_a8_neon_fp_vmla_qqq_scalar" 10
343 (and (eq_attr "tune" "cortexa8")
344 (eq_attr "neon_type" "neon_fp_vmla_qqq_scalar"))
345 "cortex_a8_neon_fmul_then_fadd_2")
346
347 ;; Instructions using this reservation read their source operands at N2, and
348 ;; produce a result at N9.
349-(define_insn_reservation "neon_fp_vrecps_vrsqrts_ddd" 9
350+(define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_ddd" 9
351 (and (eq_attr "tune" "cortexa8")
352 (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
353 "cortex_a8_neon_fmul_then_fadd")
354
355 ;; Instructions using this reservation read their source operands at N2, and
356 ;; produce a result at N9 on cycle 2.
357-(define_insn_reservation "neon_fp_vrecps_vrsqrts_qqq" 10
358+(define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_qqq" 10
359 (and (eq_attr "tune" "cortexa8")
360 (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_qqq"))
361 "cortex_a8_neon_fmul_then_fadd_2")
362
363 ;; Instructions using this reservation read their source operands at N1, and
364 ;; produce a result at N2.
365-(define_insn_reservation "neon_bp_simple" 2
366+(define_insn_reservation "cortex_a8_neon_bp_simple" 2
367 (and (eq_attr "tune" "cortexa8")
368 (eq_attr "neon_type" "neon_bp_simple"))
369 "cortex_a8_neon_perm")
370
371 ;; Instructions using this reservation read their source operands at N1, and
372 ;; produce a result at N2 on cycle 2.
373-(define_insn_reservation "neon_bp_2cycle" 3
374+(define_insn_reservation "cortex_a8_neon_bp_2cycle" 3
375 (and (eq_attr "tune" "cortexa8")
376 (eq_attr "neon_type" "neon_bp_2cycle"))
377 "cortex_a8_neon_perm_2")
378
379 ;; Instructions using this reservation read their source operands at N1, and
380 ;; produce a result at N2 on cycle 3.
381-(define_insn_reservation "neon_bp_3cycle" 4
382+(define_insn_reservation "cortex_a8_neon_bp_3cycle" 4
383 (and (eq_attr "tune" "cortexa8")
384 (eq_attr "neon_type" "neon_bp_3cycle"))
385 "cortex_a8_neon_perm_3")
386
387 ;; Instructions using this reservation produce a result at N1.
388-(define_insn_reservation "neon_ldr" 1
389+(define_insn_reservation "cortex_a8_neon_ldr" 1
390 (and (eq_attr "tune" "cortexa8")
391 (eq_attr "neon_type" "neon_ldr"))
392 "cortex_a8_neon_ls")
393
394 ;; Instructions using this reservation read their source operands at N1.
395-(define_insn_reservation "neon_str" 0
396+(define_insn_reservation "cortex_a8_neon_str" 0
397 (and (eq_attr "tune" "cortexa8")
398 (eq_attr "neon_type" "neon_str"))
399 "cortex_a8_neon_ls")
400
401 ;; Instructions using this reservation produce a result at N1 on cycle 2.
402-(define_insn_reservation "neon_vld1_1_2_regs" 2
403+(define_insn_reservation "cortex_a8_neon_vld1_1_2_regs" 2
404 (and (eq_attr "tune" "cortexa8")
405 (eq_attr "neon_type" "neon_vld1_1_2_regs"))
406 "cortex_a8_neon_ls_2")
407
408 ;; Instructions using this reservation produce a result at N1 on cycle 3.
409-(define_insn_reservation "neon_vld1_3_4_regs" 3
410+(define_insn_reservation "cortex_a8_neon_vld1_3_4_regs" 3
411 (and (eq_attr "tune" "cortexa8")
412 (eq_attr "neon_type" "neon_vld1_3_4_regs"))
413 "cortex_a8_neon_ls_3")
414
415 ;; Instructions using this reservation produce a result at N2 on cycle 2.
416-(define_insn_reservation "neon_vld2_2_regs_vld1_vld2_all_lanes" 3
417+(define_insn_reservation "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
418 (and (eq_attr "tune" "cortexa8")
419 (eq_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
420 "cortex_a8_neon_ls_2")
421
422 ;; Instructions using this reservation produce a result at N2 on cycle 3.
423-(define_insn_reservation "neon_vld2_4_regs" 4
424+(define_insn_reservation "cortex_a8_neon_vld2_4_regs" 4
425 (and (eq_attr "tune" "cortexa8")
426 (eq_attr "neon_type" "neon_vld2_4_regs"))
427 "cortex_a8_neon_ls_3")
428
429 ;; Instructions using this reservation produce a result at N2 on cycle 4.
430-(define_insn_reservation "neon_vld3_vld4" 5
431+(define_insn_reservation "cortex_a8_neon_vld3_vld4" 5
432 (and (eq_attr "tune" "cortexa8")
433 (eq_attr "neon_type" "neon_vld3_vld4"))
434 "cortex_a8_neon_ls_4")
435
436 ;; Instructions using this reservation read their source operands at N1.
437-(define_insn_reservation "neon_vst1_1_2_regs_vst2_2_regs" 0
438+(define_insn_reservation "cortex_a8_neon_vst1_1_2_regs_vst2_2_regs" 0
439 (and (eq_attr "tune" "cortexa8")
440 (eq_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
441 "cortex_a8_neon_ls_2")
442
443 ;; Instructions using this reservation read their source operands at N1.
444-(define_insn_reservation "neon_vst1_3_4_regs" 0
445+(define_insn_reservation "cortex_a8_neon_vst1_3_4_regs" 0
446 (and (eq_attr "tune" "cortexa8")
447 (eq_attr "neon_type" "neon_vst1_3_4_regs"))
448 "cortex_a8_neon_ls_3")
449
450 ;; Instructions using this reservation read their source operands at N1.
451-(define_insn_reservation "neon_vst2_4_regs_vst3_vst4" 0
452+(define_insn_reservation "cortex_a8_neon_vst2_4_regs_vst3_vst4" 0
453 (and (eq_attr "tune" "cortexa8")
454 (eq_attr "neon_type" "neon_vst2_4_regs_vst3_vst4"))
455 "cortex_a8_neon_ls_4")
456
457 ;; Instructions using this reservation read their source operands at N1.
458-(define_insn_reservation "neon_vst3_vst4" 0
459+(define_insn_reservation "cortex_a8_neon_vst3_vst4" 0
460 (and (eq_attr "tune" "cortexa8")
461 (eq_attr "neon_type" "neon_vst3_vst4"))
462 "cortex_a8_neon_ls_4")
463
464 ;; Instructions using this reservation read their source operands at N1, and
465 ;; produce a result at N2 on cycle 3.
466-(define_insn_reservation "neon_vld1_vld2_lane" 4
467+(define_insn_reservation "cortex_a8_neon_vld1_vld2_lane" 4
468 (and (eq_attr "tune" "cortexa8")
469 (eq_attr "neon_type" "neon_vld1_vld2_lane"))
470 "cortex_a8_neon_ls_3")
471
472 ;; Instructions using this reservation read their source operands at N1, and
473 ;; produce a result at N2 on cycle 5.
474-(define_insn_reservation "neon_vld3_vld4_lane" 6
475+(define_insn_reservation "cortex_a8_neon_vld3_vld4_lane" 6
476 (and (eq_attr "tune" "cortexa8")
477 (eq_attr "neon_type" "neon_vld3_vld4_lane"))
478 "cortex_a8_neon_ls_5")
479
480 ;; Instructions using this reservation read their source operands at N1.
481-(define_insn_reservation "neon_vst1_vst2_lane" 0
482+(define_insn_reservation "cortex_a8_neon_vst1_vst2_lane" 0
483 (and (eq_attr "tune" "cortexa8")
484 (eq_attr "neon_type" "neon_vst1_vst2_lane"))
485 "cortex_a8_neon_ls_2")
486
487 ;; Instructions using this reservation read their source operands at N1.
488-(define_insn_reservation "neon_vst3_vst4_lane" 0
489+(define_insn_reservation "cortex_a8_neon_vst3_vst4_lane" 0
490 (and (eq_attr "tune" "cortexa8")
491 (eq_attr "neon_type" "neon_vst3_vst4_lane"))
492 "cortex_a8_neon_ls_3")
493
494 ;; Instructions using this reservation produce a result at N2 on cycle 2.
495-(define_insn_reservation "neon_vld3_vld4_all_lanes" 3
496+(define_insn_reservation "cortex_a8_neon_vld3_vld4_all_lanes" 3
497 (and (eq_attr "tune" "cortexa8")
498 (eq_attr "neon_type" "neon_vld3_vld4_all_lanes"))
499 "cortex_a8_neon_ls_3")
500
501 ;; Instructions using this reservation produce a result at N2.
502-(define_insn_reservation "neon_mcr" 2
503+(define_insn_reservation "cortex_a8_neon_mcr" 2
504 (and (eq_attr "tune" "cortexa8")
505 (eq_attr "neon_type" "neon_mcr"))
506 "cortex_a8_neon_perm")
507
508 ;; Instructions using this reservation produce a result at N2.
509-(define_insn_reservation "neon_mcr_2_mcrr" 2
510+(define_insn_reservation "cortex_a8_neon_mcr_2_mcrr" 2
511 (and (eq_attr "tune" "cortexa8")
512 (eq_attr "neon_type" "neon_mcr_2_mcrr"))
513 "cortex_a8_neon_perm_2")
514
515 ;; Exceptions to the default latencies.
516
517-(define_bypass 1 "neon_mcr_2_mcrr"
518- "neon_int_1,\
519- neon_int_4,\
520- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
521- neon_mul_qqq_8_16_32_ddd_32,\
522- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
523- neon_mla_qqq_8_16,\
524- neon_fp_vadd_ddd_vabs_dd,\
525- neon_fp_vadd_qqq_vabs_qq,\
526- neon_fp_vmla_ddd,\
527- neon_fp_vmla_qqq,\
528- neon_fp_vrecps_vrsqrts_ddd,\
529- neon_fp_vrecps_vrsqrts_qqq")
530-
531-(define_bypass 1 "neon_mcr"
532- "neon_int_1,\
533- neon_int_4,\
534- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
535- neon_mul_qqq_8_16_32_ddd_32,\
536- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
537- neon_mla_qqq_8_16,\
538- neon_fp_vadd_ddd_vabs_dd,\
539- neon_fp_vadd_qqq_vabs_qq,\
540- neon_fp_vmla_ddd,\
541- neon_fp_vmla_qqq,\
542- neon_fp_vrecps_vrsqrts_ddd,\
543- neon_fp_vrecps_vrsqrts_qqq")
544-
545-(define_bypass 2 "neon_vld3_vld4_all_lanes"
546- "neon_int_1,\
547- neon_int_4,\
548- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
549- neon_mul_qqq_8_16_32_ddd_32,\
550- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
551- neon_mla_qqq_8_16,\
552- neon_fp_vadd_ddd_vabs_dd,\
553- neon_fp_vadd_qqq_vabs_qq,\
554- neon_fp_vmla_ddd,\
555- neon_fp_vmla_qqq,\
556- neon_fp_vrecps_vrsqrts_ddd,\
557- neon_fp_vrecps_vrsqrts_qqq")
558-
559-(define_bypass 5 "neon_vld3_vld4_lane"
560- "neon_int_1,\
561- neon_int_4,\
562- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
563- neon_mul_qqq_8_16_32_ddd_32,\
564- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
565- neon_mla_qqq_8_16,\
566- neon_fp_vadd_ddd_vabs_dd,\
567- neon_fp_vadd_qqq_vabs_qq,\
568- neon_fp_vmla_ddd,\
569- neon_fp_vmla_qqq,\
570- neon_fp_vrecps_vrsqrts_ddd,\
571- neon_fp_vrecps_vrsqrts_qqq")
572-
573-(define_bypass 3 "neon_vld1_vld2_lane"
574- "neon_int_1,\
575- neon_int_4,\
576- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
577- neon_mul_qqq_8_16_32_ddd_32,\
578- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
579- neon_mla_qqq_8_16,\
580- neon_fp_vadd_ddd_vabs_dd,\
581- neon_fp_vadd_qqq_vabs_qq,\
582- neon_fp_vmla_ddd,\
583- neon_fp_vmla_qqq,\
584- neon_fp_vrecps_vrsqrts_ddd,\
585- neon_fp_vrecps_vrsqrts_qqq")
586-
587-(define_bypass 4 "neon_vld3_vld4"
588- "neon_int_1,\
589- neon_int_4,\
590- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
591- neon_mul_qqq_8_16_32_ddd_32,\
592- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
593- neon_mla_qqq_8_16,\
594- neon_fp_vadd_ddd_vabs_dd,\
595- neon_fp_vadd_qqq_vabs_qq,\
596- neon_fp_vmla_ddd,\
597- neon_fp_vmla_qqq,\
598- neon_fp_vrecps_vrsqrts_ddd,\
599- neon_fp_vrecps_vrsqrts_qqq")
600-
601-(define_bypass 3 "neon_vld2_4_regs"
602- "neon_int_1,\
603- neon_int_4,\
604- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
605- neon_mul_qqq_8_16_32_ddd_32,\
606- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
607- neon_mla_qqq_8_16,\
608- neon_fp_vadd_ddd_vabs_dd,\
609- neon_fp_vadd_qqq_vabs_qq,\
610- neon_fp_vmla_ddd,\
611- neon_fp_vmla_qqq,\
612- neon_fp_vrecps_vrsqrts_ddd,\
613- neon_fp_vrecps_vrsqrts_qqq")
614-
615-(define_bypass 2 "neon_vld2_2_regs_vld1_vld2_all_lanes"
616- "neon_int_1,\
617- neon_int_4,\
618- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
619- neon_mul_qqq_8_16_32_ddd_32,\
620- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
621- neon_mla_qqq_8_16,\
622- neon_fp_vadd_ddd_vabs_dd,\
623- neon_fp_vadd_qqq_vabs_qq,\
624- neon_fp_vmla_ddd,\
625- neon_fp_vmla_qqq,\
626- neon_fp_vrecps_vrsqrts_ddd,\
627- neon_fp_vrecps_vrsqrts_qqq")
628-
629-(define_bypass 2 "neon_vld1_3_4_regs"
630- "neon_int_1,\
631- neon_int_4,\
632- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
633- neon_mul_qqq_8_16_32_ddd_32,\
634- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
635- neon_mla_qqq_8_16,\
636- neon_fp_vadd_ddd_vabs_dd,\
637- neon_fp_vadd_qqq_vabs_qq,\
638- neon_fp_vmla_ddd,\
639- neon_fp_vmla_qqq,\
640- neon_fp_vrecps_vrsqrts_ddd,\
641- neon_fp_vrecps_vrsqrts_qqq")
642-
643-(define_bypass 1 "neon_vld1_1_2_regs"
644- "neon_int_1,\
645- neon_int_4,\
646- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
647- neon_mul_qqq_8_16_32_ddd_32,\
648- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
649- neon_mla_qqq_8_16,\
650- neon_fp_vadd_ddd_vabs_dd,\
651- neon_fp_vadd_qqq_vabs_qq,\
652- neon_fp_vmla_ddd,\
653- neon_fp_vmla_qqq,\
654- neon_fp_vrecps_vrsqrts_ddd,\
655- neon_fp_vrecps_vrsqrts_qqq")
656-
657-(define_bypass 0 "neon_ldr"
658- "neon_int_1,\
659- neon_int_4,\
660- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
661- neon_mul_qqq_8_16_32_ddd_32,\
662- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
663- neon_mla_qqq_8_16,\
664- neon_fp_vadd_ddd_vabs_dd,\
665- neon_fp_vadd_qqq_vabs_qq,\
666- neon_fp_vmla_ddd,\
667- neon_fp_vmla_qqq,\
668- neon_fp_vrecps_vrsqrts_ddd,\
669- neon_fp_vrecps_vrsqrts_qqq")
670-
671-(define_bypass 3 "neon_bp_3cycle"
672- "neon_int_1,\
673- neon_int_4,\
674- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
675- neon_mul_qqq_8_16_32_ddd_32,\
676- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
677- neon_mla_qqq_8_16,\
678- neon_fp_vadd_ddd_vabs_dd,\
679- neon_fp_vadd_qqq_vabs_qq,\
680- neon_fp_vmla_ddd,\
681- neon_fp_vmla_qqq,\
682- neon_fp_vrecps_vrsqrts_ddd,\
683- neon_fp_vrecps_vrsqrts_qqq")
684-
685-(define_bypass 2 "neon_bp_2cycle"
686- "neon_int_1,\
687- neon_int_4,\
688- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
689- neon_mul_qqq_8_16_32_ddd_32,\
690- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
691- neon_mla_qqq_8_16,\
692- neon_fp_vadd_ddd_vabs_dd,\
693- neon_fp_vadd_qqq_vabs_qq,\
694- neon_fp_vmla_ddd,\
695- neon_fp_vmla_qqq,\
696- neon_fp_vrecps_vrsqrts_ddd,\
697- neon_fp_vrecps_vrsqrts_qqq")
698-
699-(define_bypass 1 "neon_bp_simple"
700- "neon_int_1,\
701- neon_int_4,\
702- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
703- neon_mul_qqq_8_16_32_ddd_32,\
704- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
705- neon_mla_qqq_8_16,\
706- neon_fp_vadd_ddd_vabs_dd,\
707- neon_fp_vadd_qqq_vabs_qq,\
708- neon_fp_vmla_ddd,\
709- neon_fp_vmla_qqq,\
710- neon_fp_vrecps_vrsqrts_ddd,\
711- neon_fp_vrecps_vrsqrts_qqq")
712-
713-(define_bypass 9 "neon_fp_vrecps_vrsqrts_qqq"
714- "neon_int_1,\
715- neon_int_4,\
716- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
717- neon_mul_qqq_8_16_32_ddd_32,\
718- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
719- neon_mla_qqq_8_16,\
720- neon_fp_vadd_ddd_vabs_dd,\
721- neon_fp_vadd_qqq_vabs_qq,\
722- neon_fp_vmla_ddd,\
723- neon_fp_vmla_qqq,\
724- neon_fp_vrecps_vrsqrts_ddd,\
725- neon_fp_vrecps_vrsqrts_qqq")
726-
727-(define_bypass 8 "neon_fp_vrecps_vrsqrts_ddd"
728- "neon_int_1,\
729- neon_int_4,\
730- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
731- neon_mul_qqq_8_16_32_ddd_32,\
732- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
733- neon_mla_qqq_8_16,\
734- neon_fp_vadd_ddd_vabs_dd,\
735- neon_fp_vadd_qqq_vabs_qq,\
736- neon_fp_vmla_ddd,\
737- neon_fp_vmla_qqq,\
738- neon_fp_vrecps_vrsqrts_ddd,\
739- neon_fp_vrecps_vrsqrts_qqq")
740-
741-(define_bypass 9 "neon_fp_vmla_qqq_scalar"
742- "neon_int_1,\
743- neon_int_4,\
744- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
745- neon_mul_qqq_8_16_32_ddd_32,\
746- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
747- neon_mla_qqq_8_16,\
748- neon_fp_vadd_ddd_vabs_dd,\
749- neon_fp_vadd_qqq_vabs_qq,\
750- neon_fp_vmla_ddd,\
751- neon_fp_vmla_qqq,\
752- neon_fp_vrecps_vrsqrts_ddd,\
753- neon_fp_vrecps_vrsqrts_qqq")
754-
755-(define_bypass 8 "neon_fp_vmla_ddd_scalar"
756- "neon_int_1,\
757- neon_int_4,\
758- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
759- neon_mul_qqq_8_16_32_ddd_32,\
760- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
761- neon_mla_qqq_8_16,\
762- neon_fp_vadd_ddd_vabs_dd,\
763- neon_fp_vadd_qqq_vabs_qq,\
764- neon_fp_vmla_ddd,\
765- neon_fp_vmla_qqq,\
766- neon_fp_vrecps_vrsqrts_ddd,\
767- neon_fp_vrecps_vrsqrts_qqq")
768-
769-(define_bypass 9 "neon_fp_vmla_qqq"
770- "neon_int_1,\
771- neon_int_4,\
772- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
773- neon_mul_qqq_8_16_32_ddd_32,\
774- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
775- neon_mla_qqq_8_16,\
776- neon_fp_vadd_ddd_vabs_dd,\
777- neon_fp_vadd_qqq_vabs_qq,\
778- neon_fp_vmla_ddd,\
779- neon_fp_vmla_qqq,\
780- neon_fp_vrecps_vrsqrts_ddd,\
781- neon_fp_vrecps_vrsqrts_qqq")
782-
783-(define_bypass 8 "neon_fp_vmla_ddd"
784- "neon_int_1,\
785- neon_int_4,\
786- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
787- neon_mul_qqq_8_16_32_ddd_32,\
788- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
789- neon_mla_qqq_8_16,\
790- neon_fp_vadd_ddd_vabs_dd,\
791- neon_fp_vadd_qqq_vabs_qq,\
792- neon_fp_vmla_ddd,\
793- neon_fp_vmla_qqq,\
794- neon_fp_vrecps_vrsqrts_ddd,\
795- neon_fp_vrecps_vrsqrts_qqq")
796-
797-(define_bypass 5 "neon_fp_vmul_qqd"
798- "neon_int_1,\
799- neon_int_4,\
800- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
801- neon_mul_qqq_8_16_32_ddd_32,\
802- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
803- neon_mla_qqq_8_16,\
804- neon_fp_vadd_ddd_vabs_dd,\
805- neon_fp_vadd_qqq_vabs_qq,\
806- neon_fp_vmla_ddd,\
807- neon_fp_vmla_qqq,\
808- neon_fp_vrecps_vrsqrts_ddd,\
809- neon_fp_vrecps_vrsqrts_qqq")
810-
811-(define_bypass 4 "neon_fp_vmul_ddd"
812- "neon_int_1,\
813- neon_int_4,\
814- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
815- neon_mul_qqq_8_16_32_ddd_32,\
816- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
817- neon_mla_qqq_8_16,\
818- neon_fp_vadd_ddd_vabs_dd,\
819- neon_fp_vadd_qqq_vabs_qq,\
820- neon_fp_vmla_ddd,\
821- neon_fp_vmla_qqq,\
822- neon_fp_vrecps_vrsqrts_ddd,\
823- neon_fp_vrecps_vrsqrts_qqq")
824-
825-(define_bypass 4 "neon_fp_vsum"
826- "neon_int_1,\
827- neon_int_4,\
828- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
829- neon_mul_qqq_8_16_32_ddd_32,\
830- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
831- neon_mla_qqq_8_16,\
832- neon_fp_vadd_ddd_vabs_dd,\
833- neon_fp_vadd_qqq_vabs_qq,\
834- neon_fp_vmla_ddd,\
835- neon_fp_vmla_qqq,\
836- neon_fp_vrecps_vrsqrts_ddd,\
837- neon_fp_vrecps_vrsqrts_qqq")
838-
839-(define_bypass 5 "neon_fp_vadd_qqq_vabs_qq"
840- "neon_int_1,\
841- neon_int_4,\
842- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
843- neon_mul_qqq_8_16_32_ddd_32,\
844- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
845- neon_mla_qqq_8_16,\
846- neon_fp_vadd_ddd_vabs_dd,\
847- neon_fp_vadd_qqq_vabs_qq,\
848- neon_fp_vmla_ddd,\
849- neon_fp_vmla_qqq,\
850- neon_fp_vrecps_vrsqrts_ddd,\
851- neon_fp_vrecps_vrsqrts_qqq")
852-
853-(define_bypass 4 "neon_fp_vadd_ddd_vabs_dd"
854- "neon_int_1,\
855- neon_int_4,\
856- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
857- neon_mul_qqq_8_16_32_ddd_32,\
858- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
859- neon_mla_qqq_8_16,\
860- neon_fp_vadd_ddd_vabs_dd,\
861- neon_fp_vadd_qqq_vabs_qq,\
862- neon_fp_vmla_ddd,\
863- neon_fp_vmla_qqq,\
864- neon_fp_vrecps_vrsqrts_ddd,\
865- neon_fp_vrecps_vrsqrts_qqq")
866-
867-(define_bypass 5 "neon_vsra_vrsra"
868- "neon_int_1,\
869- neon_int_4,\
870- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
871- neon_mul_qqq_8_16_32_ddd_32,\
872- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
873- neon_mla_qqq_8_16,\
874- neon_fp_vadd_ddd_vabs_dd,\
875- neon_fp_vadd_qqq_vabs_qq,\
876- neon_fp_vmla_ddd,\
877- neon_fp_vmla_qqq,\
878- neon_fp_vrecps_vrsqrts_ddd,\
879- neon_fp_vrecps_vrsqrts_qqq")
880-
881-(define_bypass 4 "neon_vqshl_vrshl_vqrshl_qqq"
882- "neon_int_1,\
883- neon_int_4,\
884- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
885- neon_mul_qqq_8_16_32_ddd_32,\
886- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
887- neon_mla_qqq_8_16,\
888- neon_fp_vadd_ddd_vabs_dd,\
889- neon_fp_vadd_qqq_vabs_qq,\
890- neon_fp_vmla_ddd,\
891- neon_fp_vmla_qqq,\
892- neon_fp_vrecps_vrsqrts_ddd,\
893- neon_fp_vrecps_vrsqrts_qqq")
894-
895-(define_bypass 0 "neon_vshl_ddd"
896- "neon_int_1,\
897- neon_int_4,\
898- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
899- neon_mul_qqq_8_16_32_ddd_32,\
900- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
901- neon_mla_qqq_8_16,\
902- neon_fp_vadd_ddd_vabs_dd,\
903- neon_fp_vadd_qqq_vabs_qq,\
904- neon_fp_vmla_ddd,\
905- neon_fp_vmla_qqq,\
906- neon_fp_vrecps_vrsqrts_ddd,\
907- neon_fp_vrecps_vrsqrts_qqq")
908-
909-(define_bypass 3 "neon_shift_3"
910- "neon_int_1,\
911- neon_int_4,\
912- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
913- neon_mul_qqq_8_16_32_ddd_32,\
914- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
915- neon_mla_qqq_8_16,\
916- neon_fp_vadd_ddd_vabs_dd,\
917- neon_fp_vadd_qqq_vabs_qq,\
918- neon_fp_vmla_ddd,\
919- neon_fp_vmla_qqq,\
920- neon_fp_vrecps_vrsqrts_ddd,\
921- neon_fp_vrecps_vrsqrts_qqq")
922-
923-(define_bypass 3 "neon_shift_2"
924- "neon_int_1,\
925- neon_int_4,\
926- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
927- neon_mul_qqq_8_16_32_ddd_32,\
928- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
929- neon_mla_qqq_8_16,\
930- neon_fp_vadd_ddd_vabs_dd,\
931- neon_fp_vadd_qqq_vabs_qq,\
932- neon_fp_vmla_ddd,\
933- neon_fp_vmla_qqq,\
934- neon_fp_vrecps_vrsqrts_ddd,\
935- neon_fp_vrecps_vrsqrts_qqq")
936-
937-(define_bypass 2 "neon_shift_1"
938- "neon_int_1,\
939- neon_int_4,\
940- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
941- neon_mul_qqq_8_16_32_ddd_32,\
942- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
943- neon_mla_qqq_8_16,\
944- neon_fp_vadd_ddd_vabs_dd,\
945- neon_fp_vadd_qqq_vabs_qq,\
946- neon_fp_vmla_ddd,\
947- neon_fp_vmla_qqq,\
948- neon_fp_vrecps_vrsqrts_ddd,\
949- neon_fp_vrecps_vrsqrts_qqq")
950-
951-(define_bypass 5 "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
952- "neon_int_1,\
953- neon_int_4,\
954- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
955- neon_mul_qqq_8_16_32_ddd_32,\
956- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
957- neon_mla_qqq_8_16,\
958- neon_fp_vadd_ddd_vabs_dd,\
959- neon_fp_vadd_qqq_vabs_qq,\
960- neon_fp_vmla_ddd,\
961- neon_fp_vmla_qqq,\
962- neon_fp_vrecps_vrsqrts_ddd,\
963- neon_fp_vrecps_vrsqrts_qqq")
964-
965-(define_bypass 8 "neon_mul_qqd_32_scalar"
966- "neon_int_1,\
967- neon_int_4,\
968- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
969- neon_mul_qqq_8_16_32_ddd_32,\
970- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
971- neon_mla_qqq_8_16,\
972- neon_fp_vadd_ddd_vabs_dd,\
973- neon_fp_vadd_qqq_vabs_qq,\
974- neon_fp_vmla_ddd,\
975- neon_fp_vmla_qqq,\
976- neon_fp_vrecps_vrsqrts_ddd,\
977- neon_fp_vrecps_vrsqrts_qqq")
978-
979-(define_bypass 5 "neon_mul_ddd_16_scalar_32_16_long_scalar"
980- "neon_int_1,\
981- neon_int_4,\
982- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
983- neon_mul_qqq_8_16_32_ddd_32,\
984- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
985- neon_mla_qqq_8_16,\
986- neon_fp_vadd_ddd_vabs_dd,\
987- neon_fp_vadd_qqq_vabs_qq,\
988- neon_fp_vmla_ddd,\
989- neon_fp_vmla_qqq,\
990- neon_fp_vrecps_vrsqrts_ddd,\
991- neon_fp_vrecps_vrsqrts_qqq")
992-
993-(define_bypass 8 "neon_mla_qqq_32_qqd_32_scalar"
994- "neon_int_1,\
995- neon_int_4,\
996- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
997- neon_mul_qqq_8_16_32_ddd_32,\
998- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
999- neon_mla_qqq_8_16,\
1000- neon_fp_vadd_ddd_vabs_dd,\
1001- neon_fp_vadd_qqq_vabs_qq,\
1002- neon_fp_vmla_ddd,\
1003- neon_fp_vmla_qqq,\
1004- neon_fp_vrecps_vrsqrts_ddd,\
1005- neon_fp_vrecps_vrsqrts_qqq")
1006-
1007-(define_bypass 6 "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
1008- "neon_int_1,\
1009- neon_int_4,\
1010- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1011- neon_mul_qqq_8_16_32_ddd_32,\
1012- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1013- neon_mla_qqq_8_16,\
1014- neon_fp_vadd_ddd_vabs_dd,\
1015- neon_fp_vadd_qqq_vabs_qq,\
1016- neon_fp_vmla_ddd,\
1017- neon_fp_vmla_qqq,\
1018- neon_fp_vrecps_vrsqrts_ddd,\
1019- neon_fp_vrecps_vrsqrts_qqq")
1020-
1021-(define_bypass 6 "neon_mla_qqq_8_16"
1022- "neon_int_1,\
1023- neon_int_4,\
1024- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1025- neon_mul_qqq_8_16_32_ddd_32,\
1026- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1027- neon_mla_qqq_8_16,\
1028- neon_fp_vadd_ddd_vabs_dd,\
1029- neon_fp_vadd_qqq_vabs_qq,\
1030- neon_fp_vmla_ddd,\
1031- neon_fp_vmla_qqq,\
1032- neon_fp_vrecps_vrsqrts_ddd,\
1033- neon_fp_vrecps_vrsqrts_qqq")
1034-
1035-(define_bypass 5 "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
1036- "neon_int_1,\
1037- neon_int_4,\
1038- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1039- neon_mul_qqq_8_16_32_ddd_32,\
1040- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1041- neon_mla_qqq_8_16,\
1042- neon_fp_vadd_ddd_vabs_dd,\
1043- neon_fp_vadd_qqq_vabs_qq,\
1044- neon_fp_vmla_ddd,\
1045- neon_fp_vmla_qqq,\
1046- neon_fp_vrecps_vrsqrts_ddd,\
1047- neon_fp_vrecps_vrsqrts_qqq")
1048-
1049-(define_bypass 6 "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1050- "neon_int_1,\
1051- neon_int_4,\
1052- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1053- neon_mul_qqq_8_16_32_ddd_32,\
1054- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1055- neon_mla_qqq_8_16,\
1056- neon_fp_vadd_ddd_vabs_dd,\
1057- neon_fp_vadd_qqq_vabs_qq,\
1058- neon_fp_vmla_ddd,\
1059- neon_fp_vmla_qqq,\
1060- neon_fp_vrecps_vrsqrts_ddd,\
1061- neon_fp_vrecps_vrsqrts_qqq")
1062-
1063-(define_bypass 6 "neon_mul_qqq_8_16_32_ddd_32"
1064- "neon_int_1,\
1065- neon_int_4,\
1066- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1067- neon_mul_qqq_8_16_32_ddd_32,\
1068- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1069- neon_mla_qqq_8_16,\
1070- neon_fp_vadd_ddd_vabs_dd,\
1071- neon_fp_vadd_qqq_vabs_qq,\
1072- neon_fp_vmla_ddd,\
1073- neon_fp_vmla_qqq,\
1074- neon_fp_vrecps_vrsqrts_ddd,\
1075- neon_fp_vrecps_vrsqrts_qqq")
1076-
1077-(define_bypass 5 "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1078- "neon_int_1,\
1079- neon_int_4,\
1080- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1081- neon_mul_qqq_8_16_32_ddd_32,\
1082- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1083- neon_mla_qqq_8_16,\
1084- neon_fp_vadd_ddd_vabs_dd,\
1085- neon_fp_vadd_qqq_vabs_qq,\
1086- neon_fp_vmla_ddd,\
1087- neon_fp_vmla_qqq,\
1088- neon_fp_vrecps_vrsqrts_ddd,\
1089- neon_fp_vrecps_vrsqrts_qqq")
1090-
1091-(define_bypass 5 "neon_vsma"
1092- "neon_int_1,\
1093- neon_int_4,\
1094- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1095- neon_mul_qqq_8_16_32_ddd_32,\
1096- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1097- neon_mla_qqq_8_16,\
1098- neon_fp_vadd_ddd_vabs_dd,\
1099- neon_fp_vadd_qqq_vabs_qq,\
1100- neon_fp_vmla_ddd,\
1101- neon_fp_vmla_qqq,\
1102- neon_fp_vrecps_vrsqrts_ddd,\
1103- neon_fp_vrecps_vrsqrts_qqq")
1104-
1105-(define_bypass 6 "neon_vaba_qqq"
1106- "neon_int_1,\
1107- neon_int_4,\
1108- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1109- neon_mul_qqq_8_16_32_ddd_32,\
1110- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1111- neon_mla_qqq_8_16,\
1112- neon_fp_vadd_ddd_vabs_dd,\
1113- neon_fp_vadd_qqq_vabs_qq,\
1114- neon_fp_vmla_ddd,\
1115- neon_fp_vmla_qqq,\
1116- neon_fp_vrecps_vrsqrts_ddd,\
1117- neon_fp_vrecps_vrsqrts_qqq")
1118-
1119-(define_bypass 5 "neon_vaba"
1120- "neon_int_1,\
1121- neon_int_4,\
1122- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1123- neon_mul_qqq_8_16_32_ddd_32,\
1124- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1125- neon_mla_qqq_8_16,\
1126- neon_fp_vadd_ddd_vabs_dd,\
1127- neon_fp_vadd_qqq_vabs_qq,\
1128- neon_fp_vmla_ddd,\
1129- neon_fp_vmla_qqq,\
1130- neon_fp_vrecps_vrsqrts_ddd,\
1131- neon_fp_vrecps_vrsqrts_qqq")
1132-
1133-(define_bypass 2 "neon_vmov"
1134- "neon_int_1,\
1135- neon_int_4,\
1136- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1137- neon_mul_qqq_8_16_32_ddd_32,\
1138- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1139- neon_mla_qqq_8_16,\
1140- neon_fp_vadd_ddd_vabs_dd,\
1141- neon_fp_vadd_qqq_vabs_qq,\
1142- neon_fp_vmla_ddd,\
1143- neon_fp_vmla_qqq,\
1144- neon_fp_vrecps_vrsqrts_ddd,\
1145- neon_fp_vrecps_vrsqrts_qqq")
1146-
1147-(define_bypass 3 "neon_vqneg_vqabs"
1148- "neon_int_1,\
1149- neon_int_4,\
1150- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1151- neon_mul_qqq_8_16_32_ddd_32,\
1152- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1153- neon_mla_qqq_8_16,\
1154- neon_fp_vadd_ddd_vabs_dd,\
1155- neon_fp_vadd_qqq_vabs_qq,\
1156- neon_fp_vmla_ddd,\
1157- neon_fp_vmla_qqq,\
1158- neon_fp_vrecps_vrsqrts_ddd,\
1159- neon_fp_vrecps_vrsqrts_qqq")
1160-
1161-(define_bypass 3 "neon_int_5"
1162- "neon_int_1,\
1163- neon_int_4,\
1164- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1165- neon_mul_qqq_8_16_32_ddd_32,\
1166- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1167- neon_mla_qqq_8_16,\
1168- neon_fp_vadd_ddd_vabs_dd,\
1169- neon_fp_vadd_qqq_vabs_qq,\
1170- neon_fp_vmla_ddd,\
1171- neon_fp_vmla_qqq,\
1172- neon_fp_vrecps_vrsqrts_ddd,\
1173- neon_fp_vrecps_vrsqrts_qqq")
1174-
1175-(define_bypass 3 "neon_int_4"
1176- "neon_int_1,\
1177- neon_int_4,\
1178- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1179- neon_mul_qqq_8_16_32_ddd_32,\
1180- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1181- neon_mla_qqq_8_16,\
1182- neon_fp_vadd_ddd_vabs_dd,\
1183- neon_fp_vadd_qqq_vabs_qq,\
1184- neon_fp_vmla_ddd,\
1185- neon_fp_vmla_qqq,\
1186- neon_fp_vrecps_vrsqrts_ddd,\
1187- neon_fp_vrecps_vrsqrts_qqq")
1188-
1189-(define_bypass 2 "neon_int_3"
1190- "neon_int_1,\
1191- neon_int_4,\
1192- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1193- neon_mul_qqq_8_16_32_ddd_32,\
1194- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1195- neon_mla_qqq_8_16,\
1196- neon_fp_vadd_ddd_vabs_dd,\
1197- neon_fp_vadd_qqq_vabs_qq,\
1198- neon_fp_vmla_ddd,\
1199- neon_fp_vmla_qqq,\
1200- neon_fp_vrecps_vrsqrts_ddd,\
1201- neon_fp_vrecps_vrsqrts_qqq")
1202-
1203-(define_bypass 2 "neon_int_2"
1204- "neon_int_1,\
1205- neon_int_4,\
1206- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1207- neon_mul_qqq_8_16_32_ddd_32,\
1208- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1209- neon_mla_qqq_8_16,\
1210- neon_fp_vadd_ddd_vabs_dd,\
1211- neon_fp_vadd_qqq_vabs_qq,\
1212- neon_fp_vmla_ddd,\
1213- neon_fp_vmla_qqq,\
1214- neon_fp_vrecps_vrsqrts_ddd,\
1215- neon_fp_vrecps_vrsqrts_qqq")
1216-
1217-(define_bypass 2 "neon_int_1"
1218- "neon_int_1,\
1219- neon_int_4,\
1220- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1221- neon_mul_qqq_8_16_32_ddd_32,\
1222- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1223- neon_mla_qqq_8_16,\
1224- neon_fp_vadd_ddd_vabs_dd,\
1225- neon_fp_vadd_qqq_vabs_qq,\
1226- neon_fp_vmla_ddd,\
1227- neon_fp_vmla_qqq,\
1228- neon_fp_vrecps_vrsqrts_ddd,\
1229- neon_fp_vrecps_vrsqrts_qqq")
1230+(define_bypass 1 "cortex_a8_neon_mcr_2_mcrr"
1231+ "cortex_a8_neon_int_1,\
1232+ cortex_a8_neon_int_4,\
1233+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1234+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1235+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1236+ cortex_a8_neon_mla_qqq_8_16,\
1237+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1238+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1239+ cortex_a8_neon_fp_vmla_ddd,\
1240+ cortex_a8_neon_fp_vmla_qqq,\
1241+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1242+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1243+
1244+(define_bypass 1 "cortex_a8_neon_mcr"
1245+ "cortex_a8_neon_int_1,\
1246+ cortex_a8_neon_int_4,\
1247+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1248+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1249+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1250+ cortex_a8_neon_mla_qqq_8_16,\
1251+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1252+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1253+ cortex_a8_neon_fp_vmla_ddd,\
1254+ cortex_a8_neon_fp_vmla_qqq,\
1255+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1256+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1257+
1258+(define_bypass 2 "cortex_a8_neon_vld3_vld4_all_lanes"
1259+ "cortex_a8_neon_int_1,\
1260+ cortex_a8_neon_int_4,\
1261+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1262+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1263+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1264+ cortex_a8_neon_mla_qqq_8_16,\
1265+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1266+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1267+ cortex_a8_neon_fp_vmla_ddd,\
1268+ cortex_a8_neon_fp_vmla_qqq,\
1269+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1270+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1271+
1272+(define_bypass 5 "cortex_a8_neon_vld3_vld4_lane"
1273+ "cortex_a8_neon_int_1,\
1274+ cortex_a8_neon_int_4,\
1275+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1276+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1277+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1278+ cortex_a8_neon_mla_qqq_8_16,\
1279+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1280+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1281+ cortex_a8_neon_fp_vmla_ddd,\
1282+ cortex_a8_neon_fp_vmla_qqq,\
1283+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1284+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1285+
1286+(define_bypass 3 "cortex_a8_neon_vld1_vld2_lane"
1287+ "cortex_a8_neon_int_1,\
1288+ cortex_a8_neon_int_4,\
1289+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1290+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1291+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1292+ cortex_a8_neon_mla_qqq_8_16,\
1293+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1294+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1295+ cortex_a8_neon_fp_vmla_ddd,\
1296+ cortex_a8_neon_fp_vmla_qqq,\
1297+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1298+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1299+
1300+(define_bypass 4 "cortex_a8_neon_vld3_vld4"
1301+ "cortex_a8_neon_int_1,\
1302+ cortex_a8_neon_int_4,\
1303+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1304+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1305+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1306+ cortex_a8_neon_mla_qqq_8_16,\
1307+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1308+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1309+ cortex_a8_neon_fp_vmla_ddd,\
1310+ cortex_a8_neon_fp_vmla_qqq,\
1311+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1312+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1313+
1314+(define_bypass 3 "cortex_a8_neon_vld2_4_regs"
1315+ "cortex_a8_neon_int_1,\
1316+ cortex_a8_neon_int_4,\
1317+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1318+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1319+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1320+ cortex_a8_neon_mla_qqq_8_16,\
1321+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1322+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1323+ cortex_a8_neon_fp_vmla_ddd,\
1324+ cortex_a8_neon_fp_vmla_qqq,\
1325+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1326+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1327+
1328+(define_bypass 2 "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes"
1329+ "cortex_a8_neon_int_1,\
1330+ cortex_a8_neon_int_4,\
1331+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1332+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1333+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1334+ cortex_a8_neon_mla_qqq_8_16,\
1335+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1336+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1337+ cortex_a8_neon_fp_vmla_ddd,\
1338+ cortex_a8_neon_fp_vmla_qqq,\
1339+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1340+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1341+
1342+(define_bypass 2 "cortex_a8_neon_vld1_3_4_regs"
1343+ "cortex_a8_neon_int_1,\
1344+ cortex_a8_neon_int_4,\
1345+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1346+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1347+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1348+ cortex_a8_neon_mla_qqq_8_16,\
1349+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1350+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1351+ cortex_a8_neon_fp_vmla_ddd,\
1352+ cortex_a8_neon_fp_vmla_qqq,\
1353+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1354+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1355+
1356+(define_bypass 1 "cortex_a8_neon_vld1_1_2_regs"
1357+ "cortex_a8_neon_int_1,\
1358+ cortex_a8_neon_int_4,\
1359+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1360+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1361+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1362+ cortex_a8_neon_mla_qqq_8_16,\
1363+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1364+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1365+ cortex_a8_neon_fp_vmla_ddd,\
1366+ cortex_a8_neon_fp_vmla_qqq,\
1367+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1368+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1369+
1370+(define_bypass 0 "cortex_a8_neon_ldr"
1371+ "cortex_a8_neon_int_1,\
1372+ cortex_a8_neon_int_4,\
1373+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1374+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1375+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1376+ cortex_a8_neon_mla_qqq_8_16,\
1377+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1378+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1379+ cortex_a8_neon_fp_vmla_ddd,\
1380+ cortex_a8_neon_fp_vmla_qqq,\
1381+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1382+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1383+
1384+(define_bypass 3 "cortex_a8_neon_bp_3cycle"
1385+ "cortex_a8_neon_int_1,\
1386+ cortex_a8_neon_int_4,\
1387+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1388+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1389+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1390+ cortex_a8_neon_mla_qqq_8_16,\
1391+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1392+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1393+ cortex_a8_neon_fp_vmla_ddd,\
1394+ cortex_a8_neon_fp_vmla_qqq,\
1395+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1396+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1397+
1398+(define_bypass 2 "cortex_a8_neon_bp_2cycle"
1399+ "cortex_a8_neon_int_1,\
1400+ cortex_a8_neon_int_4,\
1401+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1402+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1403+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1404+ cortex_a8_neon_mla_qqq_8_16,\
1405+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1406+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1407+ cortex_a8_neon_fp_vmla_ddd,\
1408+ cortex_a8_neon_fp_vmla_qqq,\
1409+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1410+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1411+
1412+(define_bypass 1 "cortex_a8_neon_bp_simple"
1413+ "cortex_a8_neon_int_1,\
1414+ cortex_a8_neon_int_4,\
1415+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1416+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1417+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1418+ cortex_a8_neon_mla_qqq_8_16,\
1419+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1420+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1421+ cortex_a8_neon_fp_vmla_ddd,\
1422+ cortex_a8_neon_fp_vmla_qqq,\
1423+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1424+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1425+
1426+(define_bypass 9 "cortex_a8_neon_fp_vrecps_vrsqrts_qqq"
1427+ "cortex_a8_neon_int_1,\
1428+ cortex_a8_neon_int_4,\
1429+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1430+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1431+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1432+ cortex_a8_neon_mla_qqq_8_16,\
1433+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1434+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1435+ cortex_a8_neon_fp_vmla_ddd,\
1436+ cortex_a8_neon_fp_vmla_qqq,\
1437+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1438+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1439+
1440+(define_bypass 8 "cortex_a8_neon_fp_vrecps_vrsqrts_ddd"
1441+ "cortex_a8_neon_int_1,\
1442+ cortex_a8_neon_int_4,\
1443+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1444+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1445+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1446+ cortex_a8_neon_mla_qqq_8_16,\
1447+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1448+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1449+ cortex_a8_neon_fp_vmla_ddd,\
1450+ cortex_a8_neon_fp_vmla_qqq,\
1451+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1452+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1453+
1454+(define_bypass 9 "cortex_a8_neon_fp_vmla_qqq_scalar"
1455+ "cortex_a8_neon_int_1,\
1456+ cortex_a8_neon_int_4,\
1457+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1458+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1459+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1460+ cortex_a8_neon_mla_qqq_8_16,\
1461+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1462+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1463+ cortex_a8_neon_fp_vmla_ddd,\
1464+ cortex_a8_neon_fp_vmla_qqq,\
1465+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1466+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1467+
1468+(define_bypass 8 "cortex_a8_neon_fp_vmla_ddd_scalar"
1469+ "cortex_a8_neon_int_1,\
1470+ cortex_a8_neon_int_4,\
1471+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1472+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1473+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1474+ cortex_a8_neon_mla_qqq_8_16,\
1475+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1476+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1477+ cortex_a8_neon_fp_vmla_ddd,\
1478+ cortex_a8_neon_fp_vmla_qqq,\
1479+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1480+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1481+
1482+(define_bypass 9 "cortex_a8_neon_fp_vmla_qqq"
1483+ "cortex_a8_neon_int_1,\
1484+ cortex_a8_neon_int_4,\
1485+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1486+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1487+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1488+ cortex_a8_neon_mla_qqq_8_16,\
1489+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1490+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1491+ cortex_a8_neon_fp_vmla_ddd,\
1492+ cortex_a8_neon_fp_vmla_qqq,\
1493+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1494+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1495+
1496+(define_bypass 8 "cortex_a8_neon_fp_vmla_ddd"
1497+ "cortex_a8_neon_int_1,\
1498+ cortex_a8_neon_int_4,\
1499+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1500+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1501+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1502+ cortex_a8_neon_mla_qqq_8_16,\
1503+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1504+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1505+ cortex_a8_neon_fp_vmla_ddd,\
1506+ cortex_a8_neon_fp_vmla_qqq,\
1507+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1508+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1509+
1510+(define_bypass 5 "cortex_a8_neon_fp_vmul_qqd"
1511+ "cortex_a8_neon_int_1,\
1512+ cortex_a8_neon_int_4,\
1513+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1514+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1515+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1516+ cortex_a8_neon_mla_qqq_8_16,\
1517+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1518+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1519+ cortex_a8_neon_fp_vmla_ddd,\
1520+ cortex_a8_neon_fp_vmla_qqq,\
1521+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1522+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1523+
1524+(define_bypass 4 "cortex_a8_neon_fp_vmul_ddd"
1525+ "cortex_a8_neon_int_1,\
1526+ cortex_a8_neon_int_4,\
1527+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1528+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1529+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1530+ cortex_a8_neon_mla_qqq_8_16,\
1531+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1532+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1533+ cortex_a8_neon_fp_vmla_ddd,\
1534+ cortex_a8_neon_fp_vmla_qqq,\
1535+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1536+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1537+
1538+(define_bypass 4 "cortex_a8_neon_fp_vsum"
1539+ "cortex_a8_neon_int_1,\
1540+ cortex_a8_neon_int_4,\
1541+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1542+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1543+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1544+ cortex_a8_neon_mla_qqq_8_16,\
1545+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1546+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1547+ cortex_a8_neon_fp_vmla_ddd,\
1548+ cortex_a8_neon_fp_vmla_qqq,\
1549+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1550+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1551+
1552+(define_bypass 5 "cortex_a8_neon_fp_vadd_qqq_vabs_qq"
1553+ "cortex_a8_neon_int_1,\
1554+ cortex_a8_neon_int_4,\
1555+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1556+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1557+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1558+ cortex_a8_neon_mla_qqq_8_16,\
1559+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1560+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1561+ cortex_a8_neon_fp_vmla_ddd,\
1562+ cortex_a8_neon_fp_vmla_qqq,\
1563+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1564+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1565+
1566+(define_bypass 4 "cortex_a8_neon_fp_vadd_ddd_vabs_dd"
1567+ "cortex_a8_neon_int_1,\
1568+ cortex_a8_neon_int_4,\
1569+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1570+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1571+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1572+ cortex_a8_neon_mla_qqq_8_16,\
1573+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1574+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1575+ cortex_a8_neon_fp_vmla_ddd,\
1576+ cortex_a8_neon_fp_vmla_qqq,\
1577+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1578+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1579+
1580+(define_bypass 5 "cortex_a8_neon_vsra_vrsra"
1581+ "cortex_a8_neon_int_1,\
1582+ cortex_a8_neon_int_4,\
1583+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1584+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1585+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1586+ cortex_a8_neon_mla_qqq_8_16,\
1587+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1588+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1589+ cortex_a8_neon_fp_vmla_ddd,\
1590+ cortex_a8_neon_fp_vmla_qqq,\
1591+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1592+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1593+
1594+(define_bypass 4 "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq"
1595+ "cortex_a8_neon_int_1,\
1596+ cortex_a8_neon_int_4,\
1597+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1598+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1599+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1600+ cortex_a8_neon_mla_qqq_8_16,\
1601+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1602+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1603+ cortex_a8_neon_fp_vmla_ddd,\
1604+ cortex_a8_neon_fp_vmla_qqq,\
1605+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1606+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1607+
1608+(define_bypass 0 "cortex_a8_neon_vshl_ddd"
1609+ "cortex_a8_neon_int_1,\
1610+ cortex_a8_neon_int_4,\
1611+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1612+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1613+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1614+ cortex_a8_neon_mla_qqq_8_16,\
1615+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1616+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1617+ cortex_a8_neon_fp_vmla_ddd,\
1618+ cortex_a8_neon_fp_vmla_qqq,\
1619+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1620+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1621+
1622+(define_bypass 3 "cortex_a8_neon_shift_3"
1623+ "cortex_a8_neon_int_1,\
1624+ cortex_a8_neon_int_4,\
1625+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1626+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1627+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1628+ cortex_a8_neon_mla_qqq_8_16,\
1629+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1630+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1631+ cortex_a8_neon_fp_vmla_ddd,\
1632+ cortex_a8_neon_fp_vmla_qqq,\
1633+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1634+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1635+
1636+(define_bypass 3 "cortex_a8_neon_shift_2"
1637+ "cortex_a8_neon_int_1,\
1638+ cortex_a8_neon_int_4,\
1639+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1640+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1641+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1642+ cortex_a8_neon_mla_qqq_8_16,\
1643+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1644+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1645+ cortex_a8_neon_fp_vmla_ddd,\
1646+ cortex_a8_neon_fp_vmla_qqq,\
1647+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1648+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1649+
1650+(define_bypass 2 "cortex_a8_neon_shift_1"
1651+ "cortex_a8_neon_int_1,\
1652+ cortex_a8_neon_int_4,\
1653+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1654+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1655+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1656+ cortex_a8_neon_mla_qqq_8_16,\
1657+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1658+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1659+ cortex_a8_neon_fp_vmla_ddd,\
1660+ cortex_a8_neon_fp_vmla_qqq,\
1661+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1662+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1663+
1664+(define_bypass 5 "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
1665+ "cortex_a8_neon_int_1,\
1666+ cortex_a8_neon_int_4,\
1667+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1668+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1669+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1670+ cortex_a8_neon_mla_qqq_8_16,\
1671+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1672+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1673+ cortex_a8_neon_fp_vmla_ddd,\
1674+ cortex_a8_neon_fp_vmla_qqq,\
1675+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1676+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1677+
1678+(define_bypass 8 "cortex_a8_neon_mul_qqd_32_scalar"
1679+ "cortex_a8_neon_int_1,\
1680+ cortex_a8_neon_int_4,\
1681+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1682+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1683+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1684+ cortex_a8_neon_mla_qqq_8_16,\
1685+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1686+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1687+ cortex_a8_neon_fp_vmla_ddd,\
1688+ cortex_a8_neon_fp_vmla_qqq,\
1689+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1690+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1691+
1692+(define_bypass 5 "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar"
1693+ "cortex_a8_neon_int_1,\
1694+ cortex_a8_neon_int_4,\
1695+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1696+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1697+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1698+ cortex_a8_neon_mla_qqq_8_16,\
1699+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1700+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1701+ cortex_a8_neon_fp_vmla_ddd,\
1702+ cortex_a8_neon_fp_vmla_qqq,\
1703+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1704+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1705+
1706+(define_bypass 8 "cortex_a8_neon_mla_qqq_32_qqd_32_scalar"
1707+ "cortex_a8_neon_int_1,\
1708+ cortex_a8_neon_int_4,\
1709+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1710+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1711+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1712+ cortex_a8_neon_mla_qqq_8_16,\
1713+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1714+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1715+ cortex_a8_neon_fp_vmla_ddd,\
1716+ cortex_a8_neon_fp_vmla_qqq,\
1717+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1718+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1719+
1720+(define_bypass 6 "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
1721+ "cortex_a8_neon_int_1,\
1722+ cortex_a8_neon_int_4,\
1723+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1724+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1725+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1726+ cortex_a8_neon_mla_qqq_8_16,\
1727+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1728+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1729+ cortex_a8_neon_fp_vmla_ddd,\
1730+ cortex_a8_neon_fp_vmla_qqq,\
1731+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1732+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1733+
1734+(define_bypass 6 "cortex_a8_neon_mla_qqq_8_16"
1735+ "cortex_a8_neon_int_1,\
1736+ cortex_a8_neon_int_4,\
1737+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1738+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1739+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1740+ cortex_a8_neon_mla_qqq_8_16,\
1741+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1742+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1743+ cortex_a8_neon_fp_vmla_ddd,\
1744+ cortex_a8_neon_fp_vmla_qqq,\
1745+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1746+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1747+
1748+(define_bypass 5 "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
1749+ "cortex_a8_neon_int_1,\
1750+ cortex_a8_neon_int_4,\
1751+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1752+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1753+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1754+ cortex_a8_neon_mla_qqq_8_16,\
1755+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1756+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1757+ cortex_a8_neon_fp_vmla_ddd,\
1758+ cortex_a8_neon_fp_vmla_qqq,\
1759+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1760+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1761+
1762+(define_bypass 6 "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1763+ "cortex_a8_neon_int_1,\
1764+ cortex_a8_neon_int_4,\
1765+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1766+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1767+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1768+ cortex_a8_neon_mla_qqq_8_16,\
1769+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1770+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1771+ cortex_a8_neon_fp_vmla_ddd,\
1772+ cortex_a8_neon_fp_vmla_qqq,\
1773+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1774+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1775+
1776+(define_bypass 6 "cortex_a8_neon_mul_qqq_8_16_32_ddd_32"
1777+ "cortex_a8_neon_int_1,\
1778+ cortex_a8_neon_int_4,\
1779+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1780+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1781+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1782+ cortex_a8_neon_mla_qqq_8_16,\
1783+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1784+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1785+ cortex_a8_neon_fp_vmla_ddd,\
1786+ cortex_a8_neon_fp_vmla_qqq,\
1787+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1788+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1789+
1790+(define_bypass 5 "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1791+ "cortex_a8_neon_int_1,\
1792+ cortex_a8_neon_int_4,\
1793+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1794+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1795+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1796+ cortex_a8_neon_mla_qqq_8_16,\
1797+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1798+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1799+ cortex_a8_neon_fp_vmla_ddd,\
1800+ cortex_a8_neon_fp_vmla_qqq,\
1801+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1802+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1803+
1804+(define_bypass 5 "cortex_a8_neon_vsma"
1805+ "cortex_a8_neon_int_1,\
1806+ cortex_a8_neon_int_4,\
1807+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1808+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1809+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1810+ cortex_a8_neon_mla_qqq_8_16,\
1811+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1812+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1813+ cortex_a8_neon_fp_vmla_ddd,\
1814+ cortex_a8_neon_fp_vmla_qqq,\
1815+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1816+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1817+
1818+(define_bypass 6 "cortex_a8_neon_vaba_qqq"
1819+ "cortex_a8_neon_int_1,\
1820+ cortex_a8_neon_int_4,\
1821+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1822+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1823+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1824+ cortex_a8_neon_mla_qqq_8_16,\
1825+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1826+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1827+ cortex_a8_neon_fp_vmla_ddd,\
1828+ cortex_a8_neon_fp_vmla_qqq,\
1829+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1830+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1831+
1832+(define_bypass 5 "cortex_a8_neon_vaba"
1833+ "cortex_a8_neon_int_1,\
1834+ cortex_a8_neon_int_4,\
1835+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1836+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1837+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1838+ cortex_a8_neon_mla_qqq_8_16,\
1839+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1840+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1841+ cortex_a8_neon_fp_vmla_ddd,\
1842+ cortex_a8_neon_fp_vmla_qqq,\
1843+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1844+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1845+
1846+(define_bypass 2 "cortex_a8_neon_vmov"
1847+ "cortex_a8_neon_int_1,\
1848+ cortex_a8_neon_int_4,\
1849+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1850+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1851+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1852+ cortex_a8_neon_mla_qqq_8_16,\
1853+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1854+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1855+ cortex_a8_neon_fp_vmla_ddd,\
1856+ cortex_a8_neon_fp_vmla_qqq,\
1857+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1858+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1859+
1860+(define_bypass 3 "cortex_a8_neon_vqneg_vqabs"
1861+ "cortex_a8_neon_int_1,\
1862+ cortex_a8_neon_int_4,\
1863+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1864+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1865+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1866+ cortex_a8_neon_mla_qqq_8_16,\
1867+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1868+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1869+ cortex_a8_neon_fp_vmla_ddd,\
1870+ cortex_a8_neon_fp_vmla_qqq,\
1871+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1872+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1873+
1874+(define_bypass 3 "cortex_a8_neon_int_5"
1875+ "cortex_a8_neon_int_1,\
1876+ cortex_a8_neon_int_4,\
1877+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1878+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1879+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1880+ cortex_a8_neon_mla_qqq_8_16,\
1881+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1882+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1883+ cortex_a8_neon_fp_vmla_ddd,\
1884+ cortex_a8_neon_fp_vmla_qqq,\
1885+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1886+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1887+
1888+(define_bypass 3 "cortex_a8_neon_int_4"
1889+ "cortex_a8_neon_int_1,\
1890+ cortex_a8_neon_int_4,\
1891+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1892+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1893+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1894+ cortex_a8_neon_mla_qqq_8_16,\
1895+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1896+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1897+ cortex_a8_neon_fp_vmla_ddd,\
1898+ cortex_a8_neon_fp_vmla_qqq,\
1899+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1900+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1901+
1902+(define_bypass 2 "cortex_a8_neon_int_3"
1903+ "cortex_a8_neon_int_1,\
1904+ cortex_a8_neon_int_4,\
1905+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1906+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1907+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1908+ cortex_a8_neon_mla_qqq_8_16,\
1909+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1910+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1911+ cortex_a8_neon_fp_vmla_ddd,\
1912+ cortex_a8_neon_fp_vmla_qqq,\
1913+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1914+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1915+
1916+(define_bypass 2 "cortex_a8_neon_int_2"
1917+ "cortex_a8_neon_int_1,\
1918+ cortex_a8_neon_int_4,\
1919+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1920+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1921+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1922+ cortex_a8_neon_mla_qqq_8_16,\
1923+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1924+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1925+ cortex_a8_neon_fp_vmla_ddd,\
1926+ cortex_a8_neon_fp_vmla_qqq,\
1927+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1928+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1929+
1930+(define_bypass 2 "cortex_a8_neon_int_1"
1931+ "cortex_a8_neon_int_1,\
1932+ cortex_a8_neon_int_4,\
1933+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1934+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1935+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1936+ cortex_a8_neon_mla_qqq_8_16,\
1937+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1938+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1939+ cortex_a8_neon_fp_vmla_ddd,\
1940+ cortex_a8_neon_fp_vmla_qqq,\
1941+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1942+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1943
1944
1945=== added file 'gcc/config/arm/cortex-a9-neon.md'
1946--- old/gcc/config/arm/cortex-a9-neon.md 1970-01-01 00:00:00 +0000
1947+++ new/gcc/config/arm/cortex-a9-neon.md 2010-09-16 09:47:44 +0000
1948@@ -0,0 +1,1237 @@
1949+;; ARM Cortex-A9 pipeline description
1950+;; Copyright (C) 2010 Free Software Foundation, Inc.
1951+;;
1952+;; Neon pipeline description contributed by ARM Ltd.
1953+;;
1954+;; This file is part of GCC.
1955+;;
1956+;; GCC is free software; you can redistribute it and/or modify it
1957+;; under the terms of the GNU General Public License as published by
1958+;; the Free Software Foundation; either version 3, or (at your option)
1959+;; any later version.
1960+;;
1961+;; GCC is distributed in the hope that it will be useful, but
1962+;; WITHOUT ANY WARRANTY; without even the implied warranty of
1963+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1964+;; General Public License for more details.
1965+;;
1966+;; You should have received a copy of the GNU General Public License
1967+;; along with GCC; see the file COPYING3. If not see
1968+;; <http://www.gnu.org/licenses/>.
1969+
1970+
1971+(define_automaton "cortex_a9_neon")
1972+
1973+;; Only one instruction can be issued per cycle.
1974+(define_cpu_unit "cortex_a9_neon_issue_perm" "cortex_a9_neon")
1975+
1976+;; Only one data-processing instruction can be issued per cycle.
1977+(define_cpu_unit "cortex_a9_neon_issue_dp" "cortex_a9_neon")
1978+
1979+;; We need a special mutual exclusion (to be used in addition to
1980+;; cortex_a9_neon_issue_dp) for the case when an instruction such as
1981+;; vmla.f is forwarded from E5 of the floating-point multiply pipeline to
1982+;; E2 of the floating-point add pipeline. On the cycle previous to that
1983+;; forward we must prevent issue of any instruction to the floating-point
1984+;; add pipeline, but still allow issue of a data-processing instruction
1985+;; to any of the other pipelines.
1986+(define_cpu_unit "cortex_a9_neon_issue_fadd" "cortex_a9_neon")
1987+(define_cpu_unit "cortex_a9_neon_mcr" "cortex_a9_neon")
1988+
1989+
1990+;; Patterns of reservation.
1991+;; We model the NEON issue units as running in parallel with the core ones.
1992+;; We assume that multi-cycle NEON instructions get decomposed into
1993+;; micro-ops as they are issued into the NEON pipeline.
1994+
1995+(define_reservation "cortex_a9_neon_dp"
1996+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp")
1997+(define_reservation "cortex_a9_neon_dp_2"
1998+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
1999+ cortex_a9_neon_issue_dp")
2000+(define_reservation "cortex_a9_neon_dp_4"
2001+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2002+ cortex_a9_neon_issue_dp + cortex_a9_neon_issue_perm,\
2003+ cortex_a9_neon_issue_dp + cortex_a9_neon_issue_perm,\
2004+ cortex_a9_neon_issue_dp")
2005+
2006+(define_reservation "cortex_a9_neon_fadd"
2007+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp + \
2008+ cortex_a9_neon_issue_fadd")
2009+(define_reservation "cortex_a9_neon_fadd_2"
2010+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2011+ cortex_a9_neon_issue_fadd,\
2012+ cortex_a9_neon_issue_dp")
2013+
2014+(define_reservation "cortex_a9_neon_perm"
2015+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm")
2016+(define_reservation "cortex_a9_neon_perm_2"
2017+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm, \
2018+ cortex_a9_neon_issue_perm")
2019+(define_reservation "cortex_a9_neon_perm_3"
2020+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2021+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2022+ cortex_a9_neon_issue_perm")
2023+
2024+(define_reservation "cortex_a9_neon_ls"
2025+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm+cortex_a9_ls")
2026+(define_reservation "cortex_a9_neon_ls_2"
2027+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2028+ cortex_a9_neon_issue_perm")
2029+(define_reservation "cortex_a9_neon_ls_3"
2030+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2031+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2032+ cortex_a9_neon_issue_perm")
2033+(define_reservation "cortex_a9_neon_ls_4"
2034+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2035+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2036+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2037+ cortex_a9_neon_issue_perm")
2038+(define_reservation "cortex_a9_neon_ls_5"
2039+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_perm,\
2040+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2041+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2042+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2043+ cortex_a9_neon_issue_perm")
2044+
2045+(define_reservation "cortex_a9_neon_fmul_then_fadd"
2046+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2047+ nothing*3,\
2048+ cortex_a9_neon_issue_fadd")
2049+(define_reservation "cortex_a9_neon_fmul_then_fadd_2"
2050+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2051+ cortex_a9_neon_issue_dp,\
2052+ nothing*2,\
2053+ cortex_a9_neon_issue_fadd,\
2054+ cortex_a9_neon_issue_fadd")
2055+
2056+
2057+;; NEON -> core transfers.
2058+(define_insn_reservation "ca9_neon_mrc" 1
2059+ (and (eq_attr "tune" "cortexa9")
2060+ (eq_attr "neon_type" "neon_mrc"))
2061+ "ca9_issue_vfp_neon + cortex_a9_neon_mcr")
2062+
2063+(define_insn_reservation "ca9_neon_mrrc" 1
2064+ (and (eq_attr "tune" "cortexa9")
2065+ (eq_attr "neon_type" "neon_mrrc"))
2066+ "ca9_issue_vfp_neon + cortex_a9_neon_mcr")
2067+
2068+;; The remainder of this file is auto-generated by neon-schedgen.
2069+
2070+;; Instructions using this reservation read their source operands at N2, and
2071+;; produce a result at N3.
2072+(define_insn_reservation "cortex_a9_neon_int_1" 3
2073+ (and (eq_attr "tune" "cortexa9")
2074+ (eq_attr "neon_type" "neon_int_1"))
2075+ "cortex_a9_neon_dp")
2076+
2077+;; Instructions using this reservation read their (D|Q)m operands at N1,
2078+;; their (D|Q)n operands at N2, and produce a result at N3.
2079+(define_insn_reservation "cortex_a9_neon_int_2" 3
2080+ (and (eq_attr "tune" "cortexa9")
2081+ (eq_attr "neon_type" "neon_int_2"))
2082+ "cortex_a9_neon_dp")
2083+
2084+;; Instructions using this reservation read their source operands at N1, and
2085+;; produce a result at N3.
2086+(define_insn_reservation "cortex_a9_neon_int_3" 3
2087+ (and (eq_attr "tune" "cortexa9")
2088+ (eq_attr "neon_type" "neon_int_3"))
2089+ "cortex_a9_neon_dp")
2090+
2091+;; Instructions using this reservation read their source operands at N2, and
2092+;; produce a result at N4.
2093+(define_insn_reservation "cortex_a9_neon_int_4" 4
2094+ (and (eq_attr "tune" "cortexa9")
2095+ (eq_attr "neon_type" "neon_int_4"))
2096+ "cortex_a9_neon_dp")
2097+
2098+;; Instructions using this reservation read their (D|Q)m operands at N1,
2099+;; their (D|Q)n operands at N2, and produce a result at N4.
2100+(define_insn_reservation "cortex_a9_neon_int_5" 4
2101+ (and (eq_attr "tune" "cortexa9")
2102+ (eq_attr "neon_type" "neon_int_5"))
2103+ "cortex_a9_neon_dp")
2104+
2105+;; Instructions using this reservation read their source operands at N1, and
2106+;; produce a result at N4.
2107+(define_insn_reservation "cortex_a9_neon_vqneg_vqabs" 4
2108+ (and (eq_attr "tune" "cortexa9")
2109+ (eq_attr "neon_type" "neon_vqneg_vqabs"))
2110+ "cortex_a9_neon_dp")
2111+
2112+;; Instructions using this reservation produce a result at N3.
2113+(define_insn_reservation "cortex_a9_neon_vmov" 3
2114+ (and (eq_attr "tune" "cortexa9")
2115+ (eq_attr "neon_type" "neon_vmov"))
2116+ "cortex_a9_neon_dp")
2117+
2118+;; Instructions using this reservation read their (D|Q)n operands at N2,
2119+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2120+;; produce a result at N6.
2121+(define_insn_reservation "cortex_a9_neon_vaba" 6
2122+ (and (eq_attr "tune" "cortexa9")
2123+ (eq_attr "neon_type" "neon_vaba"))
2124+ "cortex_a9_neon_dp")
2125+
2126+;; Instructions using this reservation read their (D|Q)n operands at N2,
2127+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2128+;; produce a result at N6 on cycle 2.
2129+(define_insn_reservation "cortex_a9_neon_vaba_qqq" 7
2130+ (and (eq_attr "tune" "cortexa9")
2131+ (eq_attr "neon_type" "neon_vaba_qqq"))
2132+ "cortex_a9_neon_dp_2")
2133+
2134+;; Instructions using this reservation read their (D|Q)m operands at N1,
2135+;; their (D|Q)d operands at N3, and produce a result at N6.
2136+(define_insn_reservation "cortex_a9_neon_vsma" 6
2137+ (and (eq_attr "tune" "cortexa9")
2138+ (eq_attr "neon_type" "neon_vsma"))
2139+ "cortex_a9_neon_dp")
2140+
2141+;; Instructions using this reservation read their source operands at N2, and
2142+;; produce a result at N6.
2143+(define_insn_reservation "cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
2144+ (and (eq_attr "tune" "cortexa9")
2145+ (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
2146+ "cortex_a9_neon_dp")
2147+
2148+;; Instructions using this reservation read their source operands at N2, and
2149+;; produce a result at N6 on cycle 2.
2150+(define_insn_reservation "cortex_a9_neon_mul_qqq_8_16_32_ddd_32" 7
2151+ (and (eq_attr "tune" "cortexa9")
2152+ (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
2153+ "cortex_a9_neon_dp_2")
2154+
2155+;; Instructions using this reservation read their (D|Q)n operands at N2,
2156+;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
2157+(define_insn_reservation "cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
2158+ (and (eq_attr "tune" "cortexa9")
2159+ (eq_attr "neon_type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
2160+ "cortex_a9_neon_dp_2")
2161+
2162+;; Instructions using this reservation read their (D|Q)n operands at N2,
2163+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2164+;; produce a result at N6.
2165+(define_insn_reservation "cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
2166+ (and (eq_attr "tune" "cortexa9")
2167+ (eq_attr "neon_type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
2168+ "cortex_a9_neon_dp")
2169+
2170+;; Instructions using this reservation read their (D|Q)n operands at N2,
2171+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2172+;; produce a result at N6 on cycle 2.
2173+(define_insn_reservation "cortex_a9_neon_mla_qqq_8_16" 7
2174+ (and (eq_attr "tune" "cortexa9")
2175+ (eq_attr "neon_type" "neon_mla_qqq_8_16"))
2176+ "cortex_a9_neon_dp_2")
2177+
2178+;; Instructions using this reservation read their (D|Q)n operands at N2,
2179+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2180+;; produce a result at N6 on cycle 2.
2181+(define_insn_reservation "cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
2182+ (and (eq_attr "tune" "cortexa9")
2183+ (eq_attr "neon_type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
2184+ "cortex_a9_neon_dp_2")
2185+
2186+;; Instructions using this reservation read their (D|Q)n operands at N2,
2187+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2188+;; produce a result at N6 on cycle 4.
2189+(define_insn_reservation "cortex_a9_neon_mla_qqq_32_qqd_32_scalar" 9
2190+ (and (eq_attr "tune" "cortexa9")
2191+ (eq_attr "neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
2192+ "cortex_a9_neon_dp_4")
2193+
2194+;; Instructions using this reservation read their (D|Q)n operands at N2,
2195+;; their (D|Q)m operands at N1, and produce a result at N6.
2196+(define_insn_reservation "cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
2197+ (and (eq_attr "tune" "cortexa9")
2198+ (eq_attr "neon_type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
2199+ "cortex_a9_neon_dp")
2200+
2201+;; Instructions using this reservation read their (D|Q)n operands at N2,
2202+;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
2203+(define_insn_reservation "cortex_a9_neon_mul_qqd_32_scalar" 9
2204+ (and (eq_attr "tune" "cortexa9")
2205+ (eq_attr "neon_type" "neon_mul_qqd_32_scalar"))
2206+ "cortex_a9_neon_dp_4")
2207+
2208+;; Instructions using this reservation read their (D|Q)n operands at N2,
2209+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2210+;; produce a result at N6.
2211+(define_insn_reservation "cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
2212+ (and (eq_attr "tune" "cortexa9")
2213+ (eq_attr "neon_type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
2214+ "cortex_a9_neon_dp")
2215+
2216+;; Instructions using this reservation read their source operands at N1, and
2217+;; produce a result at N3.
2218+(define_insn_reservation "cortex_a9_neon_shift_1" 3
2219+ (and (eq_attr "tune" "cortexa9")
2220+ (eq_attr "neon_type" "neon_shift_1"))
2221+ "cortex_a9_neon_dp")
2222+
2223+;; Instructions using this reservation read their source operands at N1, and
2224+;; produce a result at N4.
2225+(define_insn_reservation "cortex_a9_neon_shift_2" 4
2226+ (and (eq_attr "tune" "cortexa9")
2227+ (eq_attr "neon_type" "neon_shift_2"))
2228+ "cortex_a9_neon_dp")
2229+
2230+;; Instructions using this reservation read their source operands at N1, and
2231+;; produce a result at N3 on cycle 2.
2232+(define_insn_reservation "cortex_a9_neon_shift_3" 4
2233+ (and (eq_attr "tune" "cortexa9")
2234+ (eq_attr "neon_type" "neon_shift_3"))
2235+ "cortex_a9_neon_dp_2")
2236+
2237+;; Instructions using this reservation read their source operands at N1, and
2238+;; produce a result at N1.
2239+(define_insn_reservation "cortex_a9_neon_vshl_ddd" 1
2240+ (and (eq_attr "tune" "cortexa9")
2241+ (eq_attr "neon_type" "neon_vshl_ddd"))
2242+ "cortex_a9_neon_dp")
2243+
2244+;; Instructions using this reservation read their source operands at N1, and
2245+;; produce a result at N4 on cycle 2.
2246+(define_insn_reservation "cortex_a9_neon_vqshl_vrshl_vqrshl_qqq" 5
2247+ (and (eq_attr "tune" "cortexa9")
2248+ (eq_attr "neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
2249+ "cortex_a9_neon_dp_2")
2250+
2251+;; Instructions using this reservation read their (D|Q)m operands at N1,
2252+;; their (D|Q)d operands at N3, and produce a result at N6.
2253+(define_insn_reservation "cortex_a9_neon_vsra_vrsra" 6
2254+ (and (eq_attr "tune" "cortexa9")
2255+ (eq_attr "neon_type" "neon_vsra_vrsra"))
2256+ "cortex_a9_neon_dp")
2257+
2258+;; Instructions using this reservation read their source operands at N2, and
2259+;; produce a result at N5.
2260+(define_insn_reservation "cortex_a9_neon_fp_vadd_ddd_vabs_dd" 5
2261+ (and (eq_attr "tune" "cortexa9")
2262+ (eq_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd"))
2263+ "cortex_a9_neon_fadd")
2264+
2265+;; Instructions using this reservation read their source operands at N2, and
2266+;; produce a result at N5 on cycle 2.
2267+(define_insn_reservation "cortex_a9_neon_fp_vadd_qqq_vabs_qq" 6
2268+ (and (eq_attr "tune" "cortexa9")
2269+ (eq_attr "neon_type" "neon_fp_vadd_qqq_vabs_qq"))
2270+ "cortex_a9_neon_fadd_2")
2271+
2272+;; Instructions using this reservation read their source operands at N1, and
2273+;; produce a result at N5.
2274+(define_insn_reservation "cortex_a9_neon_fp_vsum" 5
2275+ (and (eq_attr "tune" "cortexa9")
2276+ (eq_attr "neon_type" "neon_fp_vsum"))
2277+ "cortex_a9_neon_fadd")
2278+
2279+;; Instructions using this reservation read their (D|Q)n operands at N2,
2280+;; their (D|Q)m operands at N1, and produce a result at N5.
2281+(define_insn_reservation "cortex_a9_neon_fp_vmul_ddd" 5
2282+ (and (eq_attr "tune" "cortexa9")
2283+ (eq_attr "neon_type" "neon_fp_vmul_ddd"))
2284+ "cortex_a9_neon_dp")
2285+
2286+;; Instructions using this reservation read their (D|Q)n operands at N2,
2287+;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
2288+(define_insn_reservation "cortex_a9_neon_fp_vmul_qqd" 6
2289+ (and (eq_attr "tune" "cortexa9")
2290+ (eq_attr "neon_type" "neon_fp_vmul_qqd"))
2291+ "cortex_a9_neon_dp_2")
2292+
2293+;; Instructions using this reservation read their (D|Q)n operands at N2,
2294+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2295+;; produce a result at N9.
2296+(define_insn_reservation "cortex_a9_neon_fp_vmla_ddd" 9
2297+ (and (eq_attr "tune" "cortexa9")
2298+ (eq_attr "neon_type" "neon_fp_vmla_ddd"))
2299+ "cortex_a9_neon_fmul_then_fadd")
2300+
2301+;; Instructions using this reservation read their (D|Q)n operands at N2,
2302+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2303+;; produce a result at N9 on cycle 2.
2304+(define_insn_reservation "cortex_a9_neon_fp_vmla_qqq" 10
2305+ (and (eq_attr "tune" "cortexa9")
2306+ (eq_attr "neon_type" "neon_fp_vmla_qqq"))
2307+ "cortex_a9_neon_fmul_then_fadd_2")
2308+
2309+;; Instructions using this reservation read their (D|Q)n operands at N2,
2310+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2311+;; produce a result at N9.
2312+(define_insn_reservation "cortex_a9_neon_fp_vmla_ddd_scalar" 9
2313+ (and (eq_attr "tune" "cortexa9")
2314+ (eq_attr "neon_type" "neon_fp_vmla_ddd_scalar"))
2315+ "cortex_a9_neon_fmul_then_fadd")
2316+
2317+;; Instructions using this reservation read their (D|Q)n operands at N2,
2318+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2319+;; produce a result at N9 on cycle 2.
2320+(define_insn_reservation "cortex_a9_neon_fp_vmla_qqq_scalar" 10
2321+ (and (eq_attr "tune" "cortexa9")
2322+ (eq_attr "neon_type" "neon_fp_vmla_qqq_scalar"))
2323+ "cortex_a9_neon_fmul_then_fadd_2")
2324+
2325+;; Instructions using this reservation read their source operands at N2, and
2326+;; produce a result at N9.
2327+(define_insn_reservation "cortex_a9_neon_fp_vrecps_vrsqrts_ddd" 9
2328+ (and (eq_attr "tune" "cortexa9")
2329+ (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
2330+ "cortex_a9_neon_fmul_then_fadd")
2331+
2332+;; Instructions using this reservation read their source operands at N2, and
2333+;; produce a result at N9 on cycle 2.
2334+(define_insn_reservation "cortex_a9_neon_fp_vrecps_vrsqrts_qqq" 10
2335+ (and (eq_attr "tune" "cortexa9")
2336+ (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_qqq"))
2337+ "cortex_a9_neon_fmul_then_fadd_2")
2338+
2339+;; Instructions using this reservation read their source operands at N1, and
2340+;; produce a result at N2.
2341+(define_insn_reservation "cortex_a9_neon_bp_simple" 2
2342+ (and (eq_attr "tune" "cortexa9")
2343+ (eq_attr "neon_type" "neon_bp_simple"))
2344+ "cortex_a9_neon_perm")
2345+
2346+;; Instructions using this reservation read their source operands at N1, and
2347+;; produce a result at N2 on cycle 2.
2348+(define_insn_reservation "cortex_a9_neon_bp_2cycle" 3
2349+ (and (eq_attr "tune" "cortexa9")
2350+ (eq_attr "neon_type" "neon_bp_2cycle"))
2351+ "cortex_a9_neon_perm_2")
2352+
2353+;; Instructions using this reservation read their source operands at N1, and
2354+;; produce a result at N2 on cycle 3.
2355+(define_insn_reservation "cortex_a9_neon_bp_3cycle" 4
2356+ (and (eq_attr "tune" "cortexa9")
2357+ (eq_attr "neon_type" "neon_bp_3cycle"))
2358+ "cortex_a9_neon_perm_3")
2359+
2360+;; Instructions using this reservation produce a result at N1.
2361+(define_insn_reservation "cortex_a9_neon_ldr" 1
2362+ (and (eq_attr "tune" "cortexa9")
2363+ (eq_attr "neon_type" "neon_ldr"))
2364+ "cortex_a9_neon_ls")
2365+
2366+;; Instructions using this reservation read their source operands at N1.
2367+(define_insn_reservation "cortex_a9_neon_str" 0
2368+ (and (eq_attr "tune" "cortexa9")
2369+ (eq_attr "neon_type" "neon_str"))
2370+ "cortex_a9_neon_ls")
2371+
2372+;; Instructions using this reservation produce a result at N1 on cycle 2.
2373+(define_insn_reservation "cortex_a9_neon_vld1_1_2_regs" 2
2374+ (and (eq_attr "tune" "cortexa9")
2375+ (eq_attr "neon_type" "neon_vld1_1_2_regs"))
2376+ "cortex_a9_neon_ls_2")
2377+
2378+;; Instructions using this reservation produce a result at N1 on cycle 3.
2379+(define_insn_reservation "cortex_a9_neon_vld1_3_4_regs" 3
2380+ (and (eq_attr "tune" "cortexa9")
2381+ (eq_attr "neon_type" "neon_vld1_3_4_regs"))
2382+ "cortex_a9_neon_ls_3")
2383+
2384+;; Instructions using this reservation produce a result at N2 on cycle 2.
2385+(define_insn_reservation "cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
2386+ (and (eq_attr "tune" "cortexa9")
2387+ (eq_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
2388+ "cortex_a9_neon_ls_2")
2389+
2390+;; Instructions using this reservation produce a result at N2 on cycle 3.
2391+(define_insn_reservation "cortex_a9_neon_vld2_4_regs" 4
2392+ (and (eq_attr "tune" "cortexa9")
2393+ (eq_attr "neon_type" "neon_vld2_4_regs"))
2394+ "cortex_a9_neon_ls_3")
2395+
2396+;; Instructions using this reservation produce a result at N2 on cycle 4.
2397+(define_insn_reservation "cortex_a9_neon_vld3_vld4" 5
2398+ (and (eq_attr "tune" "cortexa9")
2399+ (eq_attr "neon_type" "neon_vld3_vld4"))
2400+ "cortex_a9_neon_ls_4")
2401+
2402+;; Instructions using this reservation read their source operands at N1.
2403+(define_insn_reservation "cortex_a9_neon_vst1_1_2_regs_vst2_2_regs" 0
2404+ (and (eq_attr "tune" "cortexa9")
2405+ (eq_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
2406+ "cortex_a9_neon_ls_2")
2407+
2408+;; Instructions using this reservation read their source operands at N1.
2409+(define_insn_reservation "cortex_a9_neon_vst1_3_4_regs" 0
2410+ (and (eq_attr "tune" "cortexa9")
2411+ (eq_attr "neon_type" "neon_vst1_3_4_regs"))
2412+ "cortex_a9_neon_ls_3")
2413+
2414+;; Instructions using this reservation read their source operands at N1.
2415+(define_insn_reservation "cortex_a9_neon_vst2_4_regs_vst3_vst4" 0
2416+ (and (eq_attr "tune" "cortexa9")
2417+ (eq_attr "neon_type" "neon_vst2_4_regs_vst3_vst4"))
2418+ "cortex_a9_neon_ls_4")
2419+
2420+;; Instructions using this reservation read their source operands at N1.
2421+(define_insn_reservation "cortex_a9_neon_vst3_vst4" 0
2422+ (and (eq_attr "tune" "cortexa9")
2423+ (eq_attr "neon_type" "neon_vst3_vst4"))
2424+ "cortex_a9_neon_ls_4")
2425+
2426+;; Instructions using this reservation read their source operands at N1, and
2427+;; produce a result at N2 on cycle 3.
2428+(define_insn_reservation "cortex_a9_neon_vld1_vld2_lane" 4
2429+ (and (eq_attr "tune" "cortexa9")
2430+ (eq_attr "neon_type" "neon_vld1_vld2_lane"))
2431+ "cortex_a9_neon_ls_3")
2432+
2433+;; Instructions using this reservation read their source operands at N1, and
2434+;; produce a result at N2 on cycle 5.
2435+(define_insn_reservation "cortex_a9_neon_vld3_vld4_lane" 6
2436+ (and (eq_attr "tune" "cortexa9")
2437+ (eq_attr "neon_type" "neon_vld3_vld4_lane"))
2438+ "cortex_a9_neon_ls_5")
2439+
2440+;; Instructions using this reservation read their source operands at N1.
2441+(define_insn_reservation "cortex_a9_neon_vst1_vst2_lane" 0
2442+ (and (eq_attr "tune" "cortexa9")
2443+ (eq_attr "neon_type" "neon_vst1_vst2_lane"))
2444+ "cortex_a9_neon_ls_2")
2445+
2446+;; Instructions using this reservation read their source operands at N1.
2447+(define_insn_reservation "cortex_a9_neon_vst3_vst4_lane" 0
2448+ (and (eq_attr "tune" "cortexa9")
2449+ (eq_attr "neon_type" "neon_vst3_vst4_lane"))
2450+ "cortex_a9_neon_ls_3")
2451+
2452+;; Instructions using this reservation produce a result at N2 on cycle 2.
2453+(define_insn_reservation "cortex_a9_neon_vld3_vld4_all_lanes" 3
2454+ (and (eq_attr "tune" "cortexa9")
2455+ (eq_attr "neon_type" "neon_vld3_vld4_all_lanes"))
2456+ "cortex_a9_neon_ls_3")
2457+
2458+;; Instructions using this reservation produce a result at N2.
2459+(define_insn_reservation "cortex_a9_neon_mcr" 2
2460+ (and (eq_attr "tune" "cortexa9")
2461+ (eq_attr "neon_type" "neon_mcr"))
2462+ "cortex_a9_neon_perm")
2463+
2464+;; Instructions using this reservation produce a result at N2.
2465+(define_insn_reservation "cortex_a9_neon_mcr_2_mcrr" 2
2466+ (and (eq_attr "tune" "cortexa9")
2467+ (eq_attr "neon_type" "neon_mcr_2_mcrr"))
2468+ "cortex_a9_neon_perm_2")
2469+
2470+;; Exceptions to the default latencies.
2471+
2472+(define_bypass 1 "cortex_a9_neon_mcr_2_mcrr"
2473+ "cortex_a9_neon_int_1,\
2474+ cortex_a9_neon_int_4,\
2475+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2476+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2477+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2478+ cortex_a9_neon_mla_qqq_8_16,\
2479+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2480+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2481+ cortex_a9_neon_fp_vmla_ddd,\
2482+ cortex_a9_neon_fp_vmla_qqq,\
2483+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2484+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2485+
2486+(define_bypass 1 "cortex_a9_neon_mcr"
2487+ "cortex_a9_neon_int_1,\
2488+ cortex_a9_neon_int_4,\
2489+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2490+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2491+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2492+ cortex_a9_neon_mla_qqq_8_16,\
2493+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2494+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2495+ cortex_a9_neon_fp_vmla_ddd,\
2496+ cortex_a9_neon_fp_vmla_qqq,\
2497+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2498+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2499+
2500+(define_bypass 2 "cortex_a9_neon_vld3_vld4_all_lanes"
2501+ "cortex_a9_neon_int_1,\
2502+ cortex_a9_neon_int_4,\
2503+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2504+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2505+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2506+ cortex_a9_neon_mla_qqq_8_16,\
2507+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2508+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2509+ cortex_a9_neon_fp_vmla_ddd,\
2510+ cortex_a9_neon_fp_vmla_qqq,\
2511+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2512+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2513+
2514+(define_bypass 5 "cortex_a9_neon_vld3_vld4_lane"
2515+ "cortex_a9_neon_int_1,\
2516+ cortex_a9_neon_int_4,\
2517+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2518+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2519+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2520+ cortex_a9_neon_mla_qqq_8_16,\
2521+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2522+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2523+ cortex_a9_neon_fp_vmla_ddd,\
2524+ cortex_a9_neon_fp_vmla_qqq,\
2525+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2526+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2527+
2528+(define_bypass 3 "cortex_a9_neon_vld1_vld2_lane"
2529+ "cortex_a9_neon_int_1,\
2530+ cortex_a9_neon_int_4,\
2531+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2532+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2533+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2534+ cortex_a9_neon_mla_qqq_8_16,\
2535+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2536+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2537+ cortex_a9_neon_fp_vmla_ddd,\
2538+ cortex_a9_neon_fp_vmla_qqq,\
2539+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2540+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2541+
2542+(define_bypass 4 "cortex_a9_neon_vld3_vld4"
2543+ "cortex_a9_neon_int_1,\
2544+ cortex_a9_neon_int_4,\
2545+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2546+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2547+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2548+ cortex_a9_neon_mla_qqq_8_16,\
2549+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2550+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2551+ cortex_a9_neon_fp_vmla_ddd,\
2552+ cortex_a9_neon_fp_vmla_qqq,\
2553+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2554+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2555+
2556+(define_bypass 3 "cortex_a9_neon_vld2_4_regs"
2557+ "cortex_a9_neon_int_1,\
2558+ cortex_a9_neon_int_4,\
2559+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2560+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2561+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2562+ cortex_a9_neon_mla_qqq_8_16,\
2563+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2564+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2565+ cortex_a9_neon_fp_vmla_ddd,\
2566+ cortex_a9_neon_fp_vmla_qqq,\
2567+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2568+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2569+
2570+(define_bypass 2 "cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes"
2571+ "cortex_a9_neon_int_1,\
2572+ cortex_a9_neon_int_4,\
2573+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2574+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2575+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2576+ cortex_a9_neon_mla_qqq_8_16,\
2577+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2578+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2579+ cortex_a9_neon_fp_vmla_ddd,\
2580+ cortex_a9_neon_fp_vmla_qqq,\
2581+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2582+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2583+
2584+(define_bypass 2 "cortex_a9_neon_vld1_3_4_regs"
2585+ "cortex_a9_neon_int_1,\
2586+ cortex_a9_neon_int_4,\
2587+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2588+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2589+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2590+ cortex_a9_neon_mla_qqq_8_16,\
2591+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2592+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2593+ cortex_a9_neon_fp_vmla_ddd,\
2594+ cortex_a9_neon_fp_vmla_qqq,\
2595+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2596+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2597+
2598+(define_bypass 1 "cortex_a9_neon_vld1_1_2_regs"
2599+ "cortex_a9_neon_int_1,\
2600+ cortex_a9_neon_int_4,\
2601+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2602+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2603+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2604+ cortex_a9_neon_mla_qqq_8_16,\
2605+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2606+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2607+ cortex_a9_neon_fp_vmla_ddd,\
2608+ cortex_a9_neon_fp_vmla_qqq,\
2609+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2610+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2611+
2612+(define_bypass 0 "cortex_a9_neon_ldr"
2613+ "cortex_a9_neon_int_1,\
2614+ cortex_a9_neon_int_4,\
2615+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2616+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2617+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2618+ cortex_a9_neon_mla_qqq_8_16,\
2619+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2620+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2621+ cortex_a9_neon_fp_vmla_ddd,\
2622+ cortex_a9_neon_fp_vmla_qqq,\
2623+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2624+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2625+
2626+(define_bypass 3 "cortex_a9_neon_bp_3cycle"
2627+ "cortex_a9_neon_int_1,\
2628+ cortex_a9_neon_int_4,\
2629+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2630+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2631+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2632+ cortex_a9_neon_mla_qqq_8_16,\
2633+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2634+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2635+ cortex_a9_neon_fp_vmla_ddd,\
2636+ cortex_a9_neon_fp_vmla_qqq,\
2637+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2638+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2639+
2640+(define_bypass 2 "cortex_a9_neon_bp_2cycle"
2641+ "cortex_a9_neon_int_1,\
2642+ cortex_a9_neon_int_4,\
2643+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2644+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2645+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2646+ cortex_a9_neon_mla_qqq_8_16,\
2647+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2648+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2649+ cortex_a9_neon_fp_vmla_ddd,\
2650+ cortex_a9_neon_fp_vmla_qqq,\
2651+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2652+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2653+
2654+(define_bypass 1 "cortex_a9_neon_bp_simple"
2655+ "cortex_a9_neon_int_1,\
2656+ cortex_a9_neon_int_4,\
2657+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2658+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2659+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2660+ cortex_a9_neon_mla_qqq_8_16,\
2661+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2662+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2663+ cortex_a9_neon_fp_vmla_ddd,\
2664+ cortex_a9_neon_fp_vmla_qqq,\
2665+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2666+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2667+
2668+(define_bypass 9 "cortex_a9_neon_fp_vrecps_vrsqrts_qqq"
2669+ "cortex_a9_neon_int_1,\
2670+ cortex_a9_neon_int_4,\
2671+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2672+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2673+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2674+ cortex_a9_neon_mla_qqq_8_16,\
2675+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2676+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2677+ cortex_a9_neon_fp_vmla_ddd,\
2678+ cortex_a9_neon_fp_vmla_qqq,\
2679+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2680+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2681+
2682+(define_bypass 8 "cortex_a9_neon_fp_vrecps_vrsqrts_ddd"
2683+ "cortex_a9_neon_int_1,\
2684+ cortex_a9_neon_int_4,\
2685+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2686+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2687+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2688+ cortex_a9_neon_mla_qqq_8_16,\
2689+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2690+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2691+ cortex_a9_neon_fp_vmla_ddd,\
2692+ cortex_a9_neon_fp_vmla_qqq,\
2693+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2694+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2695+
2696+(define_bypass 9 "cortex_a9_neon_fp_vmla_qqq_scalar"
2697+ "cortex_a9_neon_int_1,\
2698+ cortex_a9_neon_int_4,\
2699+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2700+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2701+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2702+ cortex_a9_neon_mla_qqq_8_16,\
2703+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2704+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2705+ cortex_a9_neon_fp_vmla_ddd,\
2706+ cortex_a9_neon_fp_vmla_qqq,\
2707+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2708+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2709+
2710+(define_bypass 8 "cortex_a9_neon_fp_vmla_ddd_scalar"
2711+ "cortex_a9_neon_int_1,\
2712+ cortex_a9_neon_int_4,\
2713+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2714+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2715+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2716+ cortex_a9_neon_mla_qqq_8_16,\
2717+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2718+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2719+ cortex_a9_neon_fp_vmla_ddd,\
2720+ cortex_a9_neon_fp_vmla_qqq,\
2721+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2722+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2723+
2724+(define_bypass 9 "cortex_a9_neon_fp_vmla_qqq"
2725+ "cortex_a9_neon_int_1,\
2726+ cortex_a9_neon_int_4,\
2727+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2728+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2729+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2730+ cortex_a9_neon_mla_qqq_8_16,\
2731+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2732+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2733+ cortex_a9_neon_fp_vmla_ddd,\
2734+ cortex_a9_neon_fp_vmla_qqq,\
2735+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2736+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2737+
2738+(define_bypass 8 "cortex_a9_neon_fp_vmla_ddd"
2739+ "cortex_a9_neon_int_1,\
2740+ cortex_a9_neon_int_4,\
2741+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2742+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2743+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2744+ cortex_a9_neon_mla_qqq_8_16,\
2745+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2746+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2747+ cortex_a9_neon_fp_vmla_ddd,\
2748+ cortex_a9_neon_fp_vmla_qqq,\
2749+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2750+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2751+
2752+(define_bypass 5 "cortex_a9_neon_fp_vmul_qqd"
2753+ "cortex_a9_neon_int_1,\
2754+ cortex_a9_neon_int_4,\
2755+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2756+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2757+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2758+ cortex_a9_neon_mla_qqq_8_16,\
2759+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2760+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2761+ cortex_a9_neon_fp_vmla_ddd,\
2762+ cortex_a9_neon_fp_vmla_qqq,\
2763+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2764+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2765+
2766+(define_bypass 4 "cortex_a9_neon_fp_vmul_ddd"
2767+ "cortex_a9_neon_int_1,\
2768+ cortex_a9_neon_int_4,\
2769+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2770+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2771+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2772+ cortex_a9_neon_mla_qqq_8_16,\
2773+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2774+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2775+ cortex_a9_neon_fp_vmla_ddd,\
2776+ cortex_a9_neon_fp_vmla_qqq,\
2777+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2778+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2779+
2780+(define_bypass 4 "cortex_a9_neon_fp_vsum"
2781+ "cortex_a9_neon_int_1,\
2782+ cortex_a9_neon_int_4,\
2783+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2784+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2785+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2786+ cortex_a9_neon_mla_qqq_8_16,\
2787+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2788+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2789+ cortex_a9_neon_fp_vmla_ddd,\
2790+ cortex_a9_neon_fp_vmla_qqq,\
2791+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2792+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2793+
2794+(define_bypass 5 "cortex_a9_neon_fp_vadd_qqq_vabs_qq"
2795+ "cortex_a9_neon_int_1,\
2796+ cortex_a9_neon_int_4,\
2797+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2798+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2799+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2800+ cortex_a9_neon_mla_qqq_8_16,\
2801+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2802+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2803+ cortex_a9_neon_fp_vmla_ddd,\
2804+ cortex_a9_neon_fp_vmla_qqq,\
2805+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2806+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2807+
2808+(define_bypass 4 "cortex_a9_neon_fp_vadd_ddd_vabs_dd"
2809+ "cortex_a9_neon_int_1,\
2810+ cortex_a9_neon_int_4,\
2811+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2812+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2813+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2814+ cortex_a9_neon_mla_qqq_8_16,\
2815+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2816+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2817+ cortex_a9_neon_fp_vmla_ddd,\
2818+ cortex_a9_neon_fp_vmla_qqq,\
2819+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2820+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2821+
2822+(define_bypass 5 "cortex_a9_neon_vsra_vrsra"
2823+ "cortex_a9_neon_int_1,\
2824+ cortex_a9_neon_int_4,\
2825+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2826+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2827+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2828+ cortex_a9_neon_mla_qqq_8_16,\
2829+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2830+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2831+ cortex_a9_neon_fp_vmla_ddd,\
2832+ cortex_a9_neon_fp_vmla_qqq,\
2833+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2834+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2835+
2836+(define_bypass 4 "cortex_a9_neon_vqshl_vrshl_vqrshl_qqq"
2837+ "cortex_a9_neon_int_1,\
2838+ cortex_a9_neon_int_4,\
2839+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2840+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2841+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2842+ cortex_a9_neon_mla_qqq_8_16,\
2843+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2844+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2845+ cortex_a9_neon_fp_vmla_ddd,\
2846+ cortex_a9_neon_fp_vmla_qqq,\
2847+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2848+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2849+
2850+(define_bypass 0 "cortex_a9_neon_vshl_ddd"
2851+ "cortex_a9_neon_int_1,\
2852+ cortex_a9_neon_int_4,\
2853+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2854+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2855+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2856+ cortex_a9_neon_mla_qqq_8_16,\
2857+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2858+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2859+ cortex_a9_neon_fp_vmla_ddd,\
2860+ cortex_a9_neon_fp_vmla_qqq,\
2861+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2862+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2863+
2864+(define_bypass 3 "cortex_a9_neon_shift_3"
2865+ "cortex_a9_neon_int_1,\
2866+ cortex_a9_neon_int_4,\
2867+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2868+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2869+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2870+ cortex_a9_neon_mla_qqq_8_16,\
2871+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2872+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2873+ cortex_a9_neon_fp_vmla_ddd,\
2874+ cortex_a9_neon_fp_vmla_qqq,\
2875+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2876+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2877+
2878+(define_bypass 3 "cortex_a9_neon_shift_2"
2879+ "cortex_a9_neon_int_1,\
2880+ cortex_a9_neon_int_4,\
2881+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2882+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2883+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2884+ cortex_a9_neon_mla_qqq_8_16,\
2885+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2886+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2887+ cortex_a9_neon_fp_vmla_ddd,\
2888+ cortex_a9_neon_fp_vmla_qqq,\
2889+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2890+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2891+
2892+(define_bypass 2 "cortex_a9_neon_shift_1"
2893+ "cortex_a9_neon_int_1,\
2894+ cortex_a9_neon_int_4,\
2895+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2896+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2897+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2898+ cortex_a9_neon_mla_qqq_8_16,\
2899+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2900+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2901+ cortex_a9_neon_fp_vmla_ddd,\
2902+ cortex_a9_neon_fp_vmla_qqq,\
2903+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2904+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2905+
2906+(define_bypass 5 "cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
2907+ "cortex_a9_neon_int_1,\
2908+ cortex_a9_neon_int_4,\
2909+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2910+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2911+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2912+ cortex_a9_neon_mla_qqq_8_16,\
2913+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2914+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2915+ cortex_a9_neon_fp_vmla_ddd,\
2916+ cortex_a9_neon_fp_vmla_qqq,\
2917+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2918+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2919+
2920+(define_bypass 8 "cortex_a9_neon_mul_qqd_32_scalar"
2921+ "cortex_a9_neon_int_1,\
2922+ cortex_a9_neon_int_4,\
2923+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2924+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2925+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2926+ cortex_a9_neon_mla_qqq_8_16,\
2927+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2928+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2929+ cortex_a9_neon_fp_vmla_ddd,\
2930+ cortex_a9_neon_fp_vmla_qqq,\
2931+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2932+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2933+
2934+(define_bypass 5 "cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar"
2935+ "cortex_a9_neon_int_1,\
2936+ cortex_a9_neon_int_4,\
2937+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2938+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2939+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2940+ cortex_a9_neon_mla_qqq_8_16,\
2941+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2942+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2943+ cortex_a9_neon_fp_vmla_ddd,\
2944+ cortex_a9_neon_fp_vmla_qqq,\
2945+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2946+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2947+
2948+(define_bypass 8 "cortex_a9_neon_mla_qqq_32_qqd_32_scalar"
2949+ "cortex_a9_neon_int_1,\
2950+ cortex_a9_neon_int_4,\
2951+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2952+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2953+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2954+ cortex_a9_neon_mla_qqq_8_16,\
2955+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2956+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2957+ cortex_a9_neon_fp_vmla_ddd,\
2958+ cortex_a9_neon_fp_vmla_qqq,\
2959+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2960+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2961+
2962+(define_bypass 6 "cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
2963+ "cortex_a9_neon_int_1,\
2964+ cortex_a9_neon_int_4,\
2965+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2966+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2967+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2968+ cortex_a9_neon_mla_qqq_8_16,\
2969+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2970+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2971+ cortex_a9_neon_fp_vmla_ddd,\
2972+ cortex_a9_neon_fp_vmla_qqq,\
2973+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2974+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2975+
2976+(define_bypass 6 "cortex_a9_neon_mla_qqq_8_16"
2977+ "cortex_a9_neon_int_1,\
2978+ cortex_a9_neon_int_4,\
2979+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2980+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2981+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2982+ cortex_a9_neon_mla_qqq_8_16,\
2983+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2984+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2985+ cortex_a9_neon_fp_vmla_ddd,\
2986+ cortex_a9_neon_fp_vmla_qqq,\
2987+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2988+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2989+
2990+(define_bypass 5 "cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
2991+ "cortex_a9_neon_int_1,\
2992+ cortex_a9_neon_int_4,\
2993+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2994+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2995+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2996+ cortex_a9_neon_mla_qqq_8_16,\
2997+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2998+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2999+ cortex_a9_neon_fp_vmla_ddd,\
3000+ cortex_a9_neon_fp_vmla_qqq,\
3001+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3002+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3003+
3004+(define_bypass 6 "cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
3005+ "cortex_a9_neon_int_1,\
3006+ cortex_a9_neon_int_4,\
3007+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3008+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3009+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3010+ cortex_a9_neon_mla_qqq_8_16,\
3011+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3012+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3013+ cortex_a9_neon_fp_vmla_ddd,\
3014+ cortex_a9_neon_fp_vmla_qqq,\
3015+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3016+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3017+
3018+(define_bypass 6 "cortex_a9_neon_mul_qqq_8_16_32_ddd_32"
3019+ "cortex_a9_neon_int_1,\
3020+ cortex_a9_neon_int_4,\
3021+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3022+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3023+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3024+ cortex_a9_neon_mla_qqq_8_16,\
3025+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3026+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3027+ cortex_a9_neon_fp_vmla_ddd,\
3028+ cortex_a9_neon_fp_vmla_qqq,\
3029+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3030+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3031+
3032+(define_bypass 5 "cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
3033+ "cortex_a9_neon_int_1,\
3034+ cortex_a9_neon_int_4,\
3035+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3036+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3037+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3038+ cortex_a9_neon_mla_qqq_8_16,\
3039+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3040+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3041+ cortex_a9_neon_fp_vmla_ddd,\
3042+ cortex_a9_neon_fp_vmla_qqq,\
3043+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3044+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3045+
3046+(define_bypass 5 "cortex_a9_neon_vsma"
3047+ "cortex_a9_neon_int_1,\
3048+ cortex_a9_neon_int_4,\
3049+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3050+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3051+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3052+ cortex_a9_neon_mla_qqq_8_16,\
3053+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3054+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3055+ cortex_a9_neon_fp_vmla_ddd,\
3056+ cortex_a9_neon_fp_vmla_qqq,\
3057+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3058+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3059+
3060+(define_bypass 6 "cortex_a9_neon_vaba_qqq"
3061+ "cortex_a9_neon_int_1,\
3062+ cortex_a9_neon_int_4,\
3063+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3064+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3065+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3066+ cortex_a9_neon_mla_qqq_8_16,\
3067+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3068+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3069+ cortex_a9_neon_fp_vmla_ddd,\
3070+ cortex_a9_neon_fp_vmla_qqq,\
3071+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3072+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3073+
3074+(define_bypass 5 "cortex_a9_neon_vaba"
3075+ "cortex_a9_neon_int_1,\
3076+ cortex_a9_neon_int_4,\
3077+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3078+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3079+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3080+ cortex_a9_neon_mla_qqq_8_16,\
3081+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3082+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3083+ cortex_a9_neon_fp_vmla_ddd,\
3084+ cortex_a9_neon_fp_vmla_qqq,\
3085+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3086+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3087+
3088+(define_bypass 2 "cortex_a9_neon_vmov"
3089+ "cortex_a9_neon_int_1,\
3090+ cortex_a9_neon_int_4,\
3091+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3092+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3093+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3094+ cortex_a9_neon_mla_qqq_8_16,\
3095+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3096+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3097+ cortex_a9_neon_fp_vmla_ddd,\
3098+ cortex_a9_neon_fp_vmla_qqq,\
3099+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3100+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3101+
3102+(define_bypass 3 "cortex_a9_neon_vqneg_vqabs"
3103+ "cortex_a9_neon_int_1,\
3104+ cortex_a9_neon_int_4,\
3105+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3106+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3107+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3108+ cortex_a9_neon_mla_qqq_8_16,\
3109+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3110+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3111+ cortex_a9_neon_fp_vmla_ddd,\
3112+ cortex_a9_neon_fp_vmla_qqq,\
3113+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3114+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3115+
3116+(define_bypass 3 "cortex_a9_neon_int_5"
3117+ "cortex_a9_neon_int_1,\
3118+ cortex_a9_neon_int_4,\
3119+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3120+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3121+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3122+ cortex_a9_neon_mla_qqq_8_16,\
3123+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3124+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3125+ cortex_a9_neon_fp_vmla_ddd,\
3126+ cortex_a9_neon_fp_vmla_qqq,\
3127+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3128+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3129+
3130+(define_bypass 3 "cortex_a9_neon_int_4"
3131+ "cortex_a9_neon_int_1,\
3132+ cortex_a9_neon_int_4,\
3133+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3134+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3135+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3136+ cortex_a9_neon_mla_qqq_8_16,\
3137+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3138+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3139+ cortex_a9_neon_fp_vmla_ddd,\
3140+ cortex_a9_neon_fp_vmla_qqq,\
3141+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3142+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3143+
3144+(define_bypass 2 "cortex_a9_neon_int_3"
3145+ "cortex_a9_neon_int_1,\
3146+ cortex_a9_neon_int_4,\
3147+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3148+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3149+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3150+ cortex_a9_neon_mla_qqq_8_16,\
3151+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3152+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3153+ cortex_a9_neon_fp_vmla_ddd,\
3154+ cortex_a9_neon_fp_vmla_qqq,\
3155+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3156+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3157+
3158+(define_bypass 2 "cortex_a9_neon_int_2"
3159+ "cortex_a9_neon_int_1,\
3160+ cortex_a9_neon_int_4,\
3161+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3162+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3163+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3164+ cortex_a9_neon_mla_qqq_8_16,\
3165+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3166+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3167+ cortex_a9_neon_fp_vmla_ddd,\
3168+ cortex_a9_neon_fp_vmla_qqq,\
3169+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3170+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3171+
3172+(define_bypass 2 "cortex_a9_neon_int_1"
3173+ "cortex_a9_neon_int_1,\
3174+ cortex_a9_neon_int_4,\
3175+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3176+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3177+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3178+ cortex_a9_neon_mla_qqq_8_16,\
3179+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3180+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3181+ cortex_a9_neon_fp_vmla_ddd,\
3182+ cortex_a9_neon_fp_vmla_qqq,\
3183+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3184+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3185+
3186
3187=== modified file 'gcc/config/arm/cortex-a9.md'
3188--- old/gcc/config/arm/cortex-a9.md 2010-08-24 13:15:54 +0000
3189+++ new/gcc/config/arm/cortex-a9.md 2010-09-16 09:47:44 +0000
3190@@ -80,8 +80,9 @@
3191 (define_insn_reservation "cortex_a9_dp" 2
3192 (and (eq_attr "tune" "cortexa9")
3193 (ior (eq_attr "type" "alu")
3194- (and (eq_attr "type" "alu_shift_reg, alu_shift")
3195- (eq_attr "insn" "mov"))))
3196+ (ior (and (eq_attr "type" "alu_shift_reg, alu_shift")
3197+ (eq_attr "insn" "mov"))
3198+ (eq_attr "neon_type" "none"))))
3199 "cortex_a9_p0_default|cortex_a9_p1_default")
3200
3201 ;; An instruction using the shifter will go down E1.
3202
3203=== modified file 'gcc/config/arm/neon-schedgen.ml'
3204--- old/gcc/config/arm/neon-schedgen.ml 2010-04-02 18:54:46 +0000
3205+++ new/gcc/config/arm/neon-schedgen.ml 2010-09-16 09:47:44 +0000
3206@@ -1,7 +1,6 @@
3207 (* Emission of the core of the Cortex-A8 NEON scheduling description.
3208 Copyright (C) 2007, 2010 Free Software Foundation, Inc.
3209 Contributed by CodeSourcery.
3210-
3211 This file is part of GCC.
3212
3213 GCC is free software; you can redistribute it and/or modify it under
3214@@ -21,7 +20,14 @@
3215
3216 (* This scheduling description generator works as follows.
3217 - Each group of instructions has source and destination requirements
3218- specified. The source requirements may be specified using
3219+ specified and a list of cores supported. This is then filtered
3220+ and per core scheduler descriptions are generated out.
3221+ The reservations generated are prefixed by the name of the
3222+ core and the check is performed on the basis of what the tuning
3223+ string is. Running this will generate Neon scheduler descriptions
3224+ for all cores supported.
3225+
3226+ The source requirements may be specified using
3227 Source (the stage at which all source operands not otherwise
3228 described are read), Source_m (the stage at which Rm operands are
3229 read), Source_n (likewise for Rn) and Source_d (likewise for Rd).
3230@@ -83,6 +89,17 @@
3231 | Ls of int
3232 | Fmul_then_fadd | Fmul_then_fadd_2
3233
3234+type core = CortexA8 | CortexA9
3235+let allCores = [CortexA8; CortexA9]
3236+let coreStr = function
3237+ CortexA8 -> "cortex_a8"
3238+ | CortexA9 -> "cortex_a9"
3239+
3240+let tuneStr = function
3241+ CortexA8 -> "cortexa8"
3242+ | CortexA9 -> "cortexa9"
3243+
3244+
3245 (* This table must be kept as short as possible by conflating
3246 entries with the same availability behavior.
3247
3248@@ -90,129 +107,136 @@
3249 Second components: availability requirements, in the order in which
3250 they should appear in the comments in the .md file.
3251 Third components: reservation info
3252+ Fourth components: List of supported cores.
3253 *)
3254 let availability_table = [
3255 (* NEON integer ALU instructions. *)
3256 (* vbit vbif vbsl vorr vbic vnot vcls vclz vcnt vadd vand vorr
3257 veor vbic vorn ddd qqq *)
3258- "neon_int_1", [Source n2; Dest n3], ALU;
3259+ "neon_int_1", [Source n2; Dest n3], ALU, allCores;
3260 (* vadd vsub qqd vsub ddd qqq *)
3261- "neon_int_2", [Source_m n1; Source_n n2; Dest n3], ALU;
3262+ "neon_int_2", [Source_m n1; Source_n n2; Dest n3], ALU, allCores;
3263 (* vsum vneg dd qq vadd vsub qdd *)
3264- "neon_int_3", [Source n1; Dest n3], ALU;
3265+ "neon_int_3", [Source n1; Dest n3], ALU, allCores;
3266 (* vabs vceqz vcgez vcbtz vclez vcltz vadh vradh vsbh vrsbh dqq *)
3267 (* vhadd vrhadd vqadd vtst ddd qqq *)
3268- "neon_int_4", [Source n2; Dest n4], ALU;
3269+ "neon_int_4", [Source n2; Dest n4], ALU, allCores;
3270 (* vabd qdd vhsub vqsub vabd vceq vcge vcgt vmax vmin vfmx vfmn ddd ddd *)
3271- "neon_int_5", [Source_m n1; Source_n n2; Dest n4], ALU;
3272+ "neon_int_5", [Source_m n1; Source_n n2; Dest n4], ALU, allCores;
3273 (* vqneg vqabs dd qq *)
3274- "neon_vqneg_vqabs", [Source n1; Dest n4], ALU;
3275+ "neon_vqneg_vqabs", [Source n1; Dest n4], ALU, allCores;
3276 (* vmov vmvn *)
3277- "neon_vmov", [Dest n3], ALU;
3278+ "neon_vmov", [Dest n3], ALU, allCores;
3279 (* vaba *)
3280- "neon_vaba", [Source_n n2; Source_m n1; Source_d n3; Dest n6], ALU;
3281+ "neon_vaba", [Source_n n2; Source_m n1; Source_d n3; Dest n6], ALU, allCores;
3282 "neon_vaba_qqq",
3283- [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)], ALU_2cycle;
3284+ [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)],
3285+ ALU_2cycle, allCores;
3286 (* vsma *)
3287- "neon_vsma", [Source_m n1; Source_d n3; Dest n6], ALU;
3288+ "neon_vsma", [Source_m n1; Source_d n3; Dest n6], ALU, allCores;
3289
3290 (* NEON integer multiply instructions. *)
3291 (* vmul, vqdmlh, vqrdmlh *)
3292 (* vmul, vqdmul, qdd 16/8 long 32/16 long *)
3293- "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long", [Source n2; Dest n6], Mul;
3294- "neon_mul_qqq_8_16_32_ddd_32", [Source n2; Dest_n_after (1, n6)], Mul_2cycle;
3295+ "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long", [Source n2; Dest n6],
3296+ Mul, allCores;
3297+ "neon_mul_qqq_8_16_32_ddd_32", [Source n2; Dest_n_after (1, n6)],
3298+ Mul_2cycle, allCores;
3299 (* vmul, vqdmul again *)
3300 "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar",
3301- [Source_n n2; Source_m n1; Dest_n_after (1, n6)], Mul_2cycle;
3302+ [Source_n n2; Source_m n1; Dest_n_after (1, n6)], Mul_2cycle, allCores;
3303 (* vmla, vmls *)
3304 "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long",
3305- [Source_n n2; Source_m n2; Source_d n3; Dest n6], Mul;
3306+ [Source_n n2; Source_m n2; Source_d n3; Dest n6], Mul, allCores;
3307 "neon_mla_qqq_8_16",
3308- [Source_n n2; Source_m n2; Source_d n3; Dest_n_after (1, n6)], Mul_2cycle;
3309+ [Source_n n2; Source_m n2; Source_d n3; Dest_n_after (1, n6)],
3310+ Mul_2cycle, allCores;
3311 "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long",
3312- [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)], Mul_2cycle;
3313+ [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)],
3314+ Mul_2cycle, allCores;
3315 "neon_mla_qqq_32_qqd_32_scalar",
3316- [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (3, n6)], Mul_4cycle;
3317+ [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (3, n6)],
3318+ Mul_4cycle, allCores;
3319 (* vmul, vqdmulh, vqrdmulh *)
3320 (* vmul, vqdmul *)
3321 "neon_mul_ddd_16_scalar_32_16_long_scalar",
3322- [Source_n n2; Source_m n1; Dest n6], Mul;
3323+ [Source_n n2; Source_m n1; Dest n6], Mul, allCores;
3324 "neon_mul_qqd_32_scalar",
3325- [Source_n n2; Source_m n1; Dest_n_after (3, n6)], Mul_4cycle;
3326+ [Source_n n2; Source_m n1; Dest_n_after (3, n6)], Mul_4cycle, allCores;
3327 (* vmla, vmls *)
3328 (* vmla, vmla, vqdmla, vqdmls *)
3329 "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar",
3330- [Source_n n2; Source_m n1; Source_d n3; Dest n6], Mul;
3331+ [Source_n n2; Source_m n1; Source_d n3; Dest n6], Mul, allCores;
3332
3333 (* NEON integer shift instructions. *)
3334 (* vshr/vshl immediate, vshr_narrow, vshl_vmvh, vsli_vsri_ddd *)
3335- "neon_shift_1", [Source n1; Dest n3], Shift;
3336- (* vqshl, vrshr immediate; vqshr, vqmov, vrshr, vqrshr narrow;
3337+ "neon_shift_1", [Source n1; Dest n3], Shift, allCores;
3338+ (* vqshl, vrshr immediate; vqshr, vqmov, vrshr, vqrshr narrow, allCores;
3339 vqshl_vrshl_vqrshl_ddd *)
3340- "neon_shift_2", [Source n1; Dest n4], Shift;
3341+ "neon_shift_2", [Source n1; Dest n4], Shift, allCores;
3342 (* vsli, vsri and vshl for qqq *)
3343- "neon_shift_3", [Source n1; Dest_n_after (1, n3)], Shift_2cycle;
3344- "neon_vshl_ddd", [Source n1; Dest n1], Shift;
3345+ "neon_shift_3", [Source n1; Dest_n_after (1, n3)], Shift_2cycle, allCores;
3346+ "neon_vshl_ddd", [Source n1; Dest n1], Shift, allCores;
3347 "neon_vqshl_vrshl_vqrshl_qqq", [Source n1; Dest_n_after (1, n4)],
3348- Shift_2cycle;
3349- "neon_vsra_vrsra", [Source_m n1; Source_d n3; Dest n6], Shift;
3350+ Shift_2cycle, allCores;
3351+ "neon_vsra_vrsra", [Source_m n1; Source_d n3; Dest n6], Shift, allCores;
3352
3353 (* NEON floating-point instructions. *)
3354 (* vadd, vsub, vabd, vmul, vceq, vcge, vcgt, vcage, vcagt, vmax, vmin *)
3355 (* vabs, vneg, vceqz, vcgez, vcgtz, vclez, vcltz, vrecpe, vrsqrte, vcvt *)
3356- "neon_fp_vadd_ddd_vabs_dd", [Source n2; Dest n5], Fadd;
3357+ "neon_fp_vadd_ddd_vabs_dd", [Source n2; Dest n5], Fadd, allCores;
3358 "neon_fp_vadd_qqq_vabs_qq", [Source n2; Dest_n_after (1, n5)],
3359- Fadd_2cycle;
3360+ Fadd_2cycle, allCores;
3361 (* vsum, fvmx, vfmn *)
3362- "neon_fp_vsum", [Source n1; Dest n5], Fadd;
3363- "neon_fp_vmul_ddd", [Source_n n2; Source_m n1; Dest n5], Fmul;
3364+ "neon_fp_vsum", [Source n1; Dest n5], Fadd, allCores;
3365+ "neon_fp_vmul_ddd", [Source_n n2; Source_m n1; Dest n5], Fmul, allCores;
3366 "neon_fp_vmul_qqd", [Source_n n2; Source_m n1; Dest_n_after (1, n5)],
3367- Fmul_2cycle;
3368+ Fmul_2cycle, allCores;
3369 (* vmla, vmls *)
3370 "neon_fp_vmla_ddd",
3371- [Source_n n2; Source_m n2; Source_d n3; Dest n9], Fmul_then_fadd;
3372+ [Source_n n2; Source_m n2; Source_d n3; Dest n9], Fmul_then_fadd, allCores;
3373 "neon_fp_vmla_qqq",
3374 [Source_n n2; Source_m n2; Source_d n3; Dest_n_after (1, n9)],
3375- Fmul_then_fadd_2;
3376+ Fmul_then_fadd_2, allCores;
3377 "neon_fp_vmla_ddd_scalar",
3378- [Source_n n2; Source_m n1; Source_d n3; Dest n9], Fmul_then_fadd;
3379+ [Source_n n2; Source_m n1; Source_d n3; Dest n9], Fmul_then_fadd, allCores;
3380 "neon_fp_vmla_qqq_scalar",
3381 [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n9)],
3382- Fmul_then_fadd_2;
3383- "neon_fp_vrecps_vrsqrts_ddd", [Source n2; Dest n9], Fmul_then_fadd;
3384+ Fmul_then_fadd_2, allCores;
3385+ "neon_fp_vrecps_vrsqrts_ddd", [Source n2; Dest n9], Fmul_then_fadd, allCores;
3386 "neon_fp_vrecps_vrsqrts_qqq", [Source n2; Dest_n_after (1, n9)],
3387- Fmul_then_fadd_2;
3388+ Fmul_then_fadd_2, allCores;
3389
3390 (* NEON byte permute instructions. *)
3391 (* vmov; vtrn and vswp for dd; vzip for dd; vuzp for dd; vrev; vext for dd *)
3392- "neon_bp_simple", [Source n1; Dest n2], Permute 1;
3393- (* vswp for qq; vext for qqq; vtbl with {Dn} or {Dn, Dn1};
3394+ "neon_bp_simple", [Source n1; Dest n2], Permute 1, allCores;
3395+ (* vswp for qq; vext for qqq; vtbl with {Dn} or {Dn, Dn1}, allCores;
3396 similarly for vtbx *)
3397- "neon_bp_2cycle", [Source n1; Dest_n_after (1, n2)], Permute 2;
3398+ "neon_bp_2cycle", [Source n1; Dest_n_after (1, n2)], Permute 2, allCores;
3399 (* all the rest *)
3400- "neon_bp_3cycle", [Source n1; Dest_n_after (2, n2)], Permute 3;
3401+ "neon_bp_3cycle", [Source n1; Dest_n_after (2, n2)], Permute 3, allCores;
3402
3403 (* NEON load/store instructions. *)
3404- "neon_ldr", [Dest n1], Ls 1;
3405- "neon_str", [Source n1], Ls 1;
3406- "neon_vld1_1_2_regs", [Dest_n_after (1, n1)], Ls 2;
3407- "neon_vld1_3_4_regs", [Dest_n_after (2, n1)], Ls 3;
3408- "neon_vld2_2_regs_vld1_vld2_all_lanes", [Dest_n_after (1, n2)], Ls 2;
3409- "neon_vld2_4_regs", [Dest_n_after (2, n2)], Ls 3;
3410- "neon_vld3_vld4", [Dest_n_after (3, n2)], Ls 4;
3411- "neon_vst1_1_2_regs_vst2_2_regs", [Source n1], Ls 2;
3412- "neon_vst1_3_4_regs", [Source n1], Ls 3;
3413- "neon_vst2_4_regs_vst3_vst4", [Source n1], Ls 4;
3414- "neon_vst3_vst4", [Source n1], Ls 4;
3415- "neon_vld1_vld2_lane", [Source n1; Dest_n_after (2, n2)], Ls 3;
3416- "neon_vld3_vld4_lane", [Source n1; Dest_n_after (4, n2)], Ls 5;
3417- "neon_vst1_vst2_lane", [Source n1], Ls 2;
3418- "neon_vst3_vst4_lane", [Source n1], Ls 3;
3419- "neon_vld3_vld4_all_lanes", [Dest_n_after (1, n2)], Ls 3;
3420+ "neon_ldr", [Dest n1], Ls 1, allCores;
3421+ "neon_str", [Source n1], Ls 1, allCores;
3422+ "neon_vld1_1_2_regs", [Dest_n_after (1, n1)], Ls 2, allCores;
3423+ "neon_vld1_3_4_regs", [Dest_n_after (2, n1)], Ls 3, allCores;
3424+ "neon_vld2_2_regs_vld1_vld2_all_lanes", [Dest_n_after (1, n2)], Ls 2, allCores;
3425+ "neon_vld2_4_regs", [Dest_n_after (2, n2)], Ls 3, allCores;
3426+ "neon_vld3_vld4", [Dest_n_after (3, n2)], Ls 4, allCores;
3427+ "neon_vst1_1_2_regs_vst2_2_regs", [Source n1], Ls 2, allCores;
3428+ "neon_vst1_3_4_regs", [Source n1], Ls 3, allCores;
3429+ "neon_vst2_4_regs_vst3_vst4", [Source n1], Ls 4, allCores;
3430+ "neon_vst3_vst4", [Source n1], Ls 4, allCores;
3431+ "neon_vld1_vld2_lane", [Source n1; Dest_n_after (2, n2)], Ls 3, allCores;
3432+ "neon_vld3_vld4_lane", [Source n1; Dest_n_after (4, n2)], Ls 5, allCores;
3433+ "neon_vst1_vst2_lane", [Source n1], Ls 2, allCores;
3434+ "neon_vst3_vst4_lane", [Source n1], Ls 3, allCores;
3435+ "neon_vld3_vld4_all_lanes", [Dest_n_after (1, n2)], Ls 3, allCores;
3436
3437 (* NEON register transfer instructions. *)
3438- "neon_mcr", [Dest n2], Permute 1;
3439- "neon_mcr_2_mcrr", [Dest n2], Permute 2;
3440+ "neon_mcr", [Dest n2], Permute 1, allCores;
3441+ "neon_mcr_2_mcrr", [Dest n2], Permute 2, allCores;
3442 (* MRC instructions are in the .tpl file. *)
3443 ]
3444
3445@@ -221,7 +245,7 @@
3446 required. (It is also possible that an entry in the table has no
3447 source requirements.) *)
3448 let calculate_sources =
3449- List.map (fun (name, avail, res) ->
3450+ List.map (fun (name, avail, res, cores) ->
3451 let earliest_stage =
3452 List.fold_left
3453 (fun cur -> fun info ->
3454@@ -331,7 +355,7 @@
3455 of one bypass from this producer to any particular consumer listed
3456 in LATENCIES.) Use a hash table to collate bypasses with the
3457 same latency and guard. *)
3458-let collate_bypasses (producer_name, _, _, _) largest latencies =
3459+let collate_bypasses (producer_name, _, _, _) largest latencies core =
3460 let ht = Hashtbl.create 42 in
3461 let keys = ref [] in
3462 List.iter (
3463@@ -350,7 +374,7 @@
3464 (if (try ignore (Hashtbl.find ht (guard, latency)); false
3465 with Not_found -> true) then
3466 keys := (guard, latency) :: !keys);
3467- Hashtbl.add ht (guard, latency) consumer
3468+ Hashtbl.add ht (guard, latency) ((coreStr core) ^ "_" ^ consumer)
3469 end
3470 ) latencies;
3471 (* The hash table now has bypasses collated so that ones with the
3472@@ -372,7 +396,7 @@
3473 the output in such a way that all bypasses with the same producer
3474 and latency are together, and so that bypasses with the worst-case
3475 latency are ignored. *)
3476-let worst_case_latencies_and_bypasses =
3477+let worst_case_latencies_and_bypasses core =
3478 let rec f (worst_acc, bypasses_acc) prev xs =
3479 match xs with
3480 [] -> (worst_acc, bypasses_acc)
3481@@ -400,7 +424,7 @@
3482 (* Having got the largest latency, collect all bypasses for
3483 this producer and filter out those with that larger
3484 latency. Record the others for later emission. *)
3485- let bypasses = collate_bypasses producer largest latencies in
3486+ let bypasses = collate_bypasses producer largest latencies core in
3487 (* Go on to process remaining producers, having noted
3488 the result for this one. *)
3489 f ((producer_name, producer_avail, largest,
3490@@ -444,14 +468,18 @@
3491 in
3492 f avail 0
3493
3494+
3495 (* Emit a define_insn_reservation for each producer. The latency
3496 written in will be its worst-case latency. *)
3497-let emit_insn_reservations =
3498- List.iter (
3499+let emit_insn_reservations core =
3500+ let corestring = coreStr core in
3501+ let tunestring = tuneStr core
3502+ in List.iter (
3503 fun (producer, avail, latency, reservation) ->
3504 write_comment producer avail;
3505- Printf.printf "(define_insn_reservation \"%s\" %d\n" producer latency;
3506- Printf.printf " (and (eq_attr \"tune\" \"cortexa8\")\n";
3507+ Printf.printf "(define_insn_reservation \"%s_%s\" %d\n"
3508+ corestring producer latency;
3509+ Printf.printf " (and (eq_attr \"tune\" \"%s\")\n" tunestring;
3510 Printf.printf " (eq_attr \"neon_type\" \"%s\"))\n" producer;
3511 let str =
3512 match reservation with
3513@@ -467,7 +495,7 @@
3514 | Fmul_then_fadd -> "fmul_then_fadd"
3515 | Fmul_then_fadd_2 -> "fmul_then_fadd_2"
3516 in
3517- Printf.printf " \"cortex_a8_neon_%s\")\n\n" str
3518+ Printf.printf " \"%s_neon_%s\")\n\n" corestring str
3519 )
3520
3521 (* Given a guard description, return the name of the C function to
3522@@ -480,10 +508,12 @@
3523 | Guard_none -> assert false
3524
3525 (* Emit a define_bypass for each bypass. *)
3526-let emit_bypasses =
3527+let emit_bypasses core =
3528 List.iter (
3529 fun (producer, consumers, latency, guard) ->
3530- Printf.printf "(define_bypass %d \"%s\"\n" latency producer;
3531+ Printf.printf "(define_bypass %d \"%s_%s\"\n"
3532+ latency (coreStr core) producer;
3533+
3534 if guard = Guard_none then
3535 Printf.printf " \"%s\")\n\n" consumers
3536 else
3537@@ -493,11 +523,21 @@
3538 end
3539 )
3540
3541+
3542+let calculate_per_core_availability_table core availability_table =
3543+ let table = calculate_sources availability_table in
3544+ let worst_cases, bypasses = worst_case_latencies_and_bypasses core table in
3545+ emit_insn_reservations core (List.rev worst_cases);
3546+ Printf.printf ";; Exceptions to the default latencies.\n\n";
3547+ emit_bypasses core bypasses
3548+
3549+let calculate_core_availability_table core availability_table =
3550+let filter_core = List.filter (fun (_, _, _, cores)
3551+ -> List.exists ((=) core) cores)
3552+in calculate_per_core_availability_table core (filter_core availability_table)
3553+
3554+
3555 (* Program entry point. *)
3556 let main =
3557- let table = calculate_sources availability_table in
3558- let worst_cases, bypasses = worst_case_latencies_and_bypasses table in
3559- emit_insn_reservations (List.rev worst_cases);
3560- Printf.printf ";; Exceptions to the default latencies.\n\n";
3561- emit_bypasses bypasses
3562-
3563+ List.map (fun core -> calculate_core_availability_table
3564+ core availability_table) allCores
3565
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99398.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99398.patch
new file mode 100644
index 000000000..c332d50fa
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99398.patch
@@ -0,0 +1,76 @@
12010-09-21 Yao Qi <yao@codesourcery.com>
2
3 Backport from FSF to fix ICE found in LP:635409:
4
5 2010-07-07 Bernd Schmidt <bernds@codesourcery.com>
6
7 gcc/
8 PR rtl-optimization/44787
9 * config/arm/arm.md (arith_shiftsi): Allow stack pointer in operand 2.
10 * config/arm/thumb2.md (thumb2_arith_shiftsi): Likewise.
11
12 gcc/testsuite/
13 PR rtl-optimization/44787
14 * gcc.c-torture/compile/pr44788.c: New test.
15 * gcc.target/arm/pr44788.c: New test.
16
17 2010-09-16 Andrew Stubbs <ams@codesourcery.com>
18
19 Backport from FSF:
20
21=== modified file 'gcc/config/arm/arm.md'
22--- old/gcc/config/arm/arm.md 2010-09-16 09:15:46 +0000
23+++ new/gcc/config/arm/arm.md 2010-09-22 05:54:42 +0000
24@@ -9268,7 +9268,7 @@
25 [(match_operator:SI 3 "shift_operator"
26 [(match_operand:SI 4 "s_register_operand" "r")
27 (match_operand:SI 5 "reg_or_int_operand" "rI")])
28- (match_operand:SI 2 "s_register_operand" "r")]))]
29+ (match_operand:SI 2 "s_register_operand" "rk")]))]
30 "TARGET_ARM"
31 "%i1%?\\t%0, %2, %4%S3"
32 [(set_attr "predicable" "yes")
33
34=== modified file 'gcc/config/arm/thumb2.md'
35--- old/gcc/config/arm/thumb2.md 2010-09-01 13:29:58 +0000
36+++ new/gcc/config/arm/thumb2.md 2010-09-22 05:54:42 +0000
37@@ -467,7 +467,7 @@
38 [(match_operator:SI 3 "shift_operator"
39 [(match_operand:SI 4 "s_register_operand" "r")
40 (match_operand:SI 5 "const_shift_count" "M")])
41- (match_operand:SI 2 "s_register_operand" "r")]))]
42+ (match_operand:SI 2 "s_register_operand" "rk")]))]
43 "TARGET_THUMB2"
44 "%i1%?\\t%0, %2, %4%S3"
45 [(set_attr "predicable" "yes")
46
47=== added file 'gcc/testsuite/gcc.c-torture/compile/pr44788.c'
48--- old/gcc/testsuite/gcc.c-torture/compile/pr44788.c 1970-01-01 00:00:00 +0000
49+++ new/gcc/testsuite/gcc.c-torture/compile/pr44788.c 2010-09-22 05:54:42 +0000
50@@ -0,0 +1,8 @@
51+void joint_decode(float* mlt_buffer1, int t) {
52+ int i;
53+ float decode_buffer[1060];
54+ foo(decode_buffer);
55+ for (i=0; i<10 ; i++) {
56+ mlt_buffer1[i] = i * decode_buffer[t];
57+ }
58+}
59
60=== added file 'gcc/testsuite/gcc.target/arm/pr44788.c'
61--- old/gcc/testsuite/gcc.target/arm/pr44788.c 1970-01-01 00:00:00 +0000
62+++ new/gcc/testsuite/gcc.target/arm/pr44788.c 2010-09-22 05:54:42 +0000
63@@ -0,0 +1,12 @@
64+/* { dg-do compile } */
65+/* { dg-require-effective-target arm_thumb2_ok } */
66+/* { dg-options "-Os -fno-strict-aliasing -fPIC -mthumb -march=armv7-a -mfpu=vfp3 -mfloat-abi=softfp" } */
67+
68+void joint_decode(float* mlt_buffer1, int t) {
69+ int i;
70+ float decode_buffer[1060];
71+ foo(decode_buffer);
72+ for (i=0; i<10 ; i++) {
73+ mlt_buffer1[i] = i * decode_buffer[t];
74+ }
75+}
76
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99402.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99402.patch
new file mode 100644
index 000000000..6627a11d4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99402.patch
@@ -0,0 +1,1268 @@
12010-09-17 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-07-15 Bernd Schmidt <bernds@codesourcery.com>
6
7 gcc/
8 * postreload.c (last_label_ruid, first_index_reg, last_index_reg):
9 New static variables.
10 (reload_combine_recognize_pattern): New static function, broken out
11 of reload_combine.
12 (reload_combine): Use it. Only initialize first_index_reg and
13 last_index_reg once.
14
15 2010-07-17 Bernd Schmidt <bernds@codesourcery.com>
16
17 PR target/42235
18 gcc/
19 * postreload.c (reload_cse_move2add): Return bool, true if anything.
20 changed. All callers changed.
21 (move2add_use_add2_insn): Likewise.
22 (move2add_use_add3_insn): Likewise.
23 (reload_cse_regs): If reload_cse_move2add changed anything, rerun
24 reload_combine.
25 (RELOAD_COMBINE_MAX_USES): Bump to 16.
26 (last_jump_ruid): New static variable.
27 (struct reg_use): New members CONTAINING_MEM and RUID.
28 (reg_state): New members ALL_OFFSETS_MATCH and REAL_STORE_RUID.
29 (reload_combine_split_one_ruid, reload_combine_split_ruids,
30 reload_combine_purge_insn_uses, reload_combine_closest_single_use
31 reload_combine_purge_reg_uses_after_ruid,
32 reload_combine_recognize_const_pattern): New static functions.
33 (reload_combine_recognize_pattern): Verify that ALL_OFFSETS_MATCH
34 is true for our reg and that we have available index regs.
35 (reload_combine_note_use): New args RUID and CONTAINING_MEM. All
36 callers changed. Use them to initialize fields in struct reg_use.
37 (reload_combine): Initialize last_jump_ruid. Be careful when to
38 take PREV_INSN of the scanned insn. Update REAL_STORE_RUID fields.
39 Call reload_combine_recognize_const_pattern.
40 (reload_combine_note_store): Update REAL_STORE_RUID field.
41
42 gcc/testsuite/
43 * gcc.target/arm/pr42235.c: New test.
44
45 2010-07-19 Bernd Schmidt <bernds@codesourcery.com>
46
47 gcc/
48 * postreload.c (reload_combine_closest_single_use): Ignore the
49 number of uses for DEBUG_INSNs.
50 (fixup_debug_insns): New static function.
51 (reload_combine_recognize_const_pattern): Use it. Don't let the
52 main loop be affected by DEBUG_INSNs.
53 Really disallow moving adds past a jump insn.
54 (reload_combine_recognize_pattern): Don't update use_ruid here.
55 (reload_combine_note_use): Do it here.
56 (reload_combine): Use control_flow_insn_p rather than JUMP_P.
57
58 2010-07-20 Bernd Schmidt <bernds@codesourcery.com>
59
60 gcc/
61 * postreload.c (fixup_debug_insns): Remove arg REGNO. New args
62 FROM and TO. All callers changed. Don't look for tracked uses,
63 just scan the RTL for DEBUG_INSNs and substitute.
64 (reload_combine_recognize_pattern): Call fixup_debug_insns.
65 (reload_combine): Ignore DEBUG_INSNs.
66
67 2010-07-22 Bernd Schmidt <bernds@codesourcery.com>
68
69 PR bootstrap/44970
70 PR middle-end/45009
71 gcc/
72 * postreload.c: Include "target.h".
73 (reload_combine_closest_single_use): Don't take DEBUG_INSNs
74 into account.
75 (fixup_debug_insns): Don't copy the rtx.
76 (reload_combine_recognize_const_pattern): DEBUG_INSNs can't have uses.
77 Don't copy when replacing. Call fixup_debug_insns in the case where
78 we merged one add with another.
79 (reload_combine_recognize_pattern): Fail if there aren't any uses.
80 Try harder to determine whether we're picking a valid index register.
81 Don't set store_ruid for an insn we're going to scan in the
82 next iteration.
83 (reload_combine): Remove unused code.
84 (reload_combine_note_use): When updating use information for
85 an old insn, ignore a use that occurs after store_ruid.
86 * Makefile.in (postreload.o): Update dependencies.
87
88 2010-07-27 Bernd Schmidt <bernds@codesourcery.com>
89
90 gcc/
91 * postreload.c (reload_combine_recognize_const_pattern): Move test
92 for limiting the insn movement to the right scope.
93
94 2010-07-27 Bernd Schmidt <bernds@codesourcery.com>
95
96 gcc/
97 * postreload.c (try_replace_in_use): New static function.
98 (reload_combine_recognize_const_pattern): Use it here. Allow
99 substituting into a final add insn, and substituting into a memory
100 reference in an insn that sets the reg.
101
102=== modified file 'gcc/Makefile.in'
103Index: gcc-4.5/gcc/Makefile.in
104===================================================================
105--- gcc-4.5.orig/gcc/Makefile.in
106+++ gcc-4.5/gcc/Makefile.in
107@@ -3159,7 +3159,7 @@ postreload.o : postreload.c $(CONFIG_H)
108 $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
109 hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
110 $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(MACHMODE_H) \
111- $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
112+ $(OBSTACK_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
113 postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
114 $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
115 $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
116Index: gcc-4.5/gcc/postreload.c
117===================================================================
118--- gcc-4.5.orig/gcc/postreload.c
119+++ gcc-4.5/gcc/postreload.c
120@@ -44,6 +44,7 @@ along with GCC; see the file COPYING3.
121 #include "toplev.h"
122 #include "except.h"
123 #include "tree.h"
124+#include "target.h"
125 #include "timevar.h"
126 #include "tree-pass.h"
127 #include "df.h"
128@@ -56,10 +57,10 @@ static int reload_cse_simplify_set (rtx,
129 static int reload_cse_simplify_operands (rtx, rtx);
130
131 static void reload_combine (void);
132-static void reload_combine_note_use (rtx *, rtx);
133+static void reload_combine_note_use (rtx *, rtx, int, rtx);
134 static void reload_combine_note_store (rtx, const_rtx, void *);
135
136-static void reload_cse_move2add (rtx);
137+static bool reload_cse_move2add (rtx);
138 static void move2add_note_store (rtx, const_rtx, void *);
139
140 /* Call cse / combine like post-reload optimization phases.
141@@ -67,11 +68,16 @@ static void move2add_note_store (rtx, co
142 void
143 reload_cse_regs (rtx first ATTRIBUTE_UNUSED)
144 {
145+ bool moves_converted;
146 reload_cse_regs_1 (first);
147 reload_combine ();
148- reload_cse_move2add (first);
149+ moves_converted = reload_cse_move2add (first);
150 if (flag_expensive_optimizations)
151- reload_cse_regs_1 (first);
152+ {
153+ if (moves_converted)
154+ reload_combine ();
155+ reload_cse_regs_1 (first);
156+ }
157 }
158
159 /* See whether a single set SET is a noop. */
160@@ -660,30 +666,43 @@ reload_cse_simplify_operands (rtx insn,
161
162 /* The maximum number of uses of a register we can keep track of to
163 replace them with reg+reg addressing. */
164-#define RELOAD_COMBINE_MAX_USES 6
165+#define RELOAD_COMBINE_MAX_USES 16
166
167-/* INSN is the insn where a register has been used, and USEP points to the
168- location of the register within the rtl. */
169-struct reg_use { rtx insn, *usep; };
170+/* Describes a recorded use of a register. */
171+struct reg_use
172+{
173+ /* The insn where a register has been used. */
174+ rtx insn;
175+ /* Points to the memory reference enclosing the use, if any, NULL_RTX
176+ otherwise. */
177+ rtx containing_mem;
178+ /* Location of the register withing INSN. */
179+ rtx *usep;
180+ /* The reverse uid of the insn. */
181+ int ruid;
182+};
183
184 /* If the register is used in some unknown fashion, USE_INDEX is negative.
185 If it is dead, USE_INDEX is RELOAD_COMBINE_MAX_USES, and STORE_RUID
186- indicates where it becomes live again.
187+ indicates where it is first set or clobbered.
188 Otherwise, USE_INDEX is the index of the last encountered use of the
189- register (which is first among these we have seen since we scan backwards),
190- OFFSET contains the constant offset that is added to the register in
191- all encountered uses, and USE_RUID indicates the first encountered, i.e.
192- last, of these uses.
193+ register (which is first among these we have seen since we scan backwards).
194+ USE_RUID indicates the first encountered, i.e. last, of these uses.
195+ If ALL_OFFSETS_MATCH is true, all encountered uses were inside a PLUS
196+ with a constant offset; OFFSET contains this constant in that case.
197 STORE_RUID is always meaningful if we only want to use a value in a
198 register in a different place: it denotes the next insn in the insn
199- stream (i.e. the last encountered) that sets or clobbers the register. */
200+ stream (i.e. the last encountered) that sets or clobbers the register.
201+ REAL_STORE_RUID is similar, but clobbers are ignored when updating it. */
202 static struct
203 {
204 struct reg_use reg_use[RELOAD_COMBINE_MAX_USES];
205- int use_index;
206 rtx offset;
207+ int use_index;
208 int store_ruid;
209+ int real_store_ruid;
210 int use_ruid;
211+ bool all_offsets_match;
212 } reg_state[FIRST_PSEUDO_REGISTER];
213
214 /* Reverse linear uid. This is increased in reload_combine while scanning
215@@ -691,42 +710,548 @@ static struct
216 and the store_ruid / use_ruid fields in reg_state. */
217 static int reload_combine_ruid;
218
219+/* The RUID of the last label we encountered in reload_combine. */
220+static int last_label_ruid;
221+
222+/* The RUID of the last jump we encountered in reload_combine. */
223+static int last_jump_ruid;
224+
225+/* The register numbers of the first and last index register. A value of
226+ -1 in LAST_INDEX_REG indicates that we've previously computed these
227+ values and found no suitable index registers. */
228+static int first_index_reg = -1;
229+static int last_index_reg;
230+
231 #define LABEL_LIVE(LABEL) \
232 (label_live[CODE_LABEL_NUMBER (LABEL) - min_labelno])
233
234+/* Subroutine of reload_combine_split_ruids, called to fix up a single
235+ ruid pointed to by *PRUID if it is higher than SPLIT_RUID. */
236+
237+static inline void
238+reload_combine_split_one_ruid (int *pruid, int split_ruid)
239+{
240+ if (*pruid > split_ruid)
241+ (*pruid)++;
242+}
243+
244+/* Called when we insert a new insn in a position we've already passed in
245+ the scan. Examine all our state, increasing all ruids that are higher
246+ than SPLIT_RUID by one in order to make room for a new insn. */
247+
248+static void
249+reload_combine_split_ruids (int split_ruid)
250+{
251+ unsigned i;
252+
253+ reload_combine_split_one_ruid (&reload_combine_ruid, split_ruid);
254+ reload_combine_split_one_ruid (&last_label_ruid, split_ruid);
255+ reload_combine_split_one_ruid (&last_jump_ruid, split_ruid);
256+
257+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
258+ {
259+ int j, idx = reg_state[i].use_index;
260+ reload_combine_split_one_ruid (&reg_state[i].use_ruid, split_ruid);
261+ reload_combine_split_one_ruid (&reg_state[i].store_ruid, split_ruid);
262+ reload_combine_split_one_ruid (&reg_state[i].real_store_ruid,
263+ split_ruid);
264+ if (idx < 0)
265+ continue;
266+ for (j = idx; j < RELOAD_COMBINE_MAX_USES; j++)
267+ {
268+ reload_combine_split_one_ruid (&reg_state[i].reg_use[j].ruid,
269+ split_ruid);
270+ }
271+ }
272+}
273+
274+/* Called when we are about to rescan a previously encountered insn with
275+ reload_combine_note_use after modifying some part of it. This clears all
276+ information about uses in that particular insn. */
277+
278+static void
279+reload_combine_purge_insn_uses (rtx insn)
280+{
281+ unsigned i;
282+
283+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
284+ {
285+ int j, k, idx = reg_state[i].use_index;
286+ if (idx < 0)
287+ continue;
288+ j = k = RELOAD_COMBINE_MAX_USES;
289+ while (j-- > idx)
290+ {
291+ if (reg_state[i].reg_use[j].insn != insn)
292+ {
293+ k--;
294+ if (k != j)
295+ reg_state[i].reg_use[k] = reg_state[i].reg_use[j];
296+ }
297+ }
298+ reg_state[i].use_index = k;
299+ }
300+}
301+
302+/* Called when we need to forget about all uses of REGNO after an insn
303+ which is identified by RUID. */
304+
305+static void
306+reload_combine_purge_reg_uses_after_ruid (unsigned regno, int ruid)
307+{
308+ int j, k, idx = reg_state[regno].use_index;
309+ if (idx < 0)
310+ return;
311+ j = k = RELOAD_COMBINE_MAX_USES;
312+ while (j-- > idx)
313+ {
314+ if (reg_state[regno].reg_use[j].ruid >= ruid)
315+ {
316+ k--;
317+ if (k != j)
318+ reg_state[regno].reg_use[k] = reg_state[regno].reg_use[j];
319+ }
320+ }
321+ reg_state[regno].use_index = k;
322+}
323+
324+/* Find the use of REGNO with the ruid that is highest among those
325+ lower than RUID_LIMIT, and return it if it is the only use of this
326+ reg in the insn. Return NULL otherwise. */
327+
328+static struct reg_use *
329+reload_combine_closest_single_use (unsigned regno, int ruid_limit)
330+{
331+ int i, best_ruid = 0;
332+ int use_idx = reg_state[regno].use_index;
333+ struct reg_use *retval;
334+
335+ if (use_idx < 0)
336+ return NULL;
337+ retval = NULL;
338+ for (i = use_idx; i < RELOAD_COMBINE_MAX_USES; i++)
339+ {
340+ struct reg_use *use = reg_state[regno].reg_use + i;
341+ int this_ruid = use->ruid;
342+ if (this_ruid >= ruid_limit)
343+ continue;
344+ if (this_ruid > best_ruid)
345+ {
346+ best_ruid = this_ruid;
347+ retval = use;
348+ }
349+ else if (this_ruid == best_ruid)
350+ retval = NULL;
351+ }
352+ if (last_label_ruid >= best_ruid)
353+ return NULL;
354+ return retval;
355+}
356+
357+/* After we've moved an add insn, fix up any debug insns that occur
358+ between the old location of the add and the new location. REG is
359+ the destination register of the add insn; REPLACEMENT is the
360+ SET_SRC of the add. FROM and TO specify the range in which we
361+ should make this change on debug insns. */
362+
363+static void
364+fixup_debug_insns (rtx reg, rtx replacement, rtx from, rtx to)
365+{
366+ rtx insn;
367+ for (insn = from; insn != to; insn = NEXT_INSN (insn))
368+ {
369+ rtx t;
370+
371+ if (!DEBUG_INSN_P (insn))
372+ continue;
373+
374+ t = INSN_VAR_LOCATION_LOC (insn);
375+ t = simplify_replace_rtx (t, reg, replacement);
376+ validate_change (insn, &INSN_VAR_LOCATION_LOC (insn), t, 0);
377+ }
378+}
379+
380+/* Subroutine of reload_combine_recognize_const_pattern. Try to replace REG
381+ with SRC in the insn described by USE, taking costs into account. Return
382+ true if we made the replacement. */
383+
384+static bool
385+try_replace_in_use (struct reg_use *use, rtx reg, rtx src)
386+{
387+ rtx use_insn = use->insn;
388+ rtx mem = use->containing_mem;
389+ bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn));
390+
391+ if (mem != NULL_RTX)
392+ {
393+ addr_space_t as = MEM_ADDR_SPACE (mem);
394+ rtx oldaddr = XEXP (mem, 0);
395+ rtx newaddr = NULL_RTX;
396+ int old_cost = address_cost (oldaddr, GET_MODE (mem), as, speed);
397+ int new_cost;
398+
399+ newaddr = simplify_replace_rtx (oldaddr, reg, src);
400+ if (memory_address_addr_space_p (GET_MODE (mem), newaddr, as))
401+ {
402+ XEXP (mem, 0) = newaddr;
403+ new_cost = address_cost (newaddr, GET_MODE (mem), as, speed);
404+ XEXP (mem, 0) = oldaddr;
405+ if (new_cost <= old_cost
406+ && validate_change (use_insn,
407+ &XEXP (mem, 0), newaddr, 0))
408+ return true;
409+ }
410+ }
411+ else
412+ {
413+ rtx new_set = single_set (use_insn);
414+ if (new_set
415+ && REG_P (SET_DEST (new_set))
416+ && GET_CODE (SET_SRC (new_set)) == PLUS
417+ && REG_P (XEXP (SET_SRC (new_set), 0))
418+ && CONSTANT_P (XEXP (SET_SRC (new_set), 1)))
419+ {
420+ rtx new_src;
421+ int old_cost = rtx_cost (SET_SRC (new_set), SET, speed);
422+
423+ gcc_assert (rtx_equal_p (XEXP (SET_SRC (new_set), 0), reg));
424+ new_src = simplify_replace_rtx (SET_SRC (new_set), reg, src);
425+
426+ if (rtx_cost (new_src, SET, speed) <= old_cost
427+ && validate_change (use_insn, &SET_SRC (new_set),
428+ new_src, 0))
429+ return true;
430+ }
431+ }
432+ return false;
433+}
434+
435+/* Called by reload_combine when scanning INSN. This function tries to detect
436+ patterns where a constant is added to a register, and the result is used
437+ in an address.
438+ Return true if no further processing is needed on INSN; false if it wasn't
439+ recognized and should be handled normally. */
440+
441+static bool
442+reload_combine_recognize_const_pattern (rtx insn)
443+{
444+ int from_ruid = reload_combine_ruid;
445+ rtx set, pat, reg, src, addreg;
446+ unsigned int regno;
447+ struct reg_use *use;
448+ bool must_move_add;
449+ rtx add_moved_after_insn = NULL_RTX;
450+ int add_moved_after_ruid = 0;
451+ int clobbered_regno = -1;
452+
453+ set = single_set (insn);
454+ if (set == NULL_RTX)
455+ return false;
456+
457+ reg = SET_DEST (set);
458+ src = SET_SRC (set);
459+ if (!REG_P (reg)
460+ || hard_regno_nregs[REGNO (reg)][GET_MODE (reg)] != 1
461+ || GET_MODE (reg) != Pmode
462+ || reg == stack_pointer_rtx)
463+ return false;
464+
465+ regno = REGNO (reg);
466+
467+ /* We look for a REG1 = REG2 + CONSTANT insn, followed by either
468+ uses of REG1 inside an address, or inside another add insn. If
469+ possible and profitable, merge the addition into subsequent
470+ uses. */
471+ if (GET_CODE (src) != PLUS
472+ || !REG_P (XEXP (src, 0))
473+ || !CONSTANT_P (XEXP (src, 1)))
474+ return false;
475+
476+ addreg = XEXP (src, 0);
477+ must_move_add = rtx_equal_p (reg, addreg);
478+
479+ pat = PATTERN (insn);
480+ if (must_move_add && set != pat)
481+ {
482+ /* We have to be careful when moving the add; apart from the
483+ single_set there may also be clobbers. Recognize one special
484+ case, that of one clobber alongside the set (likely a clobber
485+ of the CC register). */
486+ gcc_assert (GET_CODE (PATTERN (insn)) == PARALLEL);
487+ if (XVECLEN (pat, 0) != 2 || XVECEXP (pat, 0, 0) != set
488+ || GET_CODE (XVECEXP (pat, 0, 1)) != CLOBBER
489+ || !REG_P (XEXP (XVECEXP (pat, 0, 1), 0)))
490+ return false;
491+ clobbered_regno = REGNO (XEXP (XVECEXP (pat, 0, 1), 0));
492+ }
493+
494+ do
495+ {
496+ use = reload_combine_closest_single_use (regno, from_ruid);
497+
498+ if (use)
499+ /* Start the search for the next use from here. */
500+ from_ruid = use->ruid;
501+
502+ if (use && GET_MODE (*use->usep) == Pmode)
503+ {
504+ bool delete_add = false;
505+ rtx use_insn = use->insn;
506+ int use_ruid = use->ruid;
507+
508+ /* Avoid moving the add insn past a jump. */
509+ if (must_move_add && use_ruid <= last_jump_ruid)
510+ break;
511+
512+ /* If the add clobbers another hard reg in parallel, don't move
513+ it past a real set of this hard reg. */
514+ if (must_move_add && clobbered_regno >= 0
515+ && reg_state[clobbered_regno].real_store_ruid >= use_ruid)
516+ break;
517+
518+ gcc_assert (reg_state[regno].store_ruid <= use_ruid);
519+ /* Avoid moving a use of ADDREG past a point where it is stored. */
520+ if (reg_state[REGNO (addreg)].store_ruid > use_ruid)
521+ break;
522+
523+ /* We also must not move the addition past an insn that sets
524+ the same register, unless we can combine two add insns. */
525+ if (must_move_add && reg_state[regno].store_ruid == use_ruid)
526+ {
527+ if (use->containing_mem == NULL_RTX)
528+ delete_add = true;
529+ else
530+ break;
531+ }
532+
533+ if (try_replace_in_use (use, reg, src))
534+ {
535+ reload_combine_purge_insn_uses (use_insn);
536+ reload_combine_note_use (&PATTERN (use_insn), use_insn,
537+ use_ruid, NULL_RTX);
538+
539+ if (delete_add)
540+ {
541+ fixup_debug_insns (reg, src, insn, use_insn);
542+ delete_insn (insn);
543+ return true;
544+ }
545+ if (must_move_add)
546+ {
547+ add_moved_after_insn = use_insn;
548+ add_moved_after_ruid = use_ruid;
549+ }
550+ continue;
551+ }
552+ }
553+ /* If we get here, we couldn't handle this use. */
554+ if (must_move_add)
555+ break;
556+ }
557+ while (use);
558+
559+ if (!must_move_add || add_moved_after_insn == NULL_RTX)
560+ /* Process the add normally. */
561+ return false;
562+
563+ fixup_debug_insns (reg, src, insn, add_moved_after_insn);
564+
565+ reorder_insns (insn, insn, add_moved_after_insn);
566+ reload_combine_purge_reg_uses_after_ruid (regno, add_moved_after_ruid);
567+ reload_combine_split_ruids (add_moved_after_ruid - 1);
568+ reload_combine_note_use (&PATTERN (insn), insn,
569+ add_moved_after_ruid, NULL_RTX);
570+ reg_state[regno].store_ruid = add_moved_after_ruid;
571+
572+ return true;
573+}
574+
575+/* Called by reload_combine when scanning INSN. Try to detect a pattern we
576+ can handle and improve. Return true if no further processing is needed on
577+ INSN; false if it wasn't recognized and should be handled normally. */
578+
579+static bool
580+reload_combine_recognize_pattern (rtx insn)
581+{
582+ rtx set, reg, src;
583+ unsigned int regno;
584+
585+ set = single_set (insn);
586+ if (set == NULL_RTX)
587+ return false;
588+
589+ reg = SET_DEST (set);
590+ src = SET_SRC (set);
591+ if (!REG_P (reg)
592+ || hard_regno_nregs[REGNO (reg)][GET_MODE (reg)] != 1)
593+ return false;
594+
595+ regno = REGNO (reg);
596+
597+ /* Look for (set (REGX) (CONST_INT))
598+ (set (REGX) (PLUS (REGX) (REGY)))
599+ ...
600+ ... (MEM (REGX)) ...
601+ and convert it to
602+ (set (REGZ) (CONST_INT))
603+ ...
604+ ... (MEM (PLUS (REGZ) (REGY)))... .
605+
606+ First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
607+ and that we know all uses of REGX before it dies.
608+ Also, explicitly check that REGX != REGY; our life information
609+ does not yet show whether REGY changes in this insn. */
610+
611+ if (GET_CODE (src) == PLUS
612+ && reg_state[regno].all_offsets_match
613+ && last_index_reg != -1
614+ && REG_P (XEXP (src, 1))
615+ && rtx_equal_p (XEXP (src, 0), reg)
616+ && !rtx_equal_p (XEXP (src, 1), reg)
617+ && reg_state[regno].use_index >= 0
618+ && reg_state[regno].use_index < RELOAD_COMBINE_MAX_USES
619+ && last_label_ruid < reg_state[regno].use_ruid)
620+ {
621+ rtx base = XEXP (src, 1);
622+ rtx prev = prev_nonnote_insn (insn);
623+ rtx prev_set = prev ? single_set (prev) : NULL_RTX;
624+ rtx index_reg = NULL_RTX;
625+ rtx reg_sum = NULL_RTX;
626+ int i;
627+
628+ /* Now we need to set INDEX_REG to an index register (denoted as
629+ REGZ in the illustration above) and REG_SUM to the expression
630+ register+register that we want to use to substitute uses of REG
631+ (typically in MEMs) with. First check REG and BASE for being
632+ index registers; we can use them even if they are not dead. */
633+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
634+ || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
635+ REGNO (base)))
636+ {
637+ index_reg = reg;
638+ reg_sum = src;
639+ }
640+ else
641+ {
642+ /* Otherwise, look for a free index register. Since we have
643+ checked above that neither REG nor BASE are index registers,
644+ if we find anything at all, it will be different from these
645+ two registers. */
646+ for (i = first_index_reg; i <= last_index_reg; i++)
647+ {
648+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], i)
649+ && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
650+ && reg_state[i].store_ruid <= reg_state[regno].use_ruid
651+ && (call_used_regs[i] || df_regs_ever_live_p (i))
652+ && (!frame_pointer_needed || i != HARD_FRAME_POINTER_REGNUM)
653+ && !fixed_regs[i] && !global_regs[i]
654+ && hard_regno_nregs[i][GET_MODE (reg)] == 1
655+ && targetm.hard_regno_scratch_ok (i))
656+ {
657+ index_reg = gen_rtx_REG (GET_MODE (reg), i);
658+ reg_sum = gen_rtx_PLUS (GET_MODE (reg), index_reg, base);
659+ break;
660+ }
661+ }
662+ }
663+
664+ /* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
665+ (REGY), i.e. BASE, is not clobbered before the last use we'll
666+ create. */
667+ if (reg_sum
668+ && prev_set
669+ && CONST_INT_P (SET_SRC (prev_set))
670+ && rtx_equal_p (SET_DEST (prev_set), reg)
671+ && (reg_state[REGNO (base)].store_ruid
672+ <= reg_state[regno].use_ruid))
673+ {
674+ /* Change destination register and, if necessary, the constant
675+ value in PREV, the constant loading instruction. */
676+ validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
677+ if (reg_state[regno].offset != const0_rtx)
678+ validate_change (prev,
679+ &SET_SRC (prev_set),
680+ GEN_INT (INTVAL (SET_SRC (prev_set))
681+ + INTVAL (reg_state[regno].offset)),
682+ 1);
683+
684+ /* Now for every use of REG that we have recorded, replace REG
685+ with REG_SUM. */
686+ for (i = reg_state[regno].use_index;
687+ i < RELOAD_COMBINE_MAX_USES; i++)
688+ validate_unshare_change (reg_state[regno].reg_use[i].insn,
689+ reg_state[regno].reg_use[i].usep,
690+ /* Each change must have its own
691+ replacement. */
692+ reg_sum, 1);
693+
694+ if (apply_change_group ())
695+ {
696+ struct reg_use *lowest_ruid = NULL;
697+
698+ /* For every new use of REG_SUM, we have to record the use
699+ of BASE therein, i.e. operand 1. */
700+ for (i = reg_state[regno].use_index;
701+ i < RELOAD_COMBINE_MAX_USES; i++)
702+ {
703+ struct reg_use *use = reg_state[regno].reg_use + i;
704+ reload_combine_note_use (&XEXP (*use->usep, 1), use->insn,
705+ use->ruid, use->containing_mem);
706+ if (lowest_ruid == NULL || use->ruid < lowest_ruid->ruid)
707+ lowest_ruid = use;
708+ }
709+
710+ fixup_debug_insns (reg, reg_sum, insn, lowest_ruid->insn);
711+
712+ /* Delete the reg-reg addition. */
713+ delete_insn (insn);
714+
715+ if (reg_state[regno].offset != const0_rtx)
716+ /* Previous REG_EQUIV / REG_EQUAL notes for PREV
717+ are now invalid. */
718+ remove_reg_equal_equiv_notes (prev);
719+
720+ reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
721+ return true;
722+ }
723+ }
724+ }
725+ return false;
726+}
727+
728 static void
729 reload_combine (void)
730 {
731- rtx insn, set;
732- int first_index_reg = -1;
733- int last_index_reg = 0;
734+ rtx insn, prev;
735 int i;
736 basic_block bb;
737 unsigned int r;
738- int last_label_ruid;
739 int min_labelno, n_labels;
740 HARD_REG_SET ever_live_at_start, *label_live;
741
742- /* If reg+reg can be used in offsetable memory addresses, the main chunk of
743- reload has already used it where appropriate, so there is no use in
744- trying to generate it now. */
745- if (double_reg_address_ok && INDEX_REG_CLASS != NO_REGS)
746- return;
747-
748 /* To avoid wasting too much time later searching for an index register,
749 determine the minimum and maximum index register numbers. */
750- for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
751- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
752- {
753- if (first_index_reg == -1)
754- first_index_reg = r;
755+ if (INDEX_REG_CLASS == NO_REGS)
756+ last_index_reg = -1;
757+ else if (first_index_reg == -1 && last_index_reg == 0)
758+ {
759+ for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
760+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
761+ {
762+ if (first_index_reg == -1)
763+ first_index_reg = r;
764
765- last_index_reg = r;
766- }
767+ last_index_reg = r;
768+ }
769
770- /* If no index register is available, we can quit now. */
771- if (first_index_reg == -1)
772- return;
773+ /* If no index register is available, we can quit now. Set LAST_INDEX_REG
774+ to -1 so we'll know to quit early the next time we get here. */
775+ if (first_index_reg == -1)
776+ {
777+ last_index_reg = -1;
778+ return;
779+ }
780+ }
781
782 /* Set up LABEL_LIVE and EVER_LIVE_AT_START. The register lifetime
783 information is a bit fuzzy immediately after reload, but it's
784@@ -753,20 +1278,23 @@ reload_combine (void)
785 }
786
787 /* Initialize last_label_ruid, reload_combine_ruid and reg_state. */
788- last_label_ruid = reload_combine_ruid = 0;
789+ last_label_ruid = last_jump_ruid = reload_combine_ruid = 0;
790 for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
791 {
792- reg_state[r].store_ruid = reload_combine_ruid;
793+ reg_state[r].store_ruid = 0;
794+ reg_state[r].real_store_ruid = 0;
795 if (fixed_regs[r])
796 reg_state[r].use_index = -1;
797 else
798 reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
799 }
800
801- for (insn = get_last_insn (); insn; insn = PREV_INSN (insn))
802+ for (insn = get_last_insn (); insn; insn = prev)
803 {
804 rtx note;
805
806+ prev = PREV_INSN (insn);
807+
808 /* We cannot do our optimization across labels. Invalidating all the use
809 information we have would be costly, so we just note where the label
810 is and then later disable any optimization that would cross it. */
811@@ -777,141 +1305,17 @@ reload_combine (void)
812 if (! fixed_regs[r])
813 reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
814
815- if (! INSN_P (insn))
816+ if (! NONDEBUG_INSN_P (insn))
817 continue;
818
819 reload_combine_ruid++;
820
821- /* Look for (set (REGX) (CONST_INT))
822- (set (REGX) (PLUS (REGX) (REGY)))
823- ...
824- ... (MEM (REGX)) ...
825- and convert it to
826- (set (REGZ) (CONST_INT))
827- ...
828- ... (MEM (PLUS (REGZ) (REGY)))... .
829-
830- First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
831- and that we know all uses of REGX before it dies.
832- Also, explicitly check that REGX != REGY; our life information
833- does not yet show whether REGY changes in this insn. */
834- set = single_set (insn);
835- if (set != NULL_RTX
836- && REG_P (SET_DEST (set))
837- && (hard_regno_nregs[REGNO (SET_DEST (set))]
838- [GET_MODE (SET_DEST (set))]
839- == 1)
840- && GET_CODE (SET_SRC (set)) == PLUS
841- && REG_P (XEXP (SET_SRC (set), 1))
842- && rtx_equal_p (XEXP (SET_SRC (set), 0), SET_DEST (set))
843- && !rtx_equal_p (XEXP (SET_SRC (set), 1), SET_DEST (set))
844- && last_label_ruid < reg_state[REGNO (SET_DEST (set))].use_ruid)
845- {
846- rtx reg = SET_DEST (set);
847- rtx plus = SET_SRC (set);
848- rtx base = XEXP (plus, 1);
849- rtx prev = prev_nonnote_nondebug_insn (insn);
850- rtx prev_set = prev ? single_set (prev) : NULL_RTX;
851- unsigned int regno = REGNO (reg);
852- rtx index_reg = NULL_RTX;
853- rtx reg_sum = NULL_RTX;
854-
855- /* Now we need to set INDEX_REG to an index register (denoted as
856- REGZ in the illustration above) and REG_SUM to the expression
857- register+register that we want to use to substitute uses of REG
858- (typically in MEMs) with. First check REG and BASE for being
859- index registers; we can use them even if they are not dead. */
860- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
861- || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
862- REGNO (base)))
863- {
864- index_reg = reg;
865- reg_sum = plus;
866- }
867- else
868- {
869- /* Otherwise, look for a free index register. Since we have
870- checked above that neither REG nor BASE are index registers,
871- if we find anything at all, it will be different from these
872- two registers. */
873- for (i = first_index_reg; i <= last_index_reg; i++)
874- {
875- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
876- i)
877- && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
878- && reg_state[i].store_ruid <= reg_state[regno].use_ruid
879- && hard_regno_nregs[i][GET_MODE (reg)] == 1)
880- {
881- index_reg = gen_rtx_REG (GET_MODE (reg), i);
882- reg_sum = gen_rtx_PLUS (GET_MODE (reg), index_reg, base);
883- break;
884- }
885- }
886- }
887-
888- /* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
889- (REGY), i.e. BASE, is not clobbered before the last use we'll
890- create. */
891- if (reg_sum
892- && prev_set
893- && CONST_INT_P (SET_SRC (prev_set))
894- && rtx_equal_p (SET_DEST (prev_set), reg)
895- && reg_state[regno].use_index >= 0
896- && (reg_state[REGNO (base)].store_ruid
897- <= reg_state[regno].use_ruid))
898- {
899- int i;
900-
901- /* Change destination register and, if necessary, the constant
902- value in PREV, the constant loading instruction. */
903- validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
904- if (reg_state[regno].offset != const0_rtx)
905- validate_change (prev,
906- &SET_SRC (prev_set),
907- GEN_INT (INTVAL (SET_SRC (prev_set))
908- + INTVAL (reg_state[regno].offset)),
909- 1);
910+ if (control_flow_insn_p (insn))
911+ last_jump_ruid = reload_combine_ruid;
912
913- /* Now for every use of REG that we have recorded, replace REG
914- with REG_SUM. */
915- for (i = reg_state[regno].use_index;
916- i < RELOAD_COMBINE_MAX_USES; i++)
917- validate_unshare_change (reg_state[regno].reg_use[i].insn,
918- reg_state[regno].reg_use[i].usep,
919- /* Each change must have its own
920- replacement. */
921- reg_sum, 1);
922-
923- if (apply_change_group ())
924- {
925- /* For every new use of REG_SUM, we have to record the use
926- of BASE therein, i.e. operand 1. */
927- for (i = reg_state[regno].use_index;
928- i < RELOAD_COMBINE_MAX_USES; i++)
929- reload_combine_note_use
930- (&XEXP (*reg_state[regno].reg_use[i].usep, 1),
931- reg_state[regno].reg_use[i].insn);
932-
933- if (reg_state[REGNO (base)].use_ruid
934- > reg_state[regno].use_ruid)
935- reg_state[REGNO (base)].use_ruid
936- = reg_state[regno].use_ruid;
937-
938- /* Delete the reg-reg addition. */
939- delete_insn (insn);
940-
941- if (reg_state[regno].offset != const0_rtx)
942- /* Previous REG_EQUIV / REG_EQUAL notes for PREV
943- are now invalid. */
944- remove_reg_equal_equiv_notes (prev);
945-
946- reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
947- reg_state[REGNO (index_reg)].store_ruid
948- = reload_combine_ruid;
949- continue;
950- }
951- }
952- }
953+ if (reload_combine_recognize_const_pattern (insn)
954+ || reload_combine_recognize_pattern (insn))
955+ continue;
956
957 note_stores (PATTERN (insn), reload_combine_note_store, NULL);
958
959@@ -967,7 +1371,8 @@ reload_combine (void)
960 reg_state[i].use_index = -1;
961 }
962
963- reload_combine_note_use (&PATTERN (insn), insn);
964+ reload_combine_note_use (&PATTERN (insn), insn,
965+ reload_combine_ruid, NULL_RTX);
966 for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
967 {
968 if (REG_NOTE_KIND (note) == REG_INC
969@@ -976,6 +1381,7 @@ reload_combine (void)
970 int regno = REGNO (XEXP (note, 0));
971
972 reg_state[regno].store_ruid = reload_combine_ruid;
973+ reg_state[regno].real_store_ruid = reload_combine_ruid;
974 reg_state[regno].use_index = -1;
975 }
976 }
977@@ -985,8 +1391,8 @@ reload_combine (void)
978 }
979
980 /* Check if DST is a register or a subreg of a register; if it is,
981- update reg_state[regno].store_ruid and reg_state[regno].use_index
982- accordingly. Called via note_stores from reload_combine. */
983+ update store_ruid, real_store_ruid and use_index in the reg_state
984+ structure accordingly. Called via note_stores from reload_combine. */
985
986 static void
987 reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED)
988@@ -1010,14 +1416,14 @@ reload_combine_note_store (rtx dst, cons
989 /* note_stores might have stripped a STRICT_LOW_PART, so we have to be
990 careful with registers / register parts that are not full words.
991 Similarly for ZERO_EXTRACT. */
992- if (GET_CODE (set) != SET
993- || GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
994+ if (GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
995 || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
996 {
997 for (i = hard_regno_nregs[regno][mode] - 1 + regno; i >= regno; i--)
998 {
999 reg_state[i].use_index = -1;
1000 reg_state[i].store_ruid = reload_combine_ruid;
1001+ reg_state[i].real_store_ruid = reload_combine_ruid;
1002 }
1003 }
1004 else
1005@@ -1025,6 +1431,8 @@ reload_combine_note_store (rtx dst, cons
1006 for (i = hard_regno_nregs[regno][mode] - 1 + regno; i >= regno; i--)
1007 {
1008 reg_state[i].store_ruid = reload_combine_ruid;
1009+ if (GET_CODE (set) == SET)
1010+ reg_state[i].real_store_ruid = reload_combine_ruid;
1011 reg_state[i].use_index = RELOAD_COMBINE_MAX_USES;
1012 }
1013 }
1014@@ -1035,7 +1443,7 @@ reload_combine_note_store (rtx dst, cons
1015 *XP is the pattern of INSN, or a part of it.
1016 Called from reload_combine, and recursively by itself. */
1017 static void
1018-reload_combine_note_use (rtx *xp, rtx insn)
1019+reload_combine_note_use (rtx *xp, rtx insn, int ruid, rtx containing_mem)
1020 {
1021 rtx x = *xp;
1022 enum rtx_code code = x->code;
1023@@ -1048,7 +1456,7 @@ reload_combine_note_use (rtx *xp, rtx in
1024 case SET:
1025 if (REG_P (SET_DEST (x)))
1026 {
1027- reload_combine_note_use (&SET_SRC (x), insn);
1028+ reload_combine_note_use (&SET_SRC (x), insn, ruid, NULL_RTX);
1029 return;
1030 }
1031 break;
1032@@ -1104,6 +1512,11 @@ reload_combine_note_use (rtx *xp, rtx in
1033 return;
1034 }
1035
1036+ /* We may be called to update uses in previously seen insns.
1037+ Don't add uses beyond the last store we saw. */
1038+ if (ruid < reg_state[regno].store_ruid)
1039+ return;
1040+
1041 /* If this register is already used in some unknown fashion, we
1042 can't do anything.
1043 If we decrement the index from zero to -1, we can't store more
1044@@ -1112,29 +1525,34 @@ reload_combine_note_use (rtx *xp, rtx in
1045 if (use_index < 0)
1046 return;
1047
1048- if (use_index != RELOAD_COMBINE_MAX_USES - 1)
1049- {
1050- /* We have found another use for a register that is already
1051- used later. Check if the offsets match; if not, mark the
1052- register as used in an unknown fashion. */
1053- if (! rtx_equal_p (offset, reg_state[regno].offset))
1054- {
1055- reg_state[regno].use_index = -1;
1056- return;
1057- }
1058- }
1059- else
1060+ if (use_index == RELOAD_COMBINE_MAX_USES - 1)
1061 {
1062 /* This is the first use of this register we have seen since we
1063 marked it as dead. */
1064 reg_state[regno].offset = offset;
1065- reg_state[regno].use_ruid = reload_combine_ruid;
1066+ reg_state[regno].all_offsets_match = true;
1067+ reg_state[regno].use_ruid = ruid;
1068+ }
1069+ else
1070+ {
1071+ if (reg_state[regno].use_ruid > ruid)
1072+ reg_state[regno].use_ruid = ruid;
1073+
1074+ if (! rtx_equal_p (offset, reg_state[regno].offset))
1075+ reg_state[regno].all_offsets_match = false;
1076 }
1077+
1078 reg_state[regno].reg_use[use_index].insn = insn;
1079+ reg_state[regno].reg_use[use_index].ruid = ruid;
1080+ reg_state[regno].reg_use[use_index].containing_mem = containing_mem;
1081 reg_state[regno].reg_use[use_index].usep = xp;
1082 return;
1083 }
1084
1085+ case MEM:
1086+ containing_mem = x;
1087+ break;
1088+
1089 default:
1090 break;
1091 }
1092@@ -1144,11 +1562,12 @@ reload_combine_note_use (rtx *xp, rtx in
1093 for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
1094 {
1095 if (fmt[i] == 'e')
1096- reload_combine_note_use (&XEXP (x, i), insn);
1097+ reload_combine_note_use (&XEXP (x, i), insn, ruid, containing_mem);
1098 else if (fmt[i] == 'E')
1099 {
1100 for (j = XVECLEN (x, i) - 1; j >= 0; j--)
1101- reload_combine_note_use (&XVECEXP (x, i, j), insn);
1102+ reload_combine_note_use (&XVECEXP (x, i, j), insn, ruid,
1103+ containing_mem);
1104 }
1105 }
1106 }
1107@@ -1196,9 +1615,10 @@ static int move2add_last_label_luid;
1108 while REG is known to already have value (SYM + offset).
1109 This function tries to change INSN into an add instruction
1110 (set (REG) (plus (REG) (OFF - offset))) using the known value.
1111- It also updates the information about REG's known value. */
1112+ It also updates the information about REG's known value.
1113+ Return true if we made a change. */
1114
1115-static void
1116+static bool
1117 move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn)
1118 {
1119 rtx pat = PATTERN (insn);
1120@@ -1207,6 +1627,7 @@ move2add_use_add2_insn (rtx reg, rtx sym
1121 rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[regno],
1122 GET_MODE (reg));
1123 bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
1124+ bool changed = false;
1125
1126 /* (set (reg) (plus (reg) (const_int 0))) is not canonical;
1127 use (set (reg) (reg)) instead.
1128@@ -1221,13 +1642,13 @@ move2add_use_add2_insn (rtx reg, rtx sym
1129 (reg)), would be discarded. Maybe we should
1130 try a truncMN pattern? */
1131 if (INTVAL (off) == reg_offset [regno])
1132- validate_change (insn, &SET_SRC (pat), reg, 0);
1133+ changed = validate_change (insn, &SET_SRC (pat), reg, 0);
1134 }
1135 else if (rtx_cost (new_src, PLUS, speed) < rtx_cost (src, SET, speed)
1136 && have_add2_insn (reg, new_src))
1137 {
1138 rtx tem = gen_rtx_PLUS (GET_MODE (reg), reg, new_src);
1139- validate_change (insn, &SET_SRC (pat), tem, 0);
1140+ changed = validate_change (insn, &SET_SRC (pat), tem, 0);
1141 }
1142 else if (sym == NULL_RTX && GET_MODE (reg) != BImode)
1143 {
1144@@ -1252,8 +1673,9 @@ move2add_use_add2_insn (rtx reg, rtx sym
1145 gen_rtx_STRICT_LOW_PART (VOIDmode,
1146 narrow_reg),
1147 narrow_src);
1148- if (validate_change (insn, &PATTERN (insn),
1149- new_set, 0))
1150+ changed = validate_change (insn, &PATTERN (insn),
1151+ new_set, 0);
1152+ if (changed)
1153 break;
1154 }
1155 }
1156@@ -1263,6 +1685,7 @@ move2add_use_add2_insn (rtx reg, rtx sym
1157 reg_mode[regno] = GET_MODE (reg);
1158 reg_symbol_ref[regno] = sym;
1159 reg_offset[regno] = INTVAL (off);
1160+ return changed;
1161 }
1162
1163
1164@@ -1272,9 +1695,10 @@ move2add_use_add2_insn (rtx reg, rtx sym
1165 value (SYM + offset) and change INSN into an add instruction
1166 (set (REG) (plus (the found register) (OFF - offset))) if such
1167 a register is found. It also updates the information about
1168- REG's known value. */
1169+ REG's known value.
1170+ Return true iff we made a change. */
1171
1172-static void
1173+static bool
1174 move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn)
1175 {
1176 rtx pat = PATTERN (insn);
1177@@ -1284,6 +1708,7 @@ move2add_use_add3_insn (rtx reg, rtx sym
1178 int min_regno;
1179 bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
1180 int i;
1181+ bool changed = false;
1182
1183 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
1184 if (reg_set_luid[i] > move2add_last_label_luid
1185@@ -1328,20 +1753,25 @@ move2add_use_add3_insn (rtx reg, rtx sym
1186 GET_MODE (reg));
1187 tem = gen_rtx_PLUS (GET_MODE (reg), tem, new_src);
1188 }
1189- validate_change (insn, &SET_SRC (pat), tem, 0);
1190+ if (validate_change (insn, &SET_SRC (pat), tem, 0))
1191+ changed = true;
1192 }
1193 reg_set_luid[regno] = move2add_luid;
1194 reg_base_reg[regno] = -1;
1195 reg_mode[regno] = GET_MODE (reg);
1196 reg_symbol_ref[regno] = sym;
1197 reg_offset[regno] = INTVAL (off);
1198+ return changed;
1199 }
1200
1201-static void
1202+/* Convert move insns with constant inputs to additions if they are cheaper.
1203+ Return true if any changes were made. */
1204+static bool
1205 reload_cse_move2add (rtx first)
1206 {
1207 int i;
1208 rtx insn;
1209+ bool changed = false;
1210
1211 for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--)
1212 {
1213@@ -1402,7 +1832,7 @@ reload_cse_move2add (rtx first)
1214 && reg_base_reg[regno] < 0
1215 && reg_symbol_ref[regno] == NULL_RTX)
1216 {
1217- move2add_use_add2_insn (reg, NULL_RTX, src, insn);
1218+ changed |= move2add_use_add2_insn (reg, NULL_RTX, src, insn);
1219 continue;
1220 }
1221
1222@@ -1463,6 +1893,7 @@ reload_cse_move2add (rtx first)
1223 }
1224 if (success)
1225 delete_insn (insn);
1226+ changed |= success;
1227 insn = next;
1228 reg_mode[regno] = GET_MODE (reg);
1229 reg_offset[regno] =
1230@@ -1508,12 +1939,12 @@ reload_cse_move2add (rtx first)
1231 && reg_base_reg[regno] < 0
1232 && reg_symbol_ref[regno] != NULL_RTX
1233 && rtx_equal_p (sym, reg_symbol_ref[regno]))
1234- move2add_use_add2_insn (reg, sym, off, insn);
1235+ changed |= move2add_use_add2_insn (reg, sym, off, insn);
1236
1237 /* Otherwise, we have to find a register whose value is sum
1238 of sym and some constant value. */
1239 else
1240- move2add_use_add3_insn (reg, sym, off, insn);
1241+ changed |= move2add_use_add3_insn (reg, sym, off, insn);
1242
1243 continue;
1244 }
1245@@ -1568,6 +1999,7 @@ reload_cse_move2add (rtx first)
1246 }
1247 }
1248 }
1249+ return changed;
1250 }
1251
1252 /* SET is a SET or CLOBBER that sets DST. DATA is the insn which
1253Index: gcc-4.5/testsuite/gcc.target/arm/pr42235.c
1254===================================================================
1255--- /dev/null
1256+++ gcc-4.5/testsuite/gcc.target/arm/pr42235.c
1257@@ -0,0 +1,11 @@
1258+/* { dg-options "-mthumb -O2 -march=armv5te" } */
1259+/* { dg-require-effective-target arm_thumb1_ok } */
1260+/* { dg-final { scan-assembler-not "add\[\\t \]*r.,\[\\t \]*r.,\[\\t \]*\#1" } } */
1261+/* { dg-final { scan-assembler-not "add\[\\t \]*r.,\[\\t \]*\#1" } } */
1262+
1263+#include <string.h>
1264+
1265+int foo (char *x)
1266+{
1267+ memset (x, 0, 6);
1268+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99403.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99403.patch
new file mode 100644
index 000000000..093dd1c57
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99403.patch
@@ -0,0 +1,176 @@
12010-09-20 Jie Zhang <jie@codesourcery.com>
2
3 Issue #5256
4
5 libstdc++-v3/
6
7 Backport from mainline:
8
9 2010-05-21 Joseph Myers <joseph@codesourcery.com>
10 * acinclude.m4 (GLIBCXX_ENABLE_CLOCALE): Use GNU locale model for
11 glibc 2.3 and later, but not uClibc, without an execution test.
12 * configure: Regenerate.
13 * doc/xml/manual/configure.xml, doc/xml/manual/prerequisites.xml,
14 doc/xml/faq.xml: Update.
15
16=== modified file 'libstdc++-v3/acinclude.m4'
17Index: gcc-4.5/libstdc++-v3/acinclude.m4
18===================================================================
19--- gcc-4.5.orig/libstdc++-v3/acinclude.m4
20+++ gcc-4.5/libstdc++-v3/acinclude.m4
21@@ -1740,41 +1740,11 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
22 if test $enable_clocale_flag = gnu; then
23 AC_EGREP_CPP([_GLIBCXX_ok], [
24 #include <features.h>
25- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
26+ #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
27 _GLIBCXX_ok
28 #endif
29 ], enable_clocale_flag=gnu, enable_clocale_flag=generic)
30
31- if test $enable_clocale = auto; then
32- # Test for bugs early in glibc-2.2.x series
33- AC_TRY_RUN([
34- #define _GNU_SOURCE 1
35- #include <locale.h>
36- #include <string.h>
37- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
38- extern __typeof(newlocale) __newlocale;
39- extern __typeof(duplocale) __duplocale;
40- extern __typeof(strcoll_l) __strcoll_l;
41- #endif
42- int main()
43- {
44- const char __one[] = "Äuglein Augmen";
45- const char __two[] = "Äuglein";
46- int i;
47- int j;
48- __locale_t loc;
49- __locale_t loc_dup;
50- loc = __newlocale(1 << LC_ALL, "de_DE", 0);
51- loc_dup = __duplocale(loc);
52- i = __strcoll_l(__one, __two, loc);
53- j = __strcoll_l(__one, __two, loc_dup);
54- return 0;
55- }
56- ],
57- [enable_clocale_flag=gnu],[enable_clocale_flag=generic],
58- [enable_clocale_flag=generic])
59- fi
60-
61 # Set it to scream when it hurts.
62 ac_save_CFLAGS="$CFLAGS"
63 CFLAGS="-Wimplicit-function-declaration -Werror"
64Index: gcc-4.5/libstdc++-v3/configure
65===================================================================
66--- gcc-4.5.orig/libstdc++-v3/configure
67+++ gcc-4.5/libstdc++-v3/configure
68@@ -15627,7 +15627,7 @@ fi
69 /* end confdefs.h. */
70
71 #include <features.h>
72- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)
73+ #if (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined(__UCLIBC__)
74 _GLIBCXX_ok
75 #endif
76
77@@ -15641,49 +15641,6 @@ fi
78 rm -f conftest*
79
80
81- if test $enable_clocale = auto; then
82- # Test for bugs early in glibc-2.2.x series
83- if test "$cross_compiling" = yes; then :
84- enable_clocale_flag=generic
85-else
86- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
87-/* end confdefs.h. */
88-
89- #define _GNU_SOURCE 1
90- #include <locale.h>
91- #include <string.h>
92- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
93- extern __typeof(newlocale) __newlocale;
94- extern __typeof(duplocale) __duplocale;
95- extern __typeof(strcoll_l) __strcoll_l;
96- #endif
97- int main()
98- {
99- const char __one[] = "Äuglein Augmen";
100- const char __two[] = "Äuglein";
101- int i;
102- int j;
103- __locale_t loc;
104- __locale_t loc_dup;
105- loc = __newlocale(1 << LC_ALL, "de_DE", 0);
106- loc_dup = __duplocale(loc);
107- i = __strcoll_l(__one, __two, loc);
108- j = __strcoll_l(__one, __two, loc_dup);
109- return 0;
110- }
111-
112-_ACEOF
113-if ac_fn_c_try_run "$LINENO"; then :
114- enable_clocale_flag=gnu
115-else
116- enable_clocale_flag=generic
117-fi
118-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
119- conftest.$ac_objext conftest.beam conftest.$ac_ext
120-fi
121-
122- fi
123-
124 # Set it to scream when it hurts.
125 ac_save_CFLAGS="$CFLAGS"
126 CFLAGS="-Wimplicit-function-declaration -Werror"
127Index: gcc-4.5/libstdc++-v3/doc/xml/faq.xml
128===================================================================
129--- gcc-4.5.orig/libstdc++-v3/doc/xml/faq.xml
130+++ gcc-4.5/libstdc++-v3/doc/xml/faq.xml
131@@ -636,6 +636,8 @@
132 C library (glibc) version 2.2.5. That version of glibc is over a
133 year old and contains necessary bugfixes. Many GNU/Linux distros make
134 glibc version 2.3.x available now.
135+ libstdc++ 4.6.0 and later require glibc 2.3 or later for this
136+ localization and formatting code.
137 </para>
138 <para>The guideline is simple: the more recent the C++ library, the
139 more recent the C library. (This is also documented in the main
140Index: gcc-4.5/libstdc++-v3/doc/xml/manual/configure.xml
141===================================================================
142--- gcc-4.5.orig/libstdc++-v3/doc/xml/manual/configure.xml
143+++ gcc-4.5/libstdc++-v3/doc/xml/manual/configure.xml
144@@ -113,8 +113,7 @@
145 <para>If not explicitly specified, the configure proccess tries
146 to guess the most suitable package from the choices above. The
147 default is 'generic'. On glibc-based systems of sufficient
148- vintage (2.2.5 and newer) and capability (with installed DE and
149- FR locale data), 'gnu' is automatically selected. This option
150+ vintage (2.3 and newer), 'gnu' is automatically selected. This option
151 can change the library ABI.
152 </para>
153 </listitem></varlistentry>
154Index: gcc-4.5/libstdc++-v3/doc/xml/manual/prerequisites.xml
155===================================================================
156--- gcc-4.5.orig/libstdc++-v3/doc/xml/manual/prerequisites.xml
157+++ gcc-4.5/libstdc++-v3/doc/xml/manual/prerequisites.xml
158@@ -52,16 +52,8 @@
159 <para>
160 If gcc 3.1.0 or later on is being used on linux, an attempt
161 will be made to use "C" library functionality necessary for
162- C++ named locale support. For gcc 3.2.1 and later, this
163- means that glibc 2.2.5 or later is required and the "C"
164- library de_DE locale information must be installed.
165- </para>
166-
167- <para>
168- Note however that the sanity checks involving the de_DE
169- locale are skipped when an explicit --enable-clocale=gnu
170- configure option is used: only the basic checks are carried
171- out, defending against misconfigurations.
172+ C++ named locale support. For gcc 4.6.0 and later, this
173+ means that glibc 2.3 or later is required.
174 </para>
175
176 <para>
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99404.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99404.patch
new file mode 100644
index 000000000..275330092
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99404.patch
@@ -0,0 +1,386 @@
12010-09-20 Jie Zhang <jie@codesourcery.com>
2
3 Issue #9019
4
5 Backport from mainline:
6
7 gcc/
8 2010-09-20 Jie Zhang <jie@codesourcery.com>
9 * config/arm/arm.c (arm_address_offset_is_imm): New.
10 (arm_early_store_addr_dep): New.
11 (arm_early_load_addr_dep): New.
12 * config/arm/arm-protos.h (arm_early_store_addr_dep): Declare.
13 (arm_early_load_addr_dep): Declare.
14 (arm_address_offset_is_imm): Declare.
15 * config/arm/cortex-m4.md: New file.
16 * config/arm/cortex-m4-fpu.md: New file.
17 * config/arm/arm.md: Include cortex-m4.md and cortex-m4-fpu.md.
18 (attr generic_sched): Exclude cortexm4.
19 (attr generic_vfp): Exclude cortexm4.
20
21=== modified file 'gcc/config/arm/arm-protos.h'
22Index: gcc-4.5/gcc/config/arm/arm-protos.h
23===================================================================
24--- gcc-4.5.orig/gcc/config/arm/arm-protos.h
25+++ gcc-4.5/gcc/config/arm/arm-protos.h
26@@ -87,6 +87,8 @@ extern int arm_coproc_mem_operand (rtx,
27 extern int neon_vector_mem_operand (rtx, int);
28 extern int neon_struct_mem_operand (rtx);
29 extern int arm_no_early_store_addr_dep (rtx, rtx);
30+extern int arm_early_store_addr_dep (rtx, rtx);
31+extern int arm_early_load_addr_dep (rtx, rtx);
32 extern int arm_no_early_alu_shift_dep (rtx, rtx);
33 extern int arm_no_early_alu_shift_value_dep (rtx, rtx);
34 extern int arm_no_early_mul_dep (rtx, rtx);
35@@ -131,6 +133,7 @@ extern const char *output_move_quad (rtx
36 extern const char *output_move_vfp (rtx *operands);
37 extern const char *output_move_neon (rtx *operands);
38 extern int arm_attr_length_move_neon (rtx);
39+extern int arm_address_offset_is_imm (rtx);
40 extern const char *output_add_immediate (rtx *);
41 extern const char *arithmetic_instr (rtx, int);
42 extern void output_ascii_pseudo_op (FILE *, const unsigned char *, int);
43Index: gcc-4.5/gcc/config/arm/arm.c
44===================================================================
45--- gcc-4.5.orig/gcc/config/arm/arm.c
46+++ gcc-4.5/gcc/config/arm/arm.c
47@@ -13542,6 +13542,34 @@ arm_attr_length_move_neon (rtx insn)
48 return 4;
49 }
50
51+/* Return nonzero if the offset in the address is an immediate. Otherwise,
52+ return zero. */
53+
54+int
55+arm_address_offset_is_imm (rtx insn)
56+{
57+ rtx mem, addr;
58+
59+ extract_insn_cached (insn);
60+
61+ if (REG_P (recog_data.operand[0]))
62+ return 0;
63+
64+ mem = recog_data.operand[0];
65+
66+ gcc_assert (MEM_P (mem));
67+
68+ addr = XEXP (mem, 0);
69+
70+ if (GET_CODE (addr) == REG
71+ || (GET_CODE (addr) == PLUS
72+ && GET_CODE (XEXP (addr, 0)) == REG
73+ && GET_CODE (XEXP (addr, 1)) == CONST_INT))
74+ return 1;
75+ else
76+ return 0;
77+}
78+
79 /* Output an ADD r, s, #n where n may be too big for one instruction.
80 If adding zero to one register, output nothing. */
81 const char *
82@@ -21620,6 +21648,38 @@ arm_no_early_store_addr_dep (rtx produce
83 return !reg_overlap_mentioned_p (value, addr);
84 }
85
86+/* Return nonzero if the CONSUMER instruction (a store) does need
87+ PRODUCER's value to calculate the address. */
88+
89+int
90+arm_early_store_addr_dep (rtx producer, rtx consumer)
91+{
92+ return !arm_no_early_store_addr_dep (producer, consumer);
93+}
94+
95+/* Return nonzero if the CONSUMER instruction (a load) does need
96+ PRODUCER's value to calculate the address. */
97+
98+int
99+arm_early_load_addr_dep (rtx producer, rtx consumer)
100+{
101+ rtx value = PATTERN (producer);
102+ rtx addr = PATTERN (consumer);
103+
104+ if (GET_CODE (value) == COND_EXEC)
105+ value = COND_EXEC_CODE (value);
106+ if (GET_CODE (value) == PARALLEL)
107+ value = XVECEXP (value, 0, 0);
108+ value = XEXP (value, 0);
109+ if (GET_CODE (addr) == COND_EXEC)
110+ addr = COND_EXEC_CODE (addr);
111+ if (GET_CODE (addr) == PARALLEL)
112+ addr = XVECEXP (addr, 0, 0);
113+ addr = XEXP (addr, 1);
114+
115+ return reg_overlap_mentioned_p (value, addr);
116+}
117+
118 /* Return nonzero if the CONSUMER instruction (an ALU op) does not
119 have an early register shift value or amount dependency on the
120 result of PRODUCER. */
121Index: gcc-4.5/gcc/config/arm/arm.md
122===================================================================
123--- gcc-4.5.orig/gcc/config/arm/arm.md
124+++ gcc-4.5/gcc/config/arm/arm.md
125@@ -434,16 +434,16 @@
126 ;; True if the generic scheduling description should be used.
127
128 (define_attr "generic_sched" "yes,no"
129- (const (if_then_else
130- (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9")
131- (eq_attr "tune_cortexr4" "yes"))
132+ (const (if_then_else
133+ (ior (eq_attr "tune" "arm926ejs,arm1020e,arm1026ejs,arm1136js,arm1136jfs,cortexa5,cortexa8,cortexa9,cortexm4")
134+ (eq_attr "tune_cortexr4" "yes"))
135 (const_string "no")
136 (const_string "yes"))))
137
138 (define_attr "generic_vfp" "yes,no"
139 (const (if_then_else
140 (and (eq_attr "fpu" "vfp")
141- (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa8,cortexa9")
142+ (eq_attr "tune" "!arm1020e,arm1022e,cortexa5,cortexa8,cortexa9,cortexm4")
143 (eq_attr "tune_cortexr4" "no"))
144 (const_string "yes")
145 (const_string "no"))))
146@@ -472,6 +472,8 @@
147 (include "cortex-a9.md")
148 (include "cortex-r4.md")
149 (include "cortex-r4f.md")
150+(include "cortex-m4.md")
151+(include "cortex-m4-fpu.md")
152 (include "vfp11.md")
153
154
155Index: gcc-4.5/gcc/config/arm/cortex-m4-fpu.md
156===================================================================
157--- /dev/null
158+++ gcc-4.5/gcc/config/arm/cortex-m4-fpu.md
159@@ -0,0 +1,111 @@
160+;; ARM Cortex-M4 FPU pipeline description
161+;; Copyright (C) 2010 Free Software Foundation, Inc.
162+;; Contributed by CodeSourcery.
163+;;
164+;; This file is part of GCC.
165+;;
166+;; GCC is free software; you can redistribute it and/or modify it
167+;; under the terms of the GNU General Public License as published by
168+;; the Free Software Foundation; either version 3, or (at your option)
169+;; any later version.
170+;;
171+;; GCC is distributed in the hope that it will be useful, but
172+;; WITHOUT ANY WARRANTY; without even the implied warranty of
173+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
174+;; General Public License for more details.
175+;;
176+;; You should have received a copy of the GNU General Public License
177+;; along with GCC; see the file COPYING3. If not see
178+;; <http://www.gnu.org/licenses/>.
179+
180+;; Use an artifial unit to model FPU.
181+(define_cpu_unit "cortex_m4_v" "cortex_m4")
182+
183+(define_reservation "cortex_m4_ex_v" "cortex_m4_ex+cortex_m4_v")
184+
185+;; Integer instructions following VDIV or VSQRT complete out-of-order.
186+(define_insn_reservation "cortex_m4_fdivs" 15
187+ (and (eq_attr "tune" "cortexm4")
188+ (eq_attr "type" "fdivs"))
189+ "cortex_m4_ex_v,cortex_m4_v*13")
190+
191+(define_insn_reservation "cortex_m4_vmov_1" 1
192+ (and (eq_attr "tune" "cortexm4")
193+ (eq_attr "type" "fcpys,fconsts"))
194+ "cortex_m4_ex_v")
195+
196+(define_insn_reservation "cortex_m4_vmov_2" 2
197+ (and (eq_attr "tune" "cortexm4")
198+ (eq_attr "type" "f_2_r,r_2_f"))
199+ "cortex_m4_ex_v*2")
200+
201+(define_insn_reservation "cortex_m4_fmuls" 2
202+ (and (eq_attr "tune" "cortexm4")
203+ (eq_attr "type" "fmuls"))
204+ "cortex_m4_ex_v")
205+
206+(define_insn_reservation "cortex_m4_fmacs" 4
207+ (and (eq_attr "tune" "cortexm4")
208+ (eq_attr "type" "fmacs"))
209+ "cortex_m4_ex_v*3")
210+
211+(define_insn_reservation "cortex_m4_ffariths" 1
212+ (and (eq_attr "tune" "cortexm4")
213+ (eq_attr "type" "ffariths"))
214+ "cortex_m4_ex_v")
215+
216+(define_insn_reservation "cortex_m4_fadds" 2
217+ (and (eq_attr "tune" "cortexm4")
218+ (eq_attr "type" "fadds"))
219+ "cortex_m4_ex_v")
220+
221+(define_insn_reservation "cortex_m4_fcmps" 1
222+ (and (eq_attr "tune" "cortexm4")
223+ (eq_attr "type" "fcmps"))
224+ "cortex_m4_ex_v")
225+
226+(define_insn_reservation "cortex_m4_f_flag" 1
227+ (and (eq_attr "tune" "cortexm4")
228+ (eq_attr "type" "f_flag"))
229+ "cortex_m4_ex_v")
230+
231+(define_insn_reservation "cortex_m4_f_cvt" 2
232+ (and (eq_attr "tune" "cortexm4")
233+ (eq_attr "type" "f_cvt"))
234+ "cortex_m4_ex_v")
235+
236+(define_insn_reservation "cortex_m4_f_load" 2
237+ (and (eq_attr "tune" "cortexm4")
238+ (eq_attr "type" "f_load"))
239+ "cortex_m4_ex_v*2")
240+
241+(define_insn_reservation "cortex_m4_f_store" 2
242+ (and (eq_attr "tune" "cortexm4")
243+ (eq_attr "type" "f_store"))
244+ "cortex_m4_ex_v*2")
245+
246+(define_insn_reservation "cortex_m4_f_loadd" 3
247+ (and (eq_attr "tune" "cortexm4")
248+ (eq_attr "type" "f_loadd"))
249+ "cortex_m4_ex_v*3")
250+
251+(define_insn_reservation "cortex_m4_f_stored" 3
252+ (and (eq_attr "tune" "cortexm4")
253+ (eq_attr "type" "f_stored"))
254+ "cortex_m4_ex_v*3")
255+
256+;; MAC instructions consume their addend one cycle later. If the result
257+;; of an arithmetic instruction is consumed as the addend of the following
258+;; MAC instruction, the latency can be decreased by one.
259+
260+(define_bypass 1 "cortex_m4_fadds,cortex_m4_fmuls,cortex_m4_f_cvt"
261+ "cortex_m4_fmacs"
262+ "arm_no_early_mul_dep")
263+
264+(define_bypass 3 "cortex_m4_fmacs"
265+ "cortex_m4_fmacs"
266+ "arm_no_early_mul_dep")
267+
268+(define_bypass 14 "cortex_m4_fdivs"
269+ "cortex_m4_fmacs"
270+ "arm_no_early_mul_dep")
271Index: gcc-4.5/gcc/config/arm/cortex-m4.md
272===================================================================
273--- /dev/null
274+++ gcc-4.5/gcc/config/arm/cortex-m4.md
275@@ -0,0 +1,111 @@
276+;; ARM Cortex-M4 pipeline description
277+;; Copyright (C) 2010 Free Software Foundation, Inc.
278+;; Contributed by CodeSourcery.
279+;;
280+;; This file is part of GCC.
281+;;
282+;; GCC is free software; you can redistribute it and/or modify it
283+;; under the terms of the GNU General Public License as published by
284+;; the Free Software Foundation; either version 3, or (at your option)
285+;; any later version.
286+;;
287+;; GCC is distributed in the hope that it will be useful, but
288+;; WITHOUT ANY WARRANTY; without even the implied warranty of
289+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
290+;; General Public License for more details.
291+;;
292+;; You should have received a copy of the GNU General Public License
293+;; along with GCC; see the file COPYING3. If not see
294+;; <http://www.gnu.org/licenses/>.
295+
296+(define_automaton "cortex_m4")
297+
298+;; We model the pipelining of LDR instructions by using two artificial units.
299+
300+(define_cpu_unit "cortex_m4_a" "cortex_m4")
301+
302+(define_cpu_unit "cortex_m4_b" "cortex_m4")
303+
304+(define_reservation "cortex_m4_ex" "cortex_m4_a+cortex_m4_b")
305+
306+;; ALU and multiply is one cycle.
307+(define_insn_reservation "cortex_m4_alu" 1
308+ (and (eq_attr "tune" "cortexm4")
309+ (eq_attr "type" "alu,alu_shift,alu_shift_reg,mult"))
310+ "cortex_m4_ex")
311+
312+;; Byte, half-word and word load is two cycles.
313+(define_insn_reservation "cortex_m4_load1" 2
314+ (and (eq_attr "tune" "cortexm4")
315+ (eq_attr "type" "load_byte,load1"))
316+ "cortex_m4_a, cortex_m4_b")
317+
318+;; str rx, [ry, #imm] is always one cycle.
319+(define_insn_reservation "cortex_m4_store1_1" 1
320+ (and (and (eq_attr "tune" "cortexm4")
321+ (eq_attr "type" "store1"))
322+ (ne (symbol_ref ("arm_address_offset_is_imm (insn)")) (const_int 0)))
323+ "cortex_m4_a")
324+
325+;; Other byte, half-word and word load is two cycles.
326+(define_insn_reservation "cortex_m4_store1_2" 2
327+ (and (and (eq_attr "tune" "cortexm4")
328+ (eq_attr "type" "store1"))
329+ (eq (symbol_ref ("arm_address_offset_is_imm (insn)")) (const_int 0)))
330+ "cortex_m4_a*2")
331+
332+(define_insn_reservation "cortex_m4_load2" 3
333+ (and (eq_attr "tune" "cortexm4")
334+ (eq_attr "type" "load2"))
335+ "cortex_m4_ex*3")
336+
337+(define_insn_reservation "cortex_m4_store2" 3
338+ (and (eq_attr "tune" "cortexm4")
339+ (eq_attr "type" "store2"))
340+ "cortex_m4_ex*3")
341+
342+(define_insn_reservation "cortex_m4_load3" 4
343+ (and (eq_attr "tune" "cortexm4")
344+ (eq_attr "type" "load3"))
345+ "cortex_m4_ex*4")
346+
347+(define_insn_reservation "cortex_m4_store3" 4
348+ (and (eq_attr "tune" "cortexm4")
349+ (eq_attr "type" "store3"))
350+ "cortex_m4_ex*4")
351+
352+(define_insn_reservation "cortex_m4_load4" 5
353+ (and (eq_attr "tune" "cortexm4")
354+ (eq_attr "type" "load4"))
355+ "cortex_m4_ex*5")
356+
357+(define_insn_reservation "cortex_m4_store4" 5
358+ (and (eq_attr "tune" "cortexm4")
359+ (eq_attr "type" "store4"))
360+ "cortex_m4_ex*5")
361+
362+;; If the address of load or store depends on the result of the preceding
363+;; instruction, the latency is increased by one.
364+
365+(define_bypass 2 "cortex_m4_alu"
366+ "cortex_m4_load1"
367+ "arm_early_load_addr_dep")
368+
369+(define_bypass 2 "cortex_m4_alu"
370+ "cortex_m4_store1_1,cortex_m4_store1_2"
371+ "arm_early_store_addr_dep")
372+
373+(define_insn_reservation "cortex_m4_branch" 3
374+ (and (eq_attr "tune" "cortexm4")
375+ (eq_attr "type" "branch"))
376+ "cortex_m4_ex*3")
377+
378+(define_insn_reservation "cortex_m4_call" 3
379+ (and (eq_attr "tune" "cortexm4")
380+ (eq_attr "type" "call"))
381+ "cortex_m4_ex*3")
382+
383+(define_insn_reservation "cortex_m4_block" 1
384+ (and (eq_attr "tune" "cortexm4")
385+ (eq_attr "type" "block"))
386+ "cortex_m4_ex")
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99405.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99405.patch
new file mode 100644
index 000000000..7fc943f4b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99405.patch
@@ -0,0 +1,36 @@
12010-09-22 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-09-22 Chung-Lin Tang <cltang@codesourcery.com>
6
7 gcc/
8 * postreload.c (move2add_note_store): Add reg_symbol_ref[] checks
9 to update conditions. Fix reg_mode[] check.
10
11=== modified file 'gcc/postreload.c'
12Index: gcc-4.5/gcc/postreload.c
13===================================================================
14--- gcc-4.5.orig/gcc/postreload.c
15+++ gcc-4.5/gcc/postreload.c
16@@ -2103,15 +2103,17 @@ move2add_note_store (rtx dst, const_rtx
17 && (MODES_OK_FOR_MOVE2ADD
18 (dst_mode, reg_mode[REGNO (XEXP (src, 1))])))
19 {
20- if (reg_base_reg[REGNO (XEXP (src, 1))] < 0)
21+ if (reg_base_reg[REGNO (XEXP (src, 1))] < 0
22+ && reg_symbol_ref[REGNO (XEXP (src, 1))] == NULL_RTX)
23 offset = reg_offset[REGNO (XEXP (src, 1))];
24 /* Maybe the first register is known to be a
25 constant. */
26 else if (reg_set_luid[REGNO (base_reg)]
27 > move2add_last_label_luid
28 && (MODES_OK_FOR_MOVE2ADD
29- (dst_mode, reg_mode[REGNO (XEXP (src, 1))]))
30- && reg_base_reg[REGNO (base_reg)] < 0)
31+ (dst_mode, reg_mode[REGNO (base_reg)]))
32+ && reg_base_reg[REGNO (base_reg)] < 0
33+ && reg_symbol_ref[REGNO (base_reg)] == NULL_RTX)
34 {
35 offset = reg_offset[REGNO (base_reg)];
36 base_reg = XEXP (src, 1);
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99406.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99406.patch
new file mode 100644
index 000000000..54473fa23
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99406.patch
@@ -0,0 +1,20 @@
12010-09-28 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/testsuite/
6 2010-09-28 Jie Zhang <jie@codesourcery.com>
7 * gcc.dg/Wcxx-compat-12.c: Add -fno-short-enums.
8
9=== modified file 'gcc/testsuite/gcc.dg/Wcxx-compat-12.c'
10Index: gcc-4.5/gcc/testsuite/gcc.dg/Wcxx-compat-12.c
11===================================================================
12--- gcc-4.5.orig/gcc/testsuite/gcc.dg/Wcxx-compat-12.c
13+++ gcc-4.5/gcc/testsuite/gcc.dg/Wcxx-compat-12.c
14@@ -1,5 +1,5 @@
15 /* { dg-do compile } */
16-/* { dg-options "-Wc++-compat" } */
17+/* { dg-options "-fno-short-enums -Wc++-compat" } */
18
19 enum E { A };
20
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99407.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99407.patch
new file mode 100644
index 000000000..80f4246ed
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99407.patch
@@ -0,0 +1,33 @@
12010-09-30 Jie Zhang <jie@codesourcery.com>
2
3 gcc/testsuite/
4
5 * c-c++-common/uninit-17.c: Adjust warning message.
6
7 Backport from mainline:
8
9 2010-07-30 Xinliang David Li <davidxl@google.com>
10 PR tree-optimization/45121
11 * c-c++-common/uninit-17.c: Add -fno-ivops option.
12
13=== modified file 'gcc/testsuite/c-c++-common/uninit-17.c'
14Index: gcc-4.5/gcc/testsuite/c-c++-common/uninit-17.c
15===================================================================
16--- gcc-4.5.orig/gcc/testsuite/c-c++-common/uninit-17.c
17+++ gcc-4.5/gcc/testsuite/c-c++-common/uninit-17.c
18@@ -1,5 +1,5 @@
19 /* { dg-do compile } */
20-/* { dg-options "-O2 -Wuninitialized" } */
21+/* { dg-options "-O2 -Wuninitialized -fno-ivopts" } */
22
23 inline int foo(int x)
24 {
25@@ -9,7 +9,7 @@ static void bar(int a, int *ptr)
26 {
27 do
28 {
29- int b; /* { dg-warning "is used uninitialized" } */
30+ int b; /* { dg-warning "may be used uninitialized" } */
31 if (b < 40) {
32 ptr[0] = b;
33 }
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99408.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99408.patch
new file mode 100644
index 000000000..1d873ba65
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99408.patch
@@ -0,0 +1,603 @@
12010-10-01 Julian Brown <julian@codesourcery.com>
2
3 Revert:
4
5 Backport from FSF:
6
7 2010-08-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
8
9 gcc/
10 * config/arm/linux-atomic.c (SUBWORD_VAL_CAS): Instantiate with
11 'unsigned short' and 'unsigned char' instead of 'short' and
12 'char'. (SUBWORD_BOOL_CAS): Likewise.
13 (SUBWORD_SYNC_OP): Likewise.
14 (SUBWORD_TEST_AND_SET): Likewise.
15 (FETCH_AND_OP_WORD): Parenthesise INF_OP
16 (SUBWORD_SYNC_OP): Likewise.
17 (OP_AND_FETCH_WORD): Likewise.
18
19 gcc/testsuite/
20 * lib/target-supports.exp: (check_effective_target_sync_int_long):
21 Add arm*-*-linux-gnueabi.
22 (check_effective_target_sync_char_short): Likewise.
23
24=== modified file 'gcc/config/arm/arm-protos.h'
25Index: gcc-4.5/gcc/config/arm/arm-protos.h
26===================================================================
27--- gcc-4.5.orig/gcc/config/arm/arm-protos.h
28+++ gcc-4.5/gcc/config/arm/arm-protos.h
29@@ -151,11 +151,6 @@ extern const char *vfp_output_fstmd (rtx
30 extern void arm_set_return_address (rtx, rtx);
31 extern int arm_eliminable_register (rtx);
32 extern const char *arm_output_shift(rtx *, int);
33-extern void arm_expand_sync (enum machine_mode, struct arm_sync_generator *,
34- rtx, rtx, rtx, rtx);
35-extern const char *arm_output_memory_barrier (rtx *);
36-extern const char *arm_output_sync_insn (rtx, rtx *);
37-extern unsigned int arm_sync_loop_insns (rtx , rtx *);
38
39 extern bool arm_output_addr_const_extra (FILE *, rtx);
40
41Index: gcc-4.5/gcc/config/arm/arm.c
42===================================================================
43--- gcc-4.5.orig/gcc/config/arm/arm.c
44+++ gcc-4.5/gcc/config/arm/arm.c
45@@ -605,7 +605,6 @@ static int thumb_call_reg_needed;
46 #define FL_NEON (1 << 20) /* Neon instructions. */
47 #define FL_ARCH7EM (1 << 21) /* Instructions present in the ARMv7E-M
48 architecture. */
49-#define FL_ARCH7 (1 << 22) /* Architecture 7. */
50
51 #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */
52
53@@ -626,7 +625,7 @@ static int thumb_call_reg_needed;
54 #define FL_FOR_ARCH6ZK FL_FOR_ARCH6K
55 #define FL_FOR_ARCH6T2 (FL_FOR_ARCH6 | FL_THUMB2)
56 #define FL_FOR_ARCH6M (FL_FOR_ARCH6 & ~FL_NOTM)
57-#define FL_FOR_ARCH7 ((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
58+#define FL_FOR_ARCH7 (FL_FOR_ARCH6T2 &~ FL_NOTM)
59 #define FL_FOR_ARCH7A (FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
60 #define FL_FOR_ARCH7R (FL_FOR_ARCH7A | FL_DIV)
61 #define FL_FOR_ARCH7M (FL_FOR_ARCH7 | FL_DIV)
62@@ -664,9 +663,6 @@ int arm_arch6 = 0;
63 /* Nonzero if this chip supports the ARM 6K extensions. */
64 int arm_arch6k = 0;
65
66-/* Nonzero if this chip supports the ARM 7 extensions. */
67-int arm_arch7 = 0;
68-
69 /* Nonzero if instructions not present in the 'M' profile can be used. */
70 int arm_arch_notm = 0;
71
72@@ -1638,7 +1634,6 @@ arm_override_options (void)
73 arm_arch6 = (insn_flags & FL_ARCH6) != 0;
74 arm_arch6k = (insn_flags & FL_ARCH6K) != 0;
75 arm_arch_notm = (insn_flags & FL_NOTM) != 0;
76- arm_arch7 = (insn_flags & FL_ARCH7) != 0;
77 arm_arch7em = (insn_flags & FL_ARCH7EM) != 0;
78 arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
79 arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
80@@ -16595,17 +16590,6 @@ arm_print_operand (FILE *stream, rtx x,
81 }
82 return;
83
84- case 'C':
85- {
86- rtx addr;
87-
88- gcc_assert (GET_CODE (x) == MEM);
89- addr = XEXP (x, 0);
90- gcc_assert (GET_CODE (addr) == REG);
91- asm_fprintf (stream, "[%r]", REGNO (addr));
92- }
93- return;
94-
95 /* Translate an S register number into a D register number and element index. */
96 case 'y':
97 {
98@@ -22840,372 +22824,4 @@ arm_builtin_support_vector_misalignment
99 is_packed);
100 }
101
102-/* Legitimize a memory reference for sync primitive implemented using
103- ldrex / strex. We currently force the form of the reference to be
104- indirect without offset. We do not yet support the indirect offset
105- addressing supported by some ARM targets for these
106- instructions. */
107-static rtx
108-arm_legitimize_sync_memory (rtx memory)
109-{
110- rtx addr = force_reg (Pmode, XEXP (memory, 0));
111- rtx legitimate_memory = gen_rtx_MEM (GET_MODE (memory), addr);
112-
113- set_mem_alias_set (legitimate_memory, ALIAS_SET_MEMORY_BARRIER);
114- MEM_VOLATILE_P (legitimate_memory) = MEM_VOLATILE_P (memory);
115- return legitimate_memory;
116-}
117-
118-/* An instruction emitter. */
119-typedef void (* emit_f) (int label, const char *, rtx *);
120-
121-/* An instruction emitter that emits via the conventional
122- output_asm_insn. */
123-static void
124-arm_emit (int label ATTRIBUTE_UNUSED, const char *pattern, rtx *operands)
125-{
126- output_asm_insn (pattern, operands);
127-}
128-
129-/* Count the number of emitted synchronization instructions. */
130-static unsigned arm_insn_count;
131-
132-/* An emitter that counts emitted instructions but does not actually
133- emit instruction into the the instruction stream. */
134-static void
135-arm_count (int label,
136- const char *pattern ATTRIBUTE_UNUSED,
137- rtx *operands ATTRIBUTE_UNUSED)
138-{
139- if (! label)
140- ++ arm_insn_count;
141-}
142-
143-/* Construct a pattern using conventional output formatting and feed
144- it to output_asm_insn. Provides a mechanism to construct the
145- output pattern on the fly. Note the hard limit on the pattern
146- buffer size. */
147-static void
148-arm_output_asm_insn (emit_f emit, int label, rtx *operands,
149- const char *pattern, ...)
150-{
151- va_list ap;
152- char buffer[256];
153-
154- va_start (ap, pattern);
155- vsprintf (buffer, pattern, ap);
156- va_end (ap);
157- emit (label, buffer, operands);
158-}
159-
160-/* Emit the memory barrier instruction, if any, provided by this
161- target to a specified emitter. */
162-static void
163-arm_process_output_memory_barrier (emit_f emit, rtx *operands)
164-{
165- if (TARGET_HAVE_DMB)
166- {
167- /* Note we issue a system level barrier. We should consider
168- issuing a inner shareabilty zone barrier here instead, ie.
169- "DMB ISH". */
170- emit (0, "dmb\tsy", operands);
171- return;
172- }
173-
174- if (TARGET_HAVE_DMB_MCR)
175- {
176- emit (0, "mcr\tp15, 0, r0, c7, c10, 5", operands);
177- return;
178- }
179-
180- gcc_unreachable ();
181-}
182-
183-/* Emit the memory barrier instruction, if any, provided by this
184- target. */
185-const char *
186-arm_output_memory_barrier (rtx *operands)
187-{
188- arm_process_output_memory_barrier (arm_emit, operands);
189- return "";
190-}
191-
192-/* Helper to figure out the instruction suffix required on ldrex/strex
193- for operations on an object of the specified mode. */
194-static const char *
195-arm_ldrex_suffix (enum machine_mode mode)
196-{
197- switch (mode)
198- {
199- case QImode: return "b";
200- case HImode: return "h";
201- case SImode: return "";
202- case DImode: return "d";
203- default:
204- gcc_unreachable ();
205- }
206- return "";
207-}
208-
209-/* Emit an ldrex{b,h,d, } instruction appropriate for the specified
210- mode. */
211-static void
212-arm_output_ldrex (emit_f emit,
213- enum machine_mode mode,
214- rtx target,
215- rtx memory)
216-{
217- const char *suffix = arm_ldrex_suffix (mode);
218- rtx operands[2];
219-
220- operands[0] = target;
221- operands[1] = memory;
222- arm_output_asm_insn (emit, 0, operands, "ldrex%s\t%%0, %%C1", suffix);
223-}
224-
225-/* Emit a strex{b,h,d, } instruction appropriate for the specified
226- mode. */
227-static void
228-arm_output_strex (emit_f emit,
229- enum machine_mode mode,
230- const char *cc,
231- rtx result,
232- rtx value,
233- rtx memory)
234-{
235- const char *suffix = arm_ldrex_suffix (mode);
236- rtx operands[3];
237-
238- operands[0] = result;
239- operands[1] = value;
240- operands[2] = memory;
241- arm_output_asm_insn (emit, 0, operands, "strex%s%s\t%%0, %%1, %%C2", suffix,
242- cc);
243-}
244-
245-/* Helper to emit a two operand instruction. */
246-static void
247-arm_output_op2 (emit_f emit, const char *mnemonic, rtx d, rtx s)
248-{
249- rtx operands[2];
250-
251- operands[0] = d;
252- operands[1] = s;
253- arm_output_asm_insn (emit, 0, operands, "%s\t%%0, %%1", mnemonic);
254-}
255-
256-/* Helper to emit a three operand instruction. */
257-static void
258-arm_output_op3 (emit_f emit, const char *mnemonic, rtx d, rtx a, rtx b)
259-{
260- rtx operands[3];
261-
262- operands[0] = d;
263- operands[1] = a;
264- operands[2] = b;
265- arm_output_asm_insn (emit, 0, operands, "%s\t%%0, %%1, %%2", mnemonic);
266-}
267-
268-/* Emit a load store exclusive synchronization loop.
269-
270- do
271- old_value = [mem]
272- if old_value != required_value
273- break;
274- t1 = sync_op (old_value, new_value)
275- [mem] = t1, t2 = [0|1]
276- while ! t2
277-
278- Note:
279- t1 == t2 is not permitted
280- t1 == old_value is permitted
281-
282- required_value:
283-
284- RTX register or const_int representing the required old_value for
285- the modify to continue, if NULL no comparsion is performed. */
286-static void
287-arm_output_sync_loop (emit_f emit,
288- enum machine_mode mode,
289- rtx old_value,
290- rtx memory,
291- rtx required_value,
292- rtx new_value,
293- rtx t1,
294- rtx t2,
295- enum attr_sync_op sync_op,
296- int early_barrier_required)
297-{
298- rtx operands[1];
299-
300- gcc_assert (t1 != t2);
301-
302- if (early_barrier_required)
303- arm_process_output_memory_barrier (emit, NULL);
304-
305- arm_output_asm_insn (emit, 1, operands, "%sLSYT%%=:", LOCAL_LABEL_PREFIX);
306-
307- arm_output_ldrex (emit, mode, old_value, memory);
308-
309- if (required_value)
310- {
311- rtx operands[2];
312-
313- operands[0] = old_value;
314- operands[1] = required_value;
315- arm_output_asm_insn (emit, 0, operands, "cmp\t%%0, %%1");
316- arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYB%%=", LOCAL_LABEL_PREFIX);
317- }
318-
319- switch (sync_op)
320- {
321- case SYNC_OP_ADD:
322- arm_output_op3 (emit, "add", t1, old_value, new_value);
323- break;
324-
325- case SYNC_OP_SUB:
326- arm_output_op3 (emit, "sub", t1, old_value, new_value);
327- break;
328-
329- case SYNC_OP_IOR:
330- arm_output_op3 (emit, "orr", t1, old_value, new_value);
331- break;
332-
333- case SYNC_OP_XOR:
334- arm_output_op3 (emit, "eor", t1, old_value, new_value);
335- break;
336-
337- case SYNC_OP_AND:
338- arm_output_op3 (emit,"and", t1, old_value, new_value);
339- break;
340-
341- case SYNC_OP_NAND:
342- arm_output_op3 (emit, "and", t1, old_value, new_value);
343- arm_output_op2 (emit, "mvn", t1, t1);
344- break;
345-
346- case SYNC_OP_NONE:
347- t1 = new_value;
348- break;
349- }
350-
351- arm_output_strex (emit, mode, "", t2, t1, memory);
352- operands[0] = t2;
353- arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
354- arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=", LOCAL_LABEL_PREFIX);
355-
356- arm_process_output_memory_barrier (emit, NULL);
357- arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
358-}
359-
360-static rtx
361-arm_get_sync_operand (rtx *operands, int index, rtx default_value)
362-{
363- if (index > 0)
364- default_value = operands[index - 1];
365-
366- return default_value;
367-}
368-
369-#define FETCH_SYNC_OPERAND(NAME, DEFAULT) \
370- arm_get_sync_operand (operands, (int) get_attr_sync_##NAME (insn), DEFAULT);
371-
372-/* Extract the operands for a synchroniztion instruction from the
373- instructions attributes and emit the instruction. */
374-static void
375-arm_process_output_sync_insn (emit_f emit, rtx insn, rtx *operands)
376-{
377- rtx result, memory, required_value, new_value, t1, t2;
378- int early_barrier;
379- enum machine_mode mode;
380- enum attr_sync_op sync_op;
381-
382- result = FETCH_SYNC_OPERAND(result, 0);
383- memory = FETCH_SYNC_OPERAND(memory, 0);
384- required_value = FETCH_SYNC_OPERAND(required_value, 0);
385- new_value = FETCH_SYNC_OPERAND(new_value, 0);
386- t1 = FETCH_SYNC_OPERAND(t1, 0);
387- t2 = FETCH_SYNC_OPERAND(t2, 0);
388- early_barrier =
389- get_attr_sync_release_barrier (insn) == SYNC_RELEASE_BARRIER_YES;
390- sync_op = get_attr_sync_op (insn);
391- mode = GET_MODE (memory);
392-
393- arm_output_sync_loop (emit, mode, result, memory, required_value,
394- new_value, t1, t2, sync_op, early_barrier);
395-}
396-
397-/* Emit a synchronization instruction loop. */
398-const char *
399-arm_output_sync_insn (rtx insn, rtx *operands)
400-{
401- arm_process_output_sync_insn (arm_emit, insn, operands);
402- return "";
403-}
404-
405-/* Count the number of machine instruction that will be emitted for a
406- synchronization instruction. Note that the emitter used does not
407- emit instructions, it just counts instructions being carefull not
408- to count labels. */
409-unsigned int
410-arm_sync_loop_insns (rtx insn, rtx *operands)
411-{
412- arm_insn_count = 0;
413- arm_process_output_sync_insn (arm_count, insn, operands);
414- return arm_insn_count;
415-}
416-
417-/* Helper to call a target sync instruction generator, dealing with
418- the variation in operands required by the different generators. */
419-static rtx
420-arm_call_generator (struct arm_sync_generator *generator, rtx old_value,
421- rtx memory, rtx required_value, rtx new_value)
422-{
423- switch (generator->op)
424- {
425- case arm_sync_generator_omn:
426- gcc_assert (! required_value);
427- return generator->u.omn (old_value, memory, new_value);
428-
429- case arm_sync_generator_omrn:
430- gcc_assert (required_value);
431- return generator->u.omrn (old_value, memory, required_value, new_value);
432- }
433-
434- return NULL;
435-}
436-
437-/* Expand a synchronization loop. The synchronization loop is expanded
438- as an opaque block of instructions in order to ensure that we do
439- not subsequently get extraneous memory accesses inserted within the
440- critical region. The exclusive access property of ldrex/strex is
441- only guaranteed in there are no intervening memory accesses. */
442-void
443-arm_expand_sync (enum machine_mode mode,
444- struct arm_sync_generator *generator,
445- rtx target, rtx memory, rtx required_value, rtx new_value)
446-{
447- if (target == NULL)
448- target = gen_reg_rtx (mode);
449-
450- memory = arm_legitimize_sync_memory (memory);
451- if (mode != SImode)
452- {
453- rtx load_temp = gen_reg_rtx (SImode);
454-
455- if (required_value)
456- required_value = convert_modes (SImode, mode, required_value, true);
457-
458- new_value = convert_modes (SImode, mode, new_value, true);
459- emit_insn (arm_call_generator (generator, load_temp, memory,
460- required_value, new_value));
461- emit_move_insn (target, gen_lowpart (mode, load_temp));
462- }
463- else
464- {
465- emit_insn (arm_call_generator (generator, target, memory, required_value,
466- new_value));
467- }
468-}
469-
470 #include "gt-arm.h"
471Index: gcc-4.5/gcc/config/arm/arm.h
472===================================================================
473--- gcc-4.5.orig/gcc/config/arm/arm.h
474+++ gcc-4.5/gcc/config/arm/arm.h
475@@ -128,24 +128,6 @@ enum target_cpus
476 /* The processor for which instructions should be scheduled. */
477 extern enum processor_type arm_tune;
478
479-enum arm_sync_generator_tag
480- {
481- arm_sync_generator_omn,
482- arm_sync_generator_omrn
483- };
484-
485-/* Wrapper to pass around a polymorphic pointer to a sync instruction
486- generator and. */
487-struct arm_sync_generator
488-{
489- enum arm_sync_generator_tag op;
490- union
491- {
492- rtx (* omn) (rtx, rtx, rtx);
493- rtx (* omrn) (rtx, rtx, rtx, rtx);
494- } u;
495-};
496-
497 typedef enum arm_cond_code
498 {
499 ARM_EQ = 0, ARM_NE, ARM_CS, ARM_CC, ARM_MI, ARM_PL, ARM_VS, ARM_VC,
500@@ -290,20 +272,6 @@ extern void (*arm_lang_output_object_att
501 for Thumb-2. */
502 #define TARGET_UNIFIED_ASM TARGET_THUMB2
503
504-/* Nonzero if this chip provides the DMB instruction. */
505-#define TARGET_HAVE_DMB (arm_arch7)
506-
507-/* Nonzero if this chip implements a memory barrier via CP15. */
508-#define TARGET_HAVE_DMB_MCR (arm_arch6k && ! TARGET_HAVE_DMB)
509-
510-/* Nonzero if this chip implements a memory barrier instruction. */
511-#define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
512-
513-/* Nonzero if this chip supports ldrex and strex */
514-#define TARGET_HAVE_LDREX ((arm_arch6 && TARGET_ARM) || arm_arch7)
515-
516-/* Nonzero if this chip supports ldrex{bhd} and strex{bhd}. */
517-#define TARGET_HAVE_LDREXBHD ((arm_arch6k && TARGET_ARM) || arm_arch7)
518
519 /* True iff the full BPABI is being used. If TARGET_BPABI is true,
520 then TARGET_AAPCS_BASED must be true -- but the converse does not
521@@ -437,12 +405,6 @@ extern int arm_arch5e;
522 /* Nonzero if this chip supports the ARM Architecture 6 extensions. */
523 extern int arm_arch6;
524
525-/* Nonzero if this chip supports the ARM Architecture 6k extensions. */
526-extern int arm_arch6k;
527-
528-/* Nonzero if this chip supports the ARM Architecture 7 extensions. */
529-extern int arm_arch7;
530-
531 /* Nonzero if instructions not present in the 'M' profile can be used. */
532 extern int arm_arch_notm;
533
534Index: gcc-4.5/gcc/config/arm/arm.md
535===================================================================
536--- gcc-4.5.orig/gcc/config/arm/arm.md
537+++ gcc-4.5/gcc/config/arm/arm.md
538@@ -103,7 +103,6 @@
539 (UNSPEC_RBIT 26) ; rbit operation.
540 (UNSPEC_SYMBOL_OFFSET 27) ; The offset of the start of the symbol from
541 ; another symbolic address.
542- (UNSPEC_MEMORY_BARRIER 28) ; Represent a memory barrier.
543 ]
544 )
545
546@@ -140,11 +139,6 @@
547 (VUNSPEC_ALIGN32 16) ; Used to force 32-byte alignment.
548 (VUNSPEC_EH_RETURN 20); Use to override the return address for exception
549 ; handling.
550- (VUNSPEC_SYNC_COMPARE_AND_SWAP 21) ; Represent an atomic compare swap.
551- (VUNSPEC_SYNC_LOCK 22) ; Represent a sync_lock_test_and_set.
552- (VUNSPEC_SYNC_OP 23) ; Represent a sync_<op>
553- (VUNSPEC_SYNC_NEW_OP 24) ; Represent a sync_new_<op>
554- (VUNSPEC_SYNC_OLD_OP 25) ; Represent a sync_old_<op>
555 ]
556 )
557
558@@ -169,21 +163,8 @@
559 (define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp"
560 (const (symbol_ref "arm_fpu_attr")))
561
562-(define_attr "sync_result" "none,0,1,2,3,4,5" (const_string "none"))
563-(define_attr "sync_memory" "none,0,1,2,3,4,5" (const_string "none"))
564-(define_attr "sync_required_value" "none,0,1,2,3,4,5" (const_string "none"))
565-(define_attr "sync_new_value" "none,0,1,2,3,4,5" (const_string "none"))
566-(define_attr "sync_t1" "none,0,1,2,3,4,5" (const_string "none"))
567-(define_attr "sync_t2" "none,0,1,2,3,4,5" (const_string "none"))
568-(define_attr "sync_release_barrier" "yes,no" (const_string "yes"))
569-(define_attr "sync_op" "none,add,sub,ior,xor,and,nand"
570- (const_string "none"))
571-
572 ; LENGTH of an instruction (in bytes)
573-(define_attr "length" ""
574- (cond [(not (eq_attr "sync_memory" "none"))
575- (symbol_ref "arm_sync_loop_insns (insn, operands) * 4")
576- ] (const_int 4)))
577+(define_attr "length" "" (const_int 4))
578
579 ; POOL_RANGE is how far away from a constant pool entry that this insn
580 ; can be placed. If the distance is zero, then this insn will never
581@@ -11568,5 +11549,4 @@
582 (include "thumb2.md")
583 ;; Neon patterns
584 (include "neon.md")
585-;; Synchronization Primitives
586-(include "sync.md")
587+
588Index: gcc-4.5/gcc/config/arm/predicates.md
589===================================================================
590--- gcc-4.5.orig/gcc/config/arm/predicates.md
591+++ gcc-4.5/gcc/config/arm/predicates.md
592@@ -573,11 +573,6 @@
593 (and (match_test "TARGET_32BIT")
594 (match_operand 0 "arm_di_operand"))))
595
596-;; True if the operand is memory reference suitable for a ldrex/strex.
597-(define_predicate "arm_sync_memory_operand"
598- (and (match_operand 0 "memory_operand")
599- (match_code "reg" "0")))
600-
601 ;; Predicates for parallel expanders based on mode.
602 (define_special_predicate "vect_par_constant_high"
603 (match_code "parallel")
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99409.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99409.patch
new file mode 100644
index 000000000..39c3ab081
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99409.patch
@@ -0,0 +1,18 @@
12010-09-30 Jie Zhang <jie@codesourcery.com>
2
3 gcc/testsuite/
4 * gcc.target/arm/neon-thumb2-move.c: Add
5 dg-require-effective-target arm_thumb2_ok.
6
7=== modified file 'gcc/testsuite/gcc.target/arm/neon-thumb2-move.c'
8Index: gcc-4.5/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
9===================================================================
10--- gcc-4.5.orig/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
11+++ gcc-4.5/gcc/testsuite/gcc.target/arm/neon-thumb2-move.c
12@@ -1,5 +1,6 @@
13 /* { dg-do compile } */
14 /* { dg-require-effective-target arm_neon_ok } */
15+/* { dg-require-effective-target arm_thumb2_ok } */
16 /* { dg-options "-O2 -mthumb -march=armv7-a" } */
17 /* { dg-add-options arm_neon } */
18
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99410.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99410.patch
new file mode 100644
index 000000000..f2a1c9562
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99410.patch
@@ -0,0 +1,32 @@
12010-10-06 Julian Brown <julian@codesourcery.com>
2
3 gcc/testsuite/
4 * gcc.dg/Warray-bounds-3.c: Add -fno-unroll-loops for ARM.
5 * gcc.dg/vect/vect.exp: Likewise, for all vect tests.
6
7
8=== modified file 'gcc/testsuite/gcc.dg/Warray-bounds-3.c'
9Index: gcc-4.5/gcc/testsuite/gcc.dg/Warray-bounds-3.c
10===================================================================
11--- gcc-4.5.orig/gcc/testsuite/gcc.dg/Warray-bounds-3.c
12+++ gcc-4.5/gcc/testsuite/gcc.dg/Warray-bounds-3.c
13@@ -1,5 +1,7 @@
14 /* { dg-do compile } */
15 /* { dg-options "-O2 -Warray-bounds" } */
16+/* { dg-options "-O2 -Warray-bounds -fno-unroll-loops" { target arm*-*-* } } */
17+
18 /* based on PR 31227 */
19
20 typedef __SIZE_TYPE__ size_t;
21Index: gcc-4.5/gcc/testsuite/gcc.dg/vect/vect.exp
22===================================================================
23--- gcc-4.5.orig/gcc/testsuite/gcc.dg/vect/vect.exp
24+++ gcc-4.5/gcc/testsuite/gcc.dg/vect/vect.exp
25@@ -109,6 +109,7 @@ if [istarget "powerpc-*paired*"] {
26 # default to avoid loss of precision. We must pass -ffast-math to test
27 # vectorization of float operations.
28 lappend DEFAULT_VECTCFLAGS "-ffast-math"
29+ lappend DEFAULT_VECTCFLAGS "-fno-unroll-loops"
30 if [is-effective-target arm_neon_hw] {
31 set dg-do-what-default run
32 } else {
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99411.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99411.patch
new file mode 100644
index 000000000..c9a931686
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99411.patch
@@ -0,0 +1,21 @@
12010-10-08 Jie Zhang <jie@codesourcery.com>
2
3 * config/arm/arm.c (arm_override_options): Disable
4 -fsched-interblock for Cortex-M4.
5
6=== modified file 'gcc/config/arm/arm.c'
7Index: gcc-4.5/gcc/config/arm/arm.c
8===================================================================
9--- gcc-4.5.orig/gcc/config/arm/arm.c
10+++ gcc-4.5/gcc/config/arm/arm.c
11@@ -1913,6 +1913,10 @@ arm_override_options (void)
12 fix_cm3_ldrd = 0;
13 }
14
15+ /* Disable -fsched-interblock for Cortex-M4. */
16+ if (arm_selected_tune->core == cortexm4)
17+ flag_schedule_interblock = 0;
18+
19 if (TARGET_THUMB1 && flag_schedule_insns)
20 {
21 /* Don't warn since it's on by default in -O2. */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99412.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99412.patch
new file mode 100644
index 000000000..c0aabbeb5
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99412.patch
@@ -0,0 +1,316 @@
12010-10-09 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/
6 2010-06-03 Paul Brook <paul@codesourcery.com>
7 * config/arm/arm.c (FL_TUNE): Define.
8 (arm_default_cpu, arm_cpu_select): Remove.
9 (all_cores): Populate core field.
10 (arm_selected_arch, arm_selected_cpu, arm_selected_tune): New.
11 (arm_find_cpu): New function.
12 (arm_handle_option): Lookup cpu/architecture names.
13 (arm_override_options): Cleanup mcpu/march/mtune handling.
14 (arm_file_start): Ditto.
15
16=== modified file 'gcc/config/arm/arm.c'
17Index: gcc-4.5/gcc/config/arm/arm.c
18===================================================================
19--- gcc-4.5.orig/gcc/config/arm/arm.c
20+++ gcc-4.5/gcc/config/arm/arm.c
21@@ -550,9 +550,6 @@ enum processor_type arm_tune = arm_none;
22 /* The current tuning set. */
23 const struct tune_params *current_tune;
24
25-/* The default processor used if not overridden by commandline. */
26-static enum processor_type arm_default_cpu = arm_none;
27-
28 /* Which floating point hardware to schedule for. */
29 int arm_fpu_attr;
30
31@@ -608,6 +605,10 @@ static int thumb_call_reg_needed;
32
33 #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */
34
35+/* Flags that only effect tuning, not available instructions. */
36+#define FL_TUNE (FL_WBUF | FL_VFPV2 | FL_STRONG | FL_LDSCHED \
37+ | FL_CO_PROC)
38+
39 #define FL_FOR_ARCH2 FL_NOTM
40 #define FL_FOR_ARCH3 (FL_FOR_ARCH2 | FL_MODE32)
41 #define FL_FOR_ARCH3M (FL_FOR_ARCH3 | FL_ARCH3M)
42@@ -808,7 +809,7 @@ static const struct processors all_cores
43 {
44 /* ARM Cores */
45 #define ARM_CORE(NAME, IDENT, ARCH, FLAGS, COSTS) \
46- {NAME, arm_none, #ARCH, FLAGS | FL_FOR_ARCH##ARCH, &arm_##COSTS##_tune},
47+ {NAME, IDENT, #ARCH, FLAGS | FL_FOR_ARCH##ARCH, &arm_##COSTS##_tune},
48 #include "arm-cores.def"
49 #undef ARM_CORE
50 {NULL, arm_none, NULL, 0, NULL}
51@@ -850,29 +851,12 @@ static const struct processors all_archi
52 {NULL, arm_none, NULL, 0 , NULL}
53 };
54
55-struct arm_cpu_select
56-{
57- const char * string;
58- const char * name;
59- const struct processors * processors;
60-};
61-
62-/* This is a magic structure. The 'string' field is magically filled in
63- with a pointer to the value specified by the user on the command line
64- assuming that the user has specified such a value. */
65-
66-static struct arm_cpu_select arm_select[] =
67-{
68- /* string name processors */
69- { NULL, "-mcpu=", all_cores },
70- { NULL, "-march=", all_architectures },
71- { NULL, "-mtune=", all_cores }
72-};
73
74-/* Defines representing the indexes into the above table. */
75-#define ARM_OPT_SET_CPU 0
76-#define ARM_OPT_SET_ARCH 1
77-#define ARM_OPT_SET_TUNE 2
78+/* These are populated as commandline arguments are processed, or NULL
79+ if not specified. */
80+static const struct processors *arm_selected_arch;
81+static const struct processors *arm_selected_cpu;
82+static const struct processors *arm_selected_tune;
83
84 /* The name of the preprocessor macro to define for this architecture. */
85
86@@ -1234,6 +1218,24 @@ arm_gimplify_va_arg_expr (tree valist, t
87 return std_gimplify_va_arg_expr (valist, type, pre_p, post_p);
88 }
89
90+/* Lookup NAME in SEL. */
91+
92+static const struct processors *
93+arm_find_cpu (const char *name, const struct processors *sel, const char *desc)
94+{
95+ if (!(name && *name))
96+ return NULL;
97+
98+ for (; sel->name != NULL; sel++)
99+ {
100+ if (streq (name, sel->name))
101+ return sel;
102+ }
103+
104+ error ("bad value (%s) for %s switch", name, desc);
105+ return NULL;
106+}
107+
108 /* Implement TARGET_HANDLE_OPTION. */
109
110 static bool
111@@ -1242,11 +1244,11 @@ arm_handle_option (size_t code, const ch
112 switch (code)
113 {
114 case OPT_march_:
115- arm_select[1].string = arg;
116+ arm_selected_arch = arm_find_cpu(arg, all_architectures, "-march");
117 return true;
118
119 case OPT_mcpu_:
120- arm_select[0].string = arg;
121+ arm_selected_cpu = arm_find_cpu(arg, all_cores, "-mcpu");
122 return true;
123
124 case OPT_mhard_float:
125@@ -1258,7 +1260,7 @@ arm_handle_option (size_t code, const ch
126 return true;
127
128 case OPT_mtune_:
129- arm_select[2].string = arg;
130+ arm_selected_tune = arm_find_cpu(arg, all_cores, "-mtune");
131 return true;
132
133 default:
134@@ -1358,88 +1360,52 @@ void
135 arm_override_options (void)
136 {
137 unsigned i;
138- enum processor_type target_arch_cpu = arm_none;
139- enum processor_type selected_cpu = arm_none;
140
141- /* Set up the flags based on the cpu/architecture selected by the user. */
142- for (i = ARRAY_SIZE (arm_select); i--;)
143+ if (arm_selected_arch)
144 {
145- struct arm_cpu_select * ptr = arm_select + i;
146-
147- if (ptr->string != NULL && ptr->string[0] != '\0')
148- {
149- const struct processors * sel;
150-
151- for (sel = ptr->processors; sel->name != NULL; sel++)
152- if (streq (ptr->string, sel->name))
153- {
154- /* Set the architecture define. */
155- if (i != ARM_OPT_SET_TUNE)
156- sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch);
157-
158- /* Determine the processor core for which we should
159- tune code-generation. */
160- if (/* -mcpu= is a sensible default. */
161- i == ARM_OPT_SET_CPU
162- /* -mtune= overrides -mcpu= and -march=. */
163- || i == ARM_OPT_SET_TUNE)
164- arm_tune = (enum processor_type) (sel - ptr->processors);
165-
166- /* Remember the CPU associated with this architecture.
167- If no other option is used to set the CPU type,
168- we'll use this to guess the most suitable tuning
169- options. */
170- if (i == ARM_OPT_SET_ARCH)
171- target_arch_cpu = sel->core;
172-
173- if (i == ARM_OPT_SET_CPU)
174- selected_cpu = (enum processor_type) (sel - ptr->processors);
175-
176- if (i != ARM_OPT_SET_TUNE)
177- {
178- /* If we have been given an architecture and a processor
179- make sure that they are compatible. We only generate
180- a warning though, and we prefer the CPU over the
181- architecture. */
182- if (insn_flags != 0 && (insn_flags ^ sel->flags))
183- warning (0, "switch -mcpu=%s conflicts with -march= switch",
184- ptr->string);
185-
186- insn_flags = sel->flags;
187- }
188-
189- break;
190- }
191+ if (arm_selected_cpu)
192+ {
193+ /* Check for conflict between mcpu and march */
194+ if ((arm_selected_cpu->flags ^ arm_selected_arch->flags) & ~FL_TUNE)
195+ {
196+ warning (0, "switch -mcpu=%s conflicts with -march=%s switch",
197+ arm_selected_cpu->name, arm_selected_arch->name);
198+ /* -march wins for code generation.
199+ -mcpu wins for default tuning. */
200+ if (!arm_selected_tune)
201+ arm_selected_tune = arm_selected_cpu;
202
203- if (sel->name == NULL)
204- error ("bad value (%s) for %s switch", ptr->string, ptr->name);
205- }
206+ arm_selected_cpu = arm_selected_arch;
207+ }
208+ else
209+ /* -mcpu wins. */
210+ arm_selected_arch = NULL;
211+ }
212+ else
213+ /* Pick a CPU based on the architecture. */
214+ arm_selected_cpu = arm_selected_arch;
215 }
216
217- /* Guess the tuning options from the architecture if necessary. */
218- if (arm_tune == arm_none)
219- arm_tune = target_arch_cpu;
220-
221 /* If the user did not specify a processor, choose one for them. */
222- if (insn_flags == 0)
223+ if (!arm_selected_cpu)
224 {
225 const struct processors * sel;
226 unsigned int sought;
227
228- selected_cpu = (enum processor_type) TARGET_CPU_DEFAULT;
229- if (selected_cpu == arm_none)
230+ arm_selected_cpu = &all_cores[TARGET_CPU_DEFAULT];
231+ if (!arm_selected_cpu->name)
232 {
233 #ifdef SUBTARGET_CPU_DEFAULT
234 /* Use the subtarget default CPU if none was specified by
235 configure. */
236- selected_cpu = (enum processor_type) SUBTARGET_CPU_DEFAULT;
237+ arm_selected_cpu = &all_cores[SUBTARGET_CPU_DEFAULT];
238 #endif
239 /* Default to ARM6. */
240- if (selected_cpu == arm_none)
241- selected_cpu = arm6;
242+ if (arm_selected_cpu->name)
243+ arm_selected_cpu = &all_cores[arm6];
244 }
245- sel = &all_cores[selected_cpu];
246
247+ sel = arm_selected_cpu;
248 insn_flags = sel->flags;
249
250 /* Now check to see if the user has specified some command line
251@@ -1500,17 +1466,21 @@ arm_override_options (void)
252 sel = best_fit;
253 }
254
255- insn_flags = sel->flags;
256+ arm_selected_cpu = sel;
257 }
258- sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch);
259- arm_default_cpu = (enum processor_type) (sel - all_cores);
260- if (arm_tune == arm_none)
261- arm_tune = arm_default_cpu;
262 }
263
264- /* The processor for which we should tune should now have been
265- chosen. */
266- gcc_assert (arm_tune != arm_none);
267+ gcc_assert (arm_selected_cpu);
268+ /* The selected cpu may be an architecture, so lookup tuning by core ID. */
269+ if (!arm_selected_tune)
270+ arm_selected_tune = &all_cores[arm_selected_cpu->core];
271+
272+ sprintf (arm_arch_name, "__ARM_ARCH_%s__", arm_selected_cpu->arch);
273+ insn_flags = arm_selected_cpu->flags;
274+
275+ arm_tune = arm_selected_tune->core;
276+ tune_flags = arm_selected_tune->flags;
277+ current_tune = arm_selected_tune->tune;
278
279 if (arm_tune == cortexa8 && optimize >= 3)
280 {
281@@ -1522,9 +1492,6 @@ arm_override_options (void)
282 align_jumps = 16;
283 }
284
285- tune_flags = all_cores[(int)arm_tune].flags;
286- current_tune = all_cores[(int)arm_tune].tune;
287-
288 if (target_fp16_format_name)
289 {
290 for (i = 0; i < ARRAY_SIZE (all_fp16_formats); i++)
291@@ -1907,7 +1874,7 @@ arm_override_options (void)
292 /* Enable -mfix-cortex-m3-ldrd by default for Cortex-M3 cores. */
293 if (fix_cm3_ldrd == 2)
294 {
295- if (selected_cpu == cortexm3)
296+ if (arm_selected_cpu->core == cortexm3)
297 fix_cm3_ldrd = 1;
298 else
299 fix_cm3_ldrd = 0;
300@@ -21235,13 +21202,10 @@ arm_file_start (void)
301 if (TARGET_BPABI)
302 {
303 const char *fpu_name;
304- if (arm_select[0].string)
305- asm_fprintf (asm_out_file, "\t.cpu %s\n", arm_select[0].string);
306- else if (arm_select[1].string)
307- asm_fprintf (asm_out_file, "\t.arch %s\n", arm_select[1].string);
308+ if (arm_selected_arch)
309+ asm_fprintf (asm_out_file, "\t.arch %s\n", arm_selected_arch->name);
310 else
311- asm_fprintf (asm_out_file, "\t.cpu %s\n",
312- all_cores[arm_default_cpu].name);
313+ asm_fprintf (asm_out_file, "\t.cpu %s\n", arm_selected_cpu->name);
314
315 if (TARGET_SOFT_FLOAT)
316 {
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99413.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99413.patch
new file mode 100644
index 000000000..3f873e7fe
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99413.patch
@@ -0,0 +1,26 @@
12010-10-13 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-04-20 James E. Wilson <wilson@codesourcery.com>
6
7 gcc/
8 PR rtl-optimization/43520
9 * ira-lives.c (ira_implicitly_set_insn_hard_regs): Exclude classes with
10 zero available registers.
11
12=== modified file 'gcc/ira-lives.c'
13Index: gcc-4.5/gcc/ira-lives.c
14===================================================================
15--- gcc-4.5.orig/gcc/ira-lives.c
16+++ gcc-4.5/gcc/ira-lives.c
17@@ -805,6 +805,9 @@ ira_implicitly_set_insn_hard_regs (HARD_
18 ? GENERAL_REGS
19 : REG_CLASS_FROM_CONSTRAINT (c, p));
20 if (cl != NO_REGS
21+ /* There is no register pressure problem if all of the
22+ regs in this class are fixed. */
23+ && ira_available_class_regs[cl] != 0
24 && (ira_available_class_regs[cl]
25 <= ira_reg_class_nregs[cl][mode]))
26 IOR_HARD_REG_SET (*set, reg_class_contents[cl]);
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch
new file mode 100644
index 000000000..3622ac423
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99415.patch
@@ -0,0 +1,46 @@
12010-10-13 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Issue #8615
4
5 Backport from mainline:
6
7 2010-10-12 Chung-Lin Tang <cltang@codesourcery.com>
8
9 gcc/
10 * config/arm/arm.h (ARM_EXPAND_ALIGNMENT): Rename from
11 DATA_ALIGNMENT and add COND parameter. Update comments above.
12 (DATA_ALIGNMENT): Use ARM_EXPAND_ALIGNMENT, with !optimize_size.
13 (LOCAL_ALIGNMENT): Use ARM_EXPAND_ALIGNMENT, with
14 !flag_conserve_stack.
15
16=== modified file 'gcc/config/arm/arm.h'
17Index: gcc-4.5/gcc/config/arm/arm.h
18===================================================================
19--- gcc-4.5.orig/gcc/config/arm/arm.h
20+++ gcc-4.5/gcc/config/arm/arm.h
21@@ -596,15 +596,21 @@ extern int low_irq_latency;
22 /* Align definitions of arrays, unions and structures so that
23 initializations and copies can be made more efficient. This is not
24 ABI-changing, so it only affects places where we can see the
25- definition. */
26-#define DATA_ALIGNMENT(EXP, ALIGN) \
27- ((((ALIGN) < BITS_PER_WORD) \
28+ definition. Increasing the alignment tends to introduce padding,
29+ so don't do this when optimizing for size/conserving stack space. */
30+#define ARM_EXPAND_ALIGNMENT(COND, EXP, ALIGN) \
31+ (((COND) && ((ALIGN) < BITS_PER_WORD) \
32 && (TREE_CODE (EXP) == ARRAY_TYPE \
33 || TREE_CODE (EXP) == UNION_TYPE \
34 || TREE_CODE (EXP) == RECORD_TYPE)) ? BITS_PER_WORD : (ALIGN))
35
36+/* Align global data. */
37+#define DATA_ALIGNMENT(EXP, ALIGN) \
38+ ARM_EXPAND_ALIGNMENT(!optimize_size, EXP, ALIGN)
39+
40 /* Similarly, make sure that objects on the stack are sensibly aligned. */
41-#define LOCAL_ALIGNMENT(EXP, ALIGN) DATA_ALIGNMENT(EXP, ALIGN)
42+#define LOCAL_ALIGNMENT(EXP, ALIGN) \
43+ ARM_EXPAND_ALIGNMENT(!flag_conserve_stack, EXP, ALIGN)
44
45 /* Setting STRUCTURE_SIZE_BOUNDARY to 32 produces more efficient code, but the
46 value set in previous versions of this toolchain was 8, which produces more
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99416.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99416.patch
new file mode 100644
index 000000000..72a221b1d
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99416.patch
@@ -0,0 +1,130 @@
12010-10-15 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-10-15 Chung-Lin Tang <cltang@codesourcery.com>
6
7 gcc/
8 * ifcvt.c (find_active_insn_before): New function.
9 (find_active_insn_after): New function.
10 (cond_exec_process_if_block): Use new functions to replace
11 prev_active_insn() and next_active_insn().
12
13 gcc/testsuite/
14 * gcc.dg/20101010-1.c: New testcase.
15
16=== modified file 'gcc/ifcvt.c'
17Index: gcc-4.5/gcc/ifcvt.c
18===================================================================
19--- gcc-4.5.orig/gcc/ifcvt.c
20+++ gcc-4.5/gcc/ifcvt.c
21@@ -88,6 +88,8 @@ static int count_bb_insns (const_basic_b
22 static bool cheap_bb_rtx_cost_p (const_basic_block, int);
23 static rtx first_active_insn (basic_block);
24 static rtx last_active_insn (basic_block, int);
25+static rtx find_active_insn_before (basic_block, rtx);
26+static rtx find_active_insn_after (basic_block, rtx);
27 static basic_block block_fallthru (basic_block);
28 static int cond_exec_process_insns (ce_if_block_t *, rtx, rtx, rtx, rtx, int);
29 static rtx cond_exec_get_condition (rtx);
30@@ -230,6 +232,48 @@ last_active_insn (basic_block bb, int sk
31 return insn;
32 }
33
34+/* Return the active insn before INSN inside basic block CURR_BB. */
35+
36+static rtx
37+find_active_insn_before (basic_block curr_bb, rtx insn)
38+{
39+ if (!insn || insn == BB_HEAD (curr_bb))
40+ return NULL_RTX;
41+
42+ while ((insn = PREV_INSN (insn)) != NULL_RTX)
43+ {
44+ if (NONJUMP_INSN_P (insn) || JUMP_P (insn) || CALL_P (insn))
45+ break;
46+
47+ /* No other active insn all the way to the start of the basic block. */
48+ if (insn == BB_HEAD (curr_bb))
49+ return NULL_RTX;
50+ }
51+
52+ return insn;
53+}
54+
55+/* Return the active insn after INSN inside basic block CURR_BB. */
56+
57+static rtx
58+find_active_insn_after (basic_block curr_bb, rtx insn)
59+{
60+ if (!insn || insn == BB_END (curr_bb))
61+ return NULL_RTX;
62+
63+ while ((insn = NEXT_INSN (insn)) != NULL_RTX)
64+ {
65+ if (NONJUMP_INSN_P (insn) || JUMP_P (insn) || CALL_P (insn))
66+ break;
67+
68+ /* No other active insn all the way to the end of the basic block. */
69+ if (insn == BB_END (curr_bb))
70+ return NULL_RTX;
71+ }
72+
73+ return insn;
74+}
75+
76 /* Return the basic block reached by falling though the basic block BB. */
77
78 static basic_block
79@@ -448,9 +492,9 @@ cond_exec_process_if_block (ce_if_block_
80 if (n_matching > 0)
81 {
82 if (then_end)
83- then_end = prev_active_insn (then_first_tail);
84+ then_end = find_active_insn_before (then_bb, then_first_tail);
85 if (else_end)
86- else_end = prev_active_insn (else_first_tail);
87+ else_end = find_active_insn_before (else_bb, else_first_tail);
88 n_insns -= 2 * n_matching;
89 }
90
91@@ -488,9 +532,9 @@ cond_exec_process_if_block (ce_if_block_
92 if (n_matching > 0)
93 {
94 if (then_start)
95- then_start = next_active_insn (then_last_head);
96+ then_start = find_active_insn_after (then_bb, then_last_head);
97 if (else_start)
98- else_start = next_active_insn (else_last_head);
99+ else_start = find_active_insn_after (else_bb, else_last_head);
100 n_insns -= 2 * n_matching;
101 }
102 }
103@@ -646,7 +690,7 @@ cond_exec_process_if_block (ce_if_block_
104 {
105 rtx from = then_first_tail;
106 if (!INSN_P (from))
107- from = next_active_insn (from);
108+ from = find_active_insn_after (then_bb, from);
109 delete_insn_chain (from, BB_END (then_bb), false);
110 }
111 if (else_last_head)
112Index: gcc-4.5/gcc/testsuite/gcc.dg/20101010-1.c
113===================================================================
114--- /dev/null
115+++ gcc-4.5/gcc/testsuite/gcc.dg/20101010-1.c
116@@ -0,0 +1,14 @@
117+/* { dg-do compile } */
118+/* { dg-options "-O2 -fno-crossjumping" } */
119+
120+int foo (void)
121+{
122+ int len;
123+ if (bar1 (&len))
124+ {
125+ char devpath [len];
126+ if (bar2 (devpath) == len)
127+ return len;
128+ }
129+ return -1;
130+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99417.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99417.patch
new file mode 100644
index 000000000..2ad7e6968
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99417.patch
@@ -0,0 +1,53 @@
12010-10-15 Jie Zhang <jie@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/testsuite/
6 2010-10-15 Jie Zhang <jie@codesourcery.com>
7
8 * lib/lto.exp (lto-link-and-maybe-run): Use the default linker
9 script when relocatable linking.
10
11=== modified file 'gcc/testsuite/lib/lto.exp'
12Index: gcc-4.5/gcc/testsuite/lib/lto.exp
13===================================================================
14--- gcc-4.5.orig/gcc/testsuite/lib/lto.exp
15+++ gcc-4.5/gcc/testsuite/lib/lto.exp
16@@ -156,6 +156,7 @@ proc lto-link-and-maybe-run { testname o
17 global testcase
18 global tool
19 global compile_type
20+ global board_info
21
22 # Check that all of the objects were built successfully.
23 foreach obj [split $objlist] {
24@@ -170,10 +171,29 @@ proc lto-link-and-maybe-run { testname o
25 set options ""
26 lappend options "additional_flags=$optall $optfile"
27
28+ set target_board [target_info name]
29+ set relocatable 0
30+
31+ # Some LTO tests do relocatable linking. Some target boards set
32+ # a linker script which can't be used for relocatable linking.
33+ # Use the default linker script instead.
34+ if { [lsearch -exact [split "$optall $optfile"] "-r"] >= 0 } {
35+ set relocatable 1
36+ }
37+
38+ if { $relocatable } {
39+ set saved_ldscript [board_info $target_board ldscript]
40+ set board_info($target_board,ldscript) ""
41+ }
42+
43 # Link the objects into an executable.
44 set comp_output [${tool}_target_compile "$objlist" $dest executable \
45 "$options"]
46
47+ if { $relocatable } {
48+ set board_info($target_board,ldscript) $saved_ldscript
49+ }
50+
51 # Prune unimportant visibility warnings before checking output.
52 set comp_output [lto_prune_warns $comp_output]
53
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99418.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99418.patch
new file mode 100644
index 000000000..3ea7956f0
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99418.patch
@@ -0,0 +1,25 @@
12010-10-20 Yao Qi <yao@codesourcery.com>
2
3 Merge from Sourcery G++ to fix LP:660021
4 2010-10-18 Paul Brook <paul@codesourcery.com>
5
6 * tree-vect-stmts.c (supportable_widening_operation): Check if wide
7 vector type exists.
8
9=== modified file 'gcc/tree-vect-stmts.c'
10Index: gcc-4.5/gcc/tree-vect-stmts.c
11===================================================================
12--- gcc-4.5.orig/gcc/tree-vect-stmts.c
13+++ gcc-4.5/gcc/tree-vect-stmts.c
14@@ -4867,6 +4867,11 @@ supportable_widening_operation (enum tre
15 tree wide_vectype = get_vectype_for_scalar_type (type);
16 enum tree_code c1, c2;
17
18+ /* Check we have a valid vector type for the result. */
19+ if (!wide_vectype)
20+ return false;
21+
22+
23 /* The result of a vectorized widening operation usually requires two vectors
24 (because the widened results do not fit int one vector). The generated
25 vector results would normally be expected to be generated in the same
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99419.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99419.patch
new file mode 100644
index 000000000..cb434082b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99419.patch
@@ -0,0 +1,734 @@
12010-10-22 Julian Brown <julian@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-10-18 Marcus Shawcroft <marcus.shawcroft@arm.com>
6
7 gcc/testsuite/
8 * gcc.target/arm/synchronize.c: Permit dmb or mcr in assembler scan.
9
102010-10-14 Julian Brown <julian@codesourcery.com>
11
12 Backport from mainline:
13
14 2010-08-18 Marcus Shawcroft <marcus.shawcroft@arm.com>
15
16 gcc/
17 * config/arm/arm-protos.h (arm_expand_sync): New.
18 (arm_output_memory_barrier, arm_output_sync_insn): New.
19 (arm_sync_loop_insns): New.
20 * config/arm/arm.c (FL_ARCH7): New.
21 (FL_FOR_ARCH7): Include FL_ARCH7.
22 (arm_arch7): New.
23 (arm_print_operand): Support %C markup.
24 (arm_legitimize_sync_memory): New.
25 (arm_emit, arm_insn_count, arm_count, arm_output_asm_insn): New.
26 (arm_process_output_memory_barrier, arm_output_memory_barrier): New.
27 (arm_ldrex_suffix, arm_output_ldrex, arm_output_strex): New.
28 (arm_output_op2, arm_output_op3, arm_output_sync_loop): New.
29 (arm_get_sync_operand, FETCH_SYNC_OPERAND): New.
30 (arm_process_output_sync_insn, arm_output_sync_insn): New.
31 (arm_sync_loop_insns,arm_call_generator, arm_expand_sync): New.
32 * config/arm/arm.h (struct arm_sync_generator): New.
33 (TARGET_HAVE_DMB, TARGET_HAVE_DMB_MCR): New.
34 (TARGET_HAVE_MEMORY_BARRIER): New.
35 (TARGET_HAVE_LDREX, TARGET_HAVE_LDREXBHD): New.
36 * config/arm/arm.md: Include sync.md.
37 (UNSPEC_MEMORY_BARRIER): New.
38 (VUNSPEC_SYNC_COMPARE_AND_SWAP, VUNSPEC_SYNC_LOCK): New.
39 (VUNSPEC_SYNC_OP):New.
40 (VUNSPEC_SYNC_NEW_OP, VUNSPEC_SYNC_OLD_OP): New.
41 (sync_result, sync_memory, sync_required_value): New attributes.
42 (sync_new_value, sync_t1, sync_t2): Likewise.
43 (sync_release_barrier, sync_op): Likewise.
44 (length): Add logic to length attribute defintion to call
45 arm_sync_loop_insns when appropriate.
46 * config/arm/sync.md: New file.
47
48 2010-09-02 Marcus Shawcroft <marcus.shawcroft@arm.com>
49
50 gcc/
51 * config/arm/predicates.md (arm_sync_memory_operand): New.
52 * config/arm/sync.md (arm_sync_compare_and_swapsi): Change predicate
53 to arm_sync_memory_operand and constraint to Q.
54 (arm_sync_compare_and_swap<mode>): Likewise.
55 (arm_sync_compare_and_swap<mode>): Likewise.
56 (arm_sync_lock_test_and_setsi): Likewise.
57 (arm_sync_lock_test_and_set<mode>): Likewise.
58 (arm_sync_new_<sync_optab>si): Likewise.
59 (arm_sync_new_nandsi): Likewise.
60 (arm_sync_new_<sync_optab><mode>): Likewise.
61 (arm_sync_new_nand<mode>): Likewise.
62 (arm_sync_old_<sync_optab>si): Likewise.
63 (arm_sync_old_nandsi): Likewise.
64 (arm_sync_old_<sync_optab><mode>): Likewise.
65 (arm_sync_old_nand<mode>): Likewise.
66
67 2010-09-13 Marcus Shawcroft <marcus.shawcroft@arm.com>
68
69 gcc/
70 * config/arm/arm.md: (define_attr "conds"): Update comment.
71 * config/arm/sync.md (arm_sync_compare_and_swapsi): Change
72 conds attribute to clob.
73 (arm_sync_compare_and_swapsi): Likewise.
74 (arm_sync_compare_and_swap<mode>): Likewise.
75 (arm_sync_lock_test_and_setsi): Likewise.
76 (arm_sync_lock_test_and_set<mode>): Likewise.
77 (arm_sync_new_<sync_optab>si): Likewise.
78 (arm_sync_new_nandsi): Likewise.
79 (arm_sync_new_<sync_optab><mode>): Likewise.
80 (arm_sync_new_nand<mode>): Likewise.
81 (arm_sync_old_<sync_optab>si): Likewise.
82 (arm_sync_old_nandsi): Likewise.
83 (arm_sync_old_<sync_optab><mode>): Likewise.
84 (arm_sync_old_nand<mode>): Likewise.
85
86 2010-09-13 Marcus Shawcroft <marcus.shawcroft@arm.com>
87
88 gcc/testsuite/
89 * gcc.target/arm/sync-1.c: New.
90
91
92 Backport from FSF:
93
94 gcc/
95 2010-08-18 Marcus Shawcroft <marcus.shawcroft@arm.com>
96 * config/arm/arm-protos.h (arm_expand_sync): New.
97 (arm_output_memory_barrier, arm_output_sync_insn): New.
98 (arm_sync_loop_insns): New.
99 * config/arm/arm.c (FL_ARCH7): New.
100 (FL_FOR_ARCH7): Include FL_ARCH7.
101 (arm_arch7): New.
102 (arm_print_operand): Support %C markup.
103 (arm_legitimize_sync_memory): New.
104 (arm_emit, arm_insn_count, arm_count, arm_output_asm_insn): New.
105 (arm_process_output_memory_barrier, arm_output_memory_barrier): New.
106 (arm_ldrex_suffix, arm_output_ldrex, arm_output_strex): New.
107 (arm_output_op2, arm_output_op3, arm_output_sync_loop): New.
108 (arm_get_sync_operand, FETCH_SYNC_OPERAND): New.
109 (arm_process_output_sync_insn, arm_output_sync_insn): New.
110 (arm_sync_loop_insns,arm_call_generator, arm_expand_sync): New.
111 * config/arm/arm.h (struct arm_sync_generator): New.
112 (TARGET_HAVE_DMB, TARGET_HAVE_DMB_MCR): New.
113 (TARGET_HAVE_MEMORY_BARRIER): New.
114 (TARGET_HAVE_LDREX, TARGET_HAVE_LDREXBHD): New.
115 * config/arm/arm.md: Include sync.md.
116 (UNSPEC_MEMORY_BARRIER): New.
117 (VUNSPEC_SYNC_COMPARE_AND_SWAP, VUNSPEC_SYNC_LOCK): New.
118 (VUNSPEC_SYNC_OP):New.
119 (VUNSPEC_SYNC_NEW_OP, VUNSPEC_SYNC_OLD_OP): New.
120 (sync_result, sync_memory, sync_required_value): New attributes.
121 (sync_new_value, sync_t1, sync_t2): Likewise.
122 (sync_release_barrier, sync_op): Likewise.
123 (length): Add logic to length attribute defintion to call
124 arm_sync_loop_insns when appropriate.
125 * config/arm/sync.md: New file.
126
127 gcc/
128 2010-09-02 Marcus Shawcroft <marcus.shawcroft@arm.com>
129 * config/arm/predicates.md (arm_sync_memory_operand): New.
130 * config/arm/sync.md (arm_sync_compare_and_swapsi): Change predicate
131 to arm_sync_memory_operand and constraint to Q.
132 (arm_sync_compare_and_swap<mode>): Likewise.
133 (arm_sync_compare_and_swap<mode>): Likewise.
134 (arm_sync_lock_test_and_setsi): Likewise.
135 (arm_sync_lock_test_and_set<mode>): Likewise.
136 (arm_sync_new_<sync_optab>si): Likewise.
137 (arm_sync_new_nandsi): Likewise.
138 (arm_sync_new_<sync_optab><mode>): Likewise.
139 (arm_sync_new_nand<mode>): Likewise.
140 (arm_sync_old_<sync_optab>si): Likewise.
141 (arm_sync_old_nandsi): Likewise.
142 (arm_sync_old_<sync_optab><mode>): Likewise.
143 (arm_sync_old_nand<mode>): Likewise.
144
145=== modified file 'gcc/config/arm/arm-protos.h'
146Index: gcc-4.5/gcc/config/arm/arm-protos.h
147===================================================================
148--- gcc-4.5.orig/gcc/config/arm/arm-protos.h
149+++ gcc-4.5/gcc/config/arm/arm-protos.h
150@@ -151,6 +151,11 @@ extern const char *vfp_output_fstmd (rtx
151 extern void arm_set_return_address (rtx, rtx);
152 extern int arm_eliminable_register (rtx);
153 extern const char *arm_output_shift(rtx *, int);
154+extern void arm_expand_sync (enum machine_mode, struct arm_sync_generator *,
155+ rtx, rtx, rtx, rtx);
156+extern const char *arm_output_memory_barrier (rtx *);
157+extern const char *arm_output_sync_insn (rtx, rtx *);
158+extern unsigned int arm_sync_loop_insns (rtx , rtx *);
159
160 extern bool arm_output_addr_const_extra (FILE *, rtx);
161
162Index: gcc-4.5/gcc/config/arm/arm.c
163===================================================================
164--- gcc-4.5.orig/gcc/config/arm/arm.c
165+++ gcc-4.5/gcc/config/arm/arm.c
166@@ -602,6 +602,7 @@ static int thumb_call_reg_needed;
167 #define FL_NEON (1 << 20) /* Neon instructions. */
168 #define FL_ARCH7EM (1 << 21) /* Instructions present in the ARMv7E-M
169 architecture. */
170+#define FL_ARCH7 (1 << 22) /* Architecture 7. */
171
172 #define FL_IWMMXT (1 << 29) /* XScale v2 or "Intel Wireless MMX technology". */
173
174@@ -626,7 +627,7 @@ static int thumb_call_reg_needed;
175 #define FL_FOR_ARCH6ZK FL_FOR_ARCH6K
176 #define FL_FOR_ARCH6T2 (FL_FOR_ARCH6 | FL_THUMB2)
177 #define FL_FOR_ARCH6M (FL_FOR_ARCH6 & ~FL_NOTM)
178-#define FL_FOR_ARCH7 (FL_FOR_ARCH6T2 &~ FL_NOTM)
179+#define FL_FOR_ARCH7 ((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
180 #define FL_FOR_ARCH7A (FL_FOR_ARCH7 | FL_NOTM | FL_ARCH6K)
181 #define FL_FOR_ARCH7R (FL_FOR_ARCH7A | FL_DIV)
182 #define FL_FOR_ARCH7M (FL_FOR_ARCH7 | FL_DIV)
183@@ -664,6 +665,9 @@ int arm_arch6 = 0;
184 /* Nonzero if this chip supports the ARM 6K extensions. */
185 int arm_arch6k = 0;
186
187+/* Nonzero if this chip supports the ARM 7 extensions. */
188+int arm_arch7 = 0;
189+
190 /* Nonzero if instructions not present in the 'M' profile can be used. */
191 int arm_arch_notm = 0;
192
193@@ -1602,6 +1606,7 @@ arm_override_options (void)
194 arm_arch6 = (insn_flags & FL_ARCH6) != 0;
195 arm_arch6k = (insn_flags & FL_ARCH6K) != 0;
196 arm_arch_notm = (insn_flags & FL_NOTM) != 0;
197+ arm_arch7 = (insn_flags & FL_ARCH7) != 0;
198 arm_arch7em = (insn_flags & FL_ARCH7EM) != 0;
199 arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
200 arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
201@@ -16562,6 +16567,17 @@ arm_print_operand (FILE *stream, rtx x,
202 }
203 return;
204
205+ case 'C':
206+ {
207+ rtx addr;
208+
209+ gcc_assert (GET_CODE (x) == MEM);
210+ addr = XEXP (x, 0);
211+ gcc_assert (GET_CODE (addr) == REG);
212+ asm_fprintf (stream, "[%r]", REGNO (addr));
213+ }
214+ return;
215+
216 /* Translate an S register number into a D register number and element index. */
217 case 'y':
218 {
219@@ -22793,4 +22809,372 @@ arm_builtin_support_vector_misalignment
220 is_packed);
221 }
222
223+/* Legitimize a memory reference for sync primitive implemented using
224+ ldrex / strex. We currently force the form of the reference to be
225+ indirect without offset. We do not yet support the indirect offset
226+ addressing supported by some ARM targets for these
227+ instructions. */
228+static rtx
229+arm_legitimize_sync_memory (rtx memory)
230+{
231+ rtx addr = force_reg (Pmode, XEXP (memory, 0));
232+ rtx legitimate_memory = gen_rtx_MEM (GET_MODE (memory), addr);
233+
234+ set_mem_alias_set (legitimate_memory, ALIAS_SET_MEMORY_BARRIER);
235+ MEM_VOLATILE_P (legitimate_memory) = MEM_VOLATILE_P (memory);
236+ return legitimate_memory;
237+}
238+
239+/* An instruction emitter. */
240+typedef void (* emit_f) (int label, const char *, rtx *);
241+
242+/* An instruction emitter that emits via the conventional
243+ output_asm_insn. */
244+static void
245+arm_emit (int label ATTRIBUTE_UNUSED, const char *pattern, rtx *operands)
246+{
247+ output_asm_insn (pattern, operands);
248+}
249+
250+/* Count the number of emitted synchronization instructions. */
251+static unsigned arm_insn_count;
252+
253+/* An emitter that counts emitted instructions but does not actually
254+ emit instruction into the the instruction stream. */
255+static void
256+arm_count (int label,
257+ const char *pattern ATTRIBUTE_UNUSED,
258+ rtx *operands ATTRIBUTE_UNUSED)
259+{
260+ if (! label)
261+ ++ arm_insn_count;
262+}
263+
264+/* Construct a pattern using conventional output formatting and feed
265+ it to output_asm_insn. Provides a mechanism to construct the
266+ output pattern on the fly. Note the hard limit on the pattern
267+ buffer size. */
268+static void
269+arm_output_asm_insn (emit_f emit, int label, rtx *operands,
270+ const char *pattern, ...)
271+{
272+ va_list ap;
273+ char buffer[256];
274+
275+ va_start (ap, pattern);
276+ vsprintf (buffer, pattern, ap);
277+ va_end (ap);
278+ emit (label, buffer, operands);
279+}
280+
281+/* Emit the memory barrier instruction, if any, provided by this
282+ target to a specified emitter. */
283+static void
284+arm_process_output_memory_barrier (emit_f emit, rtx *operands)
285+{
286+ if (TARGET_HAVE_DMB)
287+ {
288+ /* Note we issue a system level barrier. We should consider
289+ issuing a inner shareabilty zone barrier here instead, ie.
290+ "DMB ISH". */
291+ emit (0, "dmb\tsy", operands);
292+ return;
293+ }
294+
295+ if (TARGET_HAVE_DMB_MCR)
296+ {
297+ emit (0, "mcr\tp15, 0, r0, c7, c10, 5", operands);
298+ return;
299+ }
300+
301+ gcc_unreachable ();
302+}
303+
304+/* Emit the memory barrier instruction, if any, provided by this
305+ target. */
306+const char *
307+arm_output_memory_barrier (rtx *operands)
308+{
309+ arm_process_output_memory_barrier (arm_emit, operands);
310+ return "";
311+}
312+
313+/* Helper to figure out the instruction suffix required on ldrex/strex
314+ for operations on an object of the specified mode. */
315+static const char *
316+arm_ldrex_suffix (enum machine_mode mode)
317+{
318+ switch (mode)
319+ {
320+ case QImode: return "b";
321+ case HImode: return "h";
322+ case SImode: return "";
323+ case DImode: return "d";
324+ default:
325+ gcc_unreachable ();
326+ }
327+ return "";
328+}
329+
330+/* Emit an ldrex{b,h,d, } instruction appropriate for the specified
331+ mode. */
332+static void
333+arm_output_ldrex (emit_f emit,
334+ enum machine_mode mode,
335+ rtx target,
336+ rtx memory)
337+{
338+ const char *suffix = arm_ldrex_suffix (mode);
339+ rtx operands[2];
340+
341+ operands[0] = target;
342+ operands[1] = memory;
343+ arm_output_asm_insn (emit, 0, operands, "ldrex%s\t%%0, %%C1", suffix);
344+}
345+
346+/* Emit a strex{b,h,d, } instruction appropriate for the specified
347+ mode. */
348+static void
349+arm_output_strex (emit_f emit,
350+ enum machine_mode mode,
351+ const char *cc,
352+ rtx result,
353+ rtx value,
354+ rtx memory)
355+{
356+ const char *suffix = arm_ldrex_suffix (mode);
357+ rtx operands[3];
358+
359+ operands[0] = result;
360+ operands[1] = value;
361+ operands[2] = memory;
362+ arm_output_asm_insn (emit, 0, operands, "strex%s%s\t%%0, %%1, %%C2", suffix,
363+ cc);
364+}
365+
366+/* Helper to emit a two operand instruction. */
367+static void
368+arm_output_op2 (emit_f emit, const char *mnemonic, rtx d, rtx s)
369+{
370+ rtx operands[2];
371+
372+ operands[0] = d;
373+ operands[1] = s;
374+ arm_output_asm_insn (emit, 0, operands, "%s\t%%0, %%1", mnemonic);
375+}
376+
377+/* Helper to emit a three operand instruction. */
378+static void
379+arm_output_op3 (emit_f emit, const char *mnemonic, rtx d, rtx a, rtx b)
380+{
381+ rtx operands[3];
382+
383+ operands[0] = d;
384+ operands[1] = a;
385+ operands[2] = b;
386+ arm_output_asm_insn (emit, 0, operands, "%s\t%%0, %%1, %%2", mnemonic);
387+}
388+
389+/* Emit a load store exclusive synchronization loop.
390+
391+ do
392+ old_value = [mem]
393+ if old_value != required_value
394+ break;
395+ t1 = sync_op (old_value, new_value)
396+ [mem] = t1, t2 = [0|1]
397+ while ! t2
398+
399+ Note:
400+ t1 == t2 is not permitted
401+ t1 == old_value is permitted
402+
403+ required_value:
404+
405+ RTX register or const_int representing the required old_value for
406+ the modify to continue, if NULL no comparsion is performed. */
407+static void
408+arm_output_sync_loop (emit_f emit,
409+ enum machine_mode mode,
410+ rtx old_value,
411+ rtx memory,
412+ rtx required_value,
413+ rtx new_value,
414+ rtx t1,
415+ rtx t2,
416+ enum attr_sync_op sync_op,
417+ int early_barrier_required)
418+{
419+ rtx operands[1];
420+
421+ gcc_assert (t1 != t2);
422+
423+ if (early_barrier_required)
424+ arm_process_output_memory_barrier (emit, NULL);
425+
426+ arm_output_asm_insn (emit, 1, operands, "%sLSYT%%=:", LOCAL_LABEL_PREFIX);
427+
428+ arm_output_ldrex (emit, mode, old_value, memory);
429+
430+ if (required_value)
431+ {
432+ rtx operands[2];
433+
434+ operands[0] = old_value;
435+ operands[1] = required_value;
436+ arm_output_asm_insn (emit, 0, operands, "cmp\t%%0, %%1");
437+ arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYB%%=", LOCAL_LABEL_PREFIX);
438+ }
439+
440+ switch (sync_op)
441+ {
442+ case SYNC_OP_ADD:
443+ arm_output_op3 (emit, "add", t1, old_value, new_value);
444+ break;
445+
446+ case SYNC_OP_SUB:
447+ arm_output_op3 (emit, "sub", t1, old_value, new_value);
448+ break;
449+
450+ case SYNC_OP_IOR:
451+ arm_output_op3 (emit, "orr", t1, old_value, new_value);
452+ break;
453+
454+ case SYNC_OP_XOR:
455+ arm_output_op3 (emit, "eor", t1, old_value, new_value);
456+ break;
457+
458+ case SYNC_OP_AND:
459+ arm_output_op3 (emit,"and", t1, old_value, new_value);
460+ break;
461+
462+ case SYNC_OP_NAND:
463+ arm_output_op3 (emit, "and", t1, old_value, new_value);
464+ arm_output_op2 (emit, "mvn", t1, t1);
465+ break;
466+
467+ case SYNC_OP_NONE:
468+ t1 = new_value;
469+ break;
470+ }
471+
472+ arm_output_strex (emit, mode, "", t2, t1, memory);
473+ operands[0] = t2;
474+ arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
475+ arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=", LOCAL_LABEL_PREFIX);
476+
477+ arm_process_output_memory_barrier (emit, NULL);
478+ arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
479+}
480+
481+static rtx
482+arm_get_sync_operand (rtx *operands, int index, rtx default_value)
483+{
484+ if (index > 0)
485+ default_value = operands[index - 1];
486+
487+ return default_value;
488+}
489+
490+#define FETCH_SYNC_OPERAND(NAME, DEFAULT) \
491+ arm_get_sync_operand (operands, (int) get_attr_sync_##NAME (insn), DEFAULT);
492+
493+/* Extract the operands for a synchroniztion instruction from the
494+ instructions attributes and emit the instruction. */
495+static void
496+arm_process_output_sync_insn (emit_f emit, rtx insn, rtx *operands)
497+{
498+ rtx result, memory, required_value, new_value, t1, t2;
499+ int early_barrier;
500+ enum machine_mode mode;
501+ enum attr_sync_op sync_op;
502+
503+ result = FETCH_SYNC_OPERAND(result, 0);
504+ memory = FETCH_SYNC_OPERAND(memory, 0);
505+ required_value = FETCH_SYNC_OPERAND(required_value, 0);
506+ new_value = FETCH_SYNC_OPERAND(new_value, 0);
507+ t1 = FETCH_SYNC_OPERAND(t1, 0);
508+ t2 = FETCH_SYNC_OPERAND(t2, 0);
509+ early_barrier =
510+ get_attr_sync_release_barrier (insn) == SYNC_RELEASE_BARRIER_YES;
511+ sync_op = get_attr_sync_op (insn);
512+ mode = GET_MODE (memory);
513+
514+ arm_output_sync_loop (emit, mode, result, memory, required_value,
515+ new_value, t1, t2, sync_op, early_barrier);
516+}
517+
518+/* Emit a synchronization instruction loop. */
519+const char *
520+arm_output_sync_insn (rtx insn, rtx *operands)
521+{
522+ arm_process_output_sync_insn (arm_emit, insn, operands);
523+ return "";
524+}
525+
526+/* Count the number of machine instruction that will be emitted for a
527+ synchronization instruction. Note that the emitter used does not
528+ emit instructions, it just counts instructions being carefull not
529+ to count labels. */
530+unsigned int
531+arm_sync_loop_insns (rtx insn, rtx *operands)
532+{
533+ arm_insn_count = 0;
534+ arm_process_output_sync_insn (arm_count, insn, operands);
535+ return arm_insn_count;
536+}
537+
538+/* Helper to call a target sync instruction generator, dealing with
539+ the variation in operands required by the different generators. */
540+static rtx
541+arm_call_generator (struct arm_sync_generator *generator, rtx old_value,
542+ rtx memory, rtx required_value, rtx new_value)
543+{
544+ switch (generator->op)
545+ {
546+ case arm_sync_generator_omn:
547+ gcc_assert (! required_value);
548+ return generator->u.omn (old_value, memory, new_value);
549+
550+ case arm_sync_generator_omrn:
551+ gcc_assert (required_value);
552+ return generator->u.omrn (old_value, memory, required_value, new_value);
553+ }
554+
555+ return NULL;
556+}
557+
558+/* Expand a synchronization loop. The synchronization loop is expanded
559+ as an opaque block of instructions in order to ensure that we do
560+ not subsequently get extraneous memory accesses inserted within the
561+ critical region. The exclusive access property of ldrex/strex is
562+ only guaranteed in there are no intervening memory accesses. */
563+void
564+arm_expand_sync (enum machine_mode mode,
565+ struct arm_sync_generator *generator,
566+ rtx target, rtx memory, rtx required_value, rtx new_value)
567+{
568+ if (target == NULL)
569+ target = gen_reg_rtx (mode);
570+
571+ memory = arm_legitimize_sync_memory (memory);
572+ if (mode != SImode)
573+ {
574+ rtx load_temp = gen_reg_rtx (SImode);
575+
576+ if (required_value)
577+ required_value = convert_modes (SImode, mode, required_value, true);
578+
579+ new_value = convert_modes (SImode, mode, new_value, true);
580+ emit_insn (arm_call_generator (generator, load_temp, memory,
581+ required_value, new_value));
582+ emit_move_insn (target, gen_lowpart (mode, load_temp));
583+ }
584+ else
585+ {
586+ emit_insn (arm_call_generator (generator, target, memory, required_value,
587+ new_value));
588+ }
589+}
590+
591 #include "gt-arm.h"
592Index: gcc-4.5/gcc/config/arm/arm.h
593===================================================================
594--- gcc-4.5.orig/gcc/config/arm/arm.h
595+++ gcc-4.5/gcc/config/arm/arm.h
596@@ -128,6 +128,24 @@ enum target_cpus
597 /* The processor for which instructions should be scheduled. */
598 extern enum processor_type arm_tune;
599
600+enum arm_sync_generator_tag
601+ {
602+ arm_sync_generator_omn,
603+ arm_sync_generator_omrn
604+ };
605+
606+/* Wrapper to pass around a polymorphic pointer to a sync instruction
607+ generator and. */
608+struct arm_sync_generator
609+{
610+ enum arm_sync_generator_tag op;
611+ union
612+ {
613+ rtx (* omn) (rtx, rtx, rtx);
614+ rtx (* omrn) (rtx, rtx, rtx, rtx);
615+ } u;
616+};
617+
618 typedef enum arm_cond_code
619 {
620 ARM_EQ = 0, ARM_NE, ARM_CS, ARM_CC, ARM_MI, ARM_PL, ARM_VS, ARM_VC,
621@@ -272,6 +290,20 @@ extern void (*arm_lang_output_object_att
622 for Thumb-2. */
623 #define TARGET_UNIFIED_ASM TARGET_THUMB2
624
625+/* Nonzero if this chip provides the DMB instruction. */
626+#define TARGET_HAVE_DMB (arm_arch7)
627+
628+/* Nonzero if this chip implements a memory barrier via CP15. */
629+#define TARGET_HAVE_DMB_MCR (arm_arch6k && ! TARGET_HAVE_DMB)
630+
631+/* Nonzero if this chip implements a memory barrier instruction. */
632+#define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
633+
634+/* Nonzero if this chip supports ldrex and strex */
635+#define TARGET_HAVE_LDREX ((arm_arch6 && TARGET_ARM) || arm_arch7)
636+
637+/* Nonzero if this chip supports ldrex{bhd} and strex{bhd}. */
638+#define TARGET_HAVE_LDREXBHD ((arm_arch6k && TARGET_ARM) || arm_arch7)
639
640 /* True iff the full BPABI is being used. If TARGET_BPABI is true,
641 then TARGET_AAPCS_BASED must be true -- but the converse does not
642@@ -405,6 +437,12 @@ extern int arm_arch5e;
643 /* Nonzero if this chip supports the ARM Architecture 6 extensions. */
644 extern int arm_arch6;
645
646+/* Nonzero if this chip supports the ARM Architecture 6k extensions. */
647+extern int arm_arch6k;
648+
649+/* Nonzero if this chip supports the ARM Architecture 7 extensions. */
650+extern int arm_arch7;
651+
652 /* Nonzero if instructions not present in the 'M' profile can be used. */
653 extern int arm_arch_notm;
654
655Index: gcc-4.5/gcc/config/arm/arm.md
656===================================================================
657--- gcc-4.5.orig/gcc/config/arm/arm.md
658+++ gcc-4.5/gcc/config/arm/arm.md
659@@ -103,6 +103,7 @@
660 (UNSPEC_RBIT 26) ; rbit operation.
661 (UNSPEC_SYMBOL_OFFSET 27) ; The offset of the start of the symbol from
662 ; another symbolic address.
663+ (UNSPEC_MEMORY_BARRIER 28) ; Represent a memory barrier.
664 ]
665 )
666
667@@ -139,6 +140,11 @@
668 (VUNSPEC_ALIGN32 16) ; Used to force 32-byte alignment.
669 (VUNSPEC_EH_RETURN 20); Use to override the return address for exception
670 ; handling.
671+ (VUNSPEC_SYNC_COMPARE_AND_SWAP 21) ; Represent an atomic compare swap.
672+ (VUNSPEC_SYNC_LOCK 22) ; Represent a sync_lock_test_and_set.
673+ (VUNSPEC_SYNC_OP 23) ; Represent a sync_<op>
674+ (VUNSPEC_SYNC_NEW_OP 24) ; Represent a sync_new_<op>
675+ (VUNSPEC_SYNC_OLD_OP 25) ; Represent a sync_old_<op>
676 ]
677 )
678
679@@ -163,8 +169,21 @@
680 (define_attr "fpu" "none,fpa,fpe2,fpe3,maverick,vfp"
681 (const (symbol_ref "arm_fpu_attr")))
682
683+(define_attr "sync_result" "none,0,1,2,3,4,5" (const_string "none"))
684+(define_attr "sync_memory" "none,0,1,2,3,4,5" (const_string "none"))
685+(define_attr "sync_required_value" "none,0,1,2,3,4,5" (const_string "none"))
686+(define_attr "sync_new_value" "none,0,1,2,3,4,5" (const_string "none"))
687+(define_attr "sync_t1" "none,0,1,2,3,4,5" (const_string "none"))
688+(define_attr "sync_t2" "none,0,1,2,3,4,5" (const_string "none"))
689+(define_attr "sync_release_barrier" "yes,no" (const_string "yes"))
690+(define_attr "sync_op" "none,add,sub,ior,xor,and,nand"
691+ (const_string "none"))
692+
693 ; LENGTH of an instruction (in bytes)
694-(define_attr "length" "" (const_int 4))
695+(define_attr "length" ""
696+ (cond [(not (eq_attr "sync_memory" "none"))
697+ (symbol_ref "arm_sync_loop_insns (insn, operands) * 4")
698+ ] (const_int 4)))
699
700 ; POOL_RANGE is how far away from a constant pool entry that this insn
701 ; can be placed. If the distance is zero, then this insn will never
702@@ -11549,4 +11568,5 @@
703 (include "thumb2.md")
704 ;; Neon patterns
705 (include "neon.md")
706-
707+;; Synchronization Primitives
708+(include "sync.md")
709Index: gcc-4.5/gcc/config/arm/predicates.md
710===================================================================
711--- gcc-4.5.orig/gcc/config/arm/predicates.md
712+++ gcc-4.5/gcc/config/arm/predicates.md
713@@ -573,6 +573,11 @@
714 (and (match_test "TARGET_32BIT")
715 (match_operand 0 "arm_di_operand"))))
716
717+;; True if the operand is memory reference suitable for a ldrex/strex.
718+(define_predicate "arm_sync_memory_operand"
719+ (and (match_operand 0 "memory_operand")
720+ (match_code "reg" "0")))
721+
722 ;; Predicates for parallel expanders based on mode.
723 (define_special_predicate "vect_par_constant_high"
724 (match_code "parallel")
725Index: gcc-4.5/gcc/testsuite/gcc.target/arm/synchronize.c
726===================================================================
727--- gcc-4.5.orig/gcc/testsuite/gcc.target/arm/synchronize.c
728+++ gcc-4.5/gcc/testsuite/gcc.target/arm/synchronize.c
729@@ -1,4 +1,4 @@
730-/* { dg-final { scan-assembler "__sync_synchronize" { target arm*-*-linux-*eabi } } } */
731+/* { dg-final { scan-assembler "__sync_synchronize|dmb|mcr" { target arm*-*-linux-*eabi } } } */
732
733 void *foo (void)
734 {
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99420.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99420.patch
new file mode 100644
index 000000000..4e63a8189
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99420.patch
@@ -0,0 +1,38 @@
12010-10-18 Kazu Hirata <kazu@codesourcery.com>
2
3 Issue #9720
4 Backport from mainline:
5 gcc/
6 2010-10-07 Tejas Belagod <tejas.belagod@arm.com>
7 * config/arm/neon.md (neon_unpack<US>_<mode>): Add 'w' to
8 constraint, add register specifier in instruction template.
9 (neon_vec_pack_trunc_<mode>): Likewise.
10 (neon_vec_<US>mult_<mode>): Add register specifier to
11 instruction template.
12
13=== modified file 'gcc/config/arm/neon.md'
14Index: gcc-4.5/gcc/config/arm/neon.md
15===================================================================
16--- gcc-4.5.orig/gcc/config/arm/neon.md
17+++ gcc-4.5/gcc/config/arm/neon.md
18@@ -5682,9 +5682,9 @@
19 ;; Vectorize for non-neon-quad case
20 (define_insn "neon_unpack<US>_<mode>"
21 [(set (match_operand:<V_widen> 0 "register_operand" "=w")
22- (SE:<V_widen> (match_operand:VDI 1 "register_operand" "")))]
23+ (SE:<V_widen> (match_operand:VDI 1 "register_operand" "w")))]
24 "TARGET_NEON"
25- "vmovl.<US><V_sz_elem> %q0, %1"
26+ "vmovl.<US><V_sz_elem> %q0, %P1"
27 [(set_attr "neon_type" "neon_shift_1")]
28 )
29
30@@ -5721,7 +5721,7 @@
31 (SE:<V_widen>
32 (match_operand:VDI 2 "register_operand" "w"))))]
33 "TARGET_NEON"
34- "vmull.<US><V_sz_elem> %q0, %1, %2"
35+ "vmull.<US><V_sz_elem> %q0, %P1, %P2"
36 [(set_attr "neon_type" "neon_shift_1")]
37 )
38
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99421.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99421.patch
new file mode 100644
index 000000000..3a45ee502
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99421.patch
@@ -0,0 +1,94 @@
12010-10-20 Nathan Froyd <froydnj@codesourcery.com>
2
3 Issue #9781
4
5 Backport from mainline:
6
7 gcc/
8 2010-10-20 Nathan Froyd <froydnj@codesourcery.com>
9
10 * ifcvt.c (noce_emit_cmove): If both of the values are SUBREGs, try
11 emitting the conditional move in the inner mode of the SUBREG.
12
13
14=== modified file 'gcc/ifcvt.c'
15--- old/gcc/ifcvt.c 2010-10-15 10:01:07 +0000
16+++ new/gcc/ifcvt.c 2010-11-04 12:11:15 +0000
17@@ -1338,6 +1338,9 @@
18 noce_emit_cmove (struct noce_if_info *if_info, rtx x, enum rtx_code code,
19 rtx cmp_a, rtx cmp_b, rtx vfalse, rtx vtrue)
20 {
21+ rtx target;
22+ int unsignedp;
23+
24 /* If earliest == jump, try to build the cmove insn directly.
25 This is helpful when combine has created some complex condition
26 (like for alpha's cmovlbs) that we can't hope to regenerate
27@@ -1372,10 +1375,62 @@
28 return NULL_RTX;
29
30 #if HAVE_conditional_move
31- return emit_conditional_move (x, code, cmp_a, cmp_b, VOIDmode,
32- vtrue, vfalse, GET_MODE (x),
33- (code == LTU || code == GEU
34- || code == LEU || code == GTU));
35+ unsignedp = (code == LTU || code == GEU
36+ || code == LEU || code == GTU);
37+
38+ target = emit_conditional_move (x, code, cmp_a, cmp_b, VOIDmode,
39+ vtrue, vfalse, GET_MODE (x),
40+ unsignedp);
41+ if (target)
42+ return target;
43+
44+ /* We might be faced with a situation like:
45+
46+ x = (reg:M TARGET)
47+ vtrue = (subreg:M (reg:N VTRUE) BYTE)
48+ vfalse = (subreg:M (reg:N VFALSE) BYTE)
49+
50+ We can't do a conditional move in mode M, but it's possible that we
51+ could do a conditional move in mode N instead and take a subreg of
52+ the result.
53+
54+ If we can't create new pseudos, though, don't bother. */
55+ if (reload_completed)
56+ return NULL_RTX;
57+
58+ if (GET_CODE (vtrue) == SUBREG && GET_CODE (vfalse) == SUBREG)
59+ {
60+ rtx reg_vtrue = SUBREG_REG (vtrue);
61+ rtx reg_vfalse = SUBREG_REG (vfalse);
62+ unsigned int byte_vtrue = SUBREG_BYTE (vtrue);
63+ unsigned int byte_vfalse = SUBREG_BYTE (vfalse);
64+ rtx promoted_target;
65+
66+ if (GET_MODE (reg_vtrue) != GET_MODE (reg_vfalse)
67+ || byte_vtrue != byte_vfalse
68+ || (SUBREG_PROMOTED_VAR_P (vtrue)
69+ != SUBREG_PROMOTED_VAR_P (vfalse))
70+ || (SUBREG_PROMOTED_UNSIGNED_P (vtrue)
71+ != SUBREG_PROMOTED_UNSIGNED_P (vfalse)))
72+ return NULL_RTX;
73+
74+ promoted_target = gen_reg_rtx (GET_MODE (reg_vtrue));
75+
76+ target = emit_conditional_move (promoted_target, code, cmp_a, cmp_b,
77+ VOIDmode, reg_vtrue, reg_vfalse,
78+ GET_MODE (reg_vtrue), unsignedp);
79+ /* Nope, couldn't do it in that mode either. */
80+ if (!target)
81+ return NULL_RTX;
82+
83+ target = gen_rtx_SUBREG (GET_MODE (vtrue), promoted_target, byte_vtrue);
84+ SUBREG_PROMOTED_VAR_P (target) = SUBREG_PROMOTED_VAR_P (vtrue);
85+ SUBREG_PROMOTED_UNSIGNED_SET (target, SUBREG_PROMOTED_UNSIGNED_P (vtrue));
86+ emit_move_insn (x, target);
87+ return x;
88+ }
89+ else
90+ return NULL_RTX;
91 #else
92 /* We'll never get here, as noce_process_if_block doesn't call the
93 functions involved. Ifdef code, however, should be discouraged
94
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99423.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99423.patch
new file mode 100644
index 000000000..80dbe3f71
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99423.patch
@@ -0,0 +1,114 @@
12010-10-25 Jie Zhang <jie@codesourcery.com>
2
3 Issue #9812
4
5 Backport from mainline:
6
7 gcc/
8 2010-10-25 Jie Zhang <jie@codesourcery.com>
9 * combine.c (try_combine): If insns need to be kept around,
10 check that they can be copied in the merged instruction.
11
12 gcc/testsuite/
13 2010-10-25 Jie Zhang <jie@codesourcery.com>
14 * g++.dg/opt/combine.c: New test.
15
16=== modified file 'gcc/combine.c'
17--- old/gcc/combine.c 2010-09-20 22:37:32 +0000
18+++ new/gcc/combine.c 2010-11-04 12:39:28 +0000
19@@ -2809,6 +2809,17 @@
20 = i1 && ! (i1_feeds_i3 ? dead_or_set_p (i3, i1dest)
21 : (dead_or_set_p (i3, i1dest) || dead_or_set_p (i2, i1dest)));
22
23+ /* We are about to copy insns for the case where they need to be kept
24+ around. Check that they can be copied in the merged instruction. */
25+
26+ if (targetm.cannot_copy_insn_p
27+ && ((added_sets_2 && targetm.cannot_copy_insn_p (i2))
28+ || (i1 && added_sets_1 && targetm.cannot_copy_insn_p (i1))))
29+ {
30+ undo_all ();
31+ return 0;
32+ }
33+
34 /* If the set in I2 needs to be kept around, we must make a copy of
35 PATTERN (I2), so that when we substitute I1SRC for I1DEST in
36 PATTERN (I2), we are only substituting for the original I1DEST, not into
37
38=== added file 'gcc/testsuite/g++.dg/opt/combine.C'
39--- old/gcc/testsuite/g++.dg/opt/combine.C 1970-01-01 00:00:00 +0000
40+++ new/gcc/testsuite/g++.dg/opt/combine.C 2010-11-04 12:39:28 +0000
41@@ -0,0 +1,72 @@
42+// { dg-do assemble { target fpic } }
43+// { dg-options "-O2 -fweb -fPIC -fvisibility=hidden" }
44+
45+class QBasicAtomicInt
46+{
47+public:
48+ volatile int _q_value;
49+ inline operator int () const {return _q_value;}
50+};
51+class QVariant;
52+class QScriptContext;
53+class QScriptEngine;
54+class QScriptValue
55+{
56+public:
57+ QVariant toVariant () const;
58+};
59+class QScriptDebuggerBackendPrivate
60+{
61+ static QScriptValue trace (QScriptContext *context);
62+};
63+template <typename T> struct QMetaTypeId { };
64+template <typename T> struct QMetaTypeId2
65+{
66+ static inline int qt_metatype_id ()
67+ {
68+ return QMetaTypeId<T>::qt_metatype_id () ;
69+ }
70+};
71+template <typename T> inline int qMetaTypeId (T * = 0)
72+{
73+ return QMetaTypeId2<T>::qt_metatype_id () ;
74+}
75+class QVariant { };
76+template<typename T> inline T qvariant_cast (const QVariant &v)
77+{
78+ const int vid = qMetaTypeId<T> ((0)) ;
79+};
80+class QScriptContext
81+{
82+public:
83+ QScriptValue callee () const;
84+};
85+class QScriptEngine
86+{
87+public:
88+ static bool convertV2 (const QScriptValue &value , int type , void *ptr) ;
89+};
90+inline bool qscriptvalue_cast_helper (const QScriptValue &value , int type , void *ptr)
91+{
92+ return QScriptEngine::convertV2 (value, type, ptr) ;
93+}
94+template<typename T> T qscriptvalue_cast (const QScriptValue &value)
95+{
96+ T t;
97+ const int id = qMetaTypeId<T> () ;
98+ if ( qscriptvalue_cast_helper (value, id, &t))
99+ return qvariant_cast<T> (value.toVariant ()) ;
100+}
101+template <> struct QMetaTypeId< QScriptDebuggerBackendPrivate* >
102+{
103+ static int qt_metatype_id ()
104+ {
105+ static QBasicAtomicInt metatype_id = { (0) };
106+ return metatype_id;
107+ }
108+};
109+QScriptValue QScriptDebuggerBackendPrivate::trace (QScriptContext *context)
110+{
111+ QScriptValue data = context->callee () ;
112+ QScriptDebuggerBackendPrivate *self = qscriptvalue_cast<QScriptDebuggerBackendPrivate*> (data) ;
113+}
114
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch
new file mode 100644
index 000000000..b6c653266
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99424.patch
@@ -0,0 +1,687 @@
1 Issue #1259
2
3 Backport from mainline:
4
5 gcc/
6 2010-10-22 Jie Zhang <jie@codesourcery.com>
7
8 * expr.c (emit_group_load_1): Update calls to extract_bit_field.
9 (copy_blkmode_from_reg): Likewise.
10 (read_complex_part): Likewise.
11 (expand_expr_real_1): Calculate packedp and pass it to
12 extract_bit_field.
13 * expr.h (extract_bit_field): Update declaration.
14 * calls.c (store_unaligned_arguments_into_pseudos): Update call
15 to extract_bit_field.
16 * expmed.c (extract_fixed_bit_field): Update calls to
17 extract_fixed_bit_field.
18 (store_split_bit_field): Likewise.
19 (extract_bit_field_1): Add new argument packedp.
20 (extract_bit_field): Add new argument packedp.
21 (extract_fixed_bit_field): Add new argument packedp and let
22 packed attribute override volatile.
23 * stmt.c (expand_return): Update call to extract_bit_field.
24
25 2010-10-15 Jie Zhang <jie@codesourcery.com>
26
27 * doc/invoke.texi: Add -fstrict-volatile-bitfields to
28 Option Summary and Index.
29
30 2010-07-13 DJ Delorie <dj@redhat.com>
31
32 * config/h8300/h8300.c (h8300_init_once): Default to
33 -fstrict_volatile_bitfields.
34
35 * config/sh/sh.c (sh_override_options): Default to
36 -fstrict_volatile_bitfields.
37
38 * config/rx/rx.c (rx_option_override): New.
39
40 * config/m32c/m32c.c (m32c_override_options): Default to
41 -fstrict_volatile_bitfields.
42
43 2010-06-16 DJ Delorie <dj@redhat.com>
44
45 * common.opt (-fstrict-volatile-bitfields): new.
46 * doc/invoke.texi: Document it.
47 * fold-const.c (optimize_bit_field_compare): For volatile
48 bitfields, use the field's type to determine the mode, not the
49 field's size.
50 * expr.c (expand_assignment): Likewise.
51 (get_inner_reference): Likewise.
52 (expand_expr_real_1): Likewise.
53 * expmed.c (store_fixed_bit_field): Likewise.
54 (extract_bit_field_1): Likewise.
55 (extract_fixed_bit_field): Likewise.
56
57 gcc/testsuite/
58 2010-08-19 Uros Bizjak <ubizjak@gmail.com>
59
60 PR testsuite/45324
61 * gcc.target/i386/volatile-bitfields-1.c: Also scan movb.
62
63 2010-06-16 DJ Delorie <dj@redhat.com>
64
65 * gcc.target/i386/volatile-bitfields-1.c: New.
66 * gcc.target/i386/volatile-bitfields-2.c: New.
67
68=== modified file 'gcc/calls.c'
69--- old/gcc/calls.c 2010-10-04 00:50:43 +0000
70+++ new/gcc/calls.c 2010-11-04 12:43:52 +0000
71@@ -878,7 +878,7 @@
72 int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD);
73
74 args[i].aligned_regs[j] = reg;
75- word = extract_bit_field (word, bitsize, 0, 1, NULL_RTX,
76+ word = extract_bit_field (word, bitsize, 0, 1, false, NULL_RTX,
77 word_mode, word_mode);
78
79 /* There is no need to restrict this code to loading items
80
81=== modified file 'gcc/common.opt'
82--- old/gcc/common.opt 2010-07-29 14:59:35 +0000
83+++ new/gcc/common.opt 2010-11-04 12:43:52 +0000
84@@ -613,6 +613,10 @@
85 Common Report Var(flag_loop_block) Optimization
86 Enable Loop Blocking transformation
87
88+fstrict-volatile-bitfields
89+Common Report Var(flag_strict_volatile_bitfields) Init(-1)
90+Force bitfield accesses to match their type width
91+
92 fguess-branch-probability
93 Common Report Var(flag_guess_branch_prob) Optimization
94 Enable guessing of branch probabilities
95
96=== modified file 'gcc/config/h8300/h8300.c'
97--- old/gcc/config/h8300/h8300.c 2010-04-02 18:54:46 +0000
98+++ new/gcc/config/h8300/h8300.c 2010-11-04 12:43:52 +0000
99@@ -403,6 +403,10 @@
100 restore er6 though, so bump up the cost. */
101 h8300_move_ratio = 6;
102 }
103+
104+ /* This target defaults to strict volatile bitfields. */
105+ if (flag_strict_volatile_bitfields < 0)
106+ flag_strict_volatile_bitfields = 1;
107 }
108
109 /* Implement REG_CLASS_FROM_LETTER.
110
111=== modified file 'gcc/config/m32c/m32c.c'
112--- old/gcc/config/m32c/m32c.c 2009-10-22 18:46:26 +0000
113+++ new/gcc/config/m32c/m32c.c 2010-11-04 12:43:52 +0000
114@@ -428,6 +428,10 @@
115
116 if (TARGET_A24)
117 flag_ivopts = 0;
118+
119+ /* This target defaults to strict volatile bitfields. */
120+ if (flag_strict_volatile_bitfields < 0)
121+ flag_strict_volatile_bitfields = 1;
122 }
123
124 /* Defining data structures for per-function information */
125
126=== modified file 'gcc/config/rx/rx.c'
127--- old/gcc/config/rx/rx.c 2010-07-27 14:39:53 +0000
128+++ new/gcc/config/rx/rx.c 2010-11-04 12:43:52 +0000
129@@ -2187,6 +2187,14 @@
130 }
131 }
132
133+static void
134+rx_option_override (void)
135+{
136+ /* This target defaults to strict volatile bitfields. */
137+ if (flag_strict_volatile_bitfields < 0)
138+ flag_strict_volatile_bitfields = 1;
139+}
140+
141
142 static bool
143 rx_allocate_stack_slots_for_args (void)
144@@ -2759,6 +2767,9 @@
145 #undef TARGET_CC_MODES_COMPATIBLE
146 #define TARGET_CC_MODES_COMPATIBLE rx_cc_modes_compatible
147
148+#undef TARGET_OPTION_OVERRIDE
149+#define TARGET_OPTION_OVERRIDE rx_option_override
150+
151 struct gcc_target targetm = TARGET_INITIALIZER;
152
153 /* #include "gt-rx.h" */
154
155=== modified file 'gcc/config/sh/sh.c'
156--- old/gcc/config/sh/sh.c 2010-05-05 21:12:17 +0000
157+++ new/gcc/config/sh/sh.c 2010-11-04 12:43:52 +0000
158@@ -950,6 +950,10 @@
159
160 if (sh_fixed_range_str)
161 sh_fix_range (sh_fixed_range_str);
162+
163+ /* This target defaults to strict volatile bitfields. */
164+ if (flag_strict_volatile_bitfields < 0)
165+ flag_strict_volatile_bitfields = 1;
166 }
167
168 /* Print the operand address in x to the stream. */
169
170=== modified file 'gcc/doc/invoke.texi'
171--- old/gcc/doc/invoke.texi 2010-10-04 00:50:43 +0000
172+++ new/gcc/doc/invoke.texi 2010-11-04 12:43:52 +0000
173@@ -922,7 +922,7 @@
174 -fargument-noalias-global -fargument-noalias-anything @gol
175 -fleading-underscore -ftls-model=@var{model} @gol
176 -ftrapv -fwrapv -fbounds-check @gol
177--fvisibility}
178+-fvisibility -fstrict-volatile-bitfields}
179 @end table
180
181 @menu
182@@ -17629,6 +17629,33 @@
183 An overview of these techniques, their benefits and how to use them
184 is at @w{@uref{http://gcc.gnu.org/wiki/Visibility}}.
185
186+@item -fstrict-volatile-bitfields
187+@opindex fstrict-volatile-bitfields
188+This option should be used if accesses to volatile bitfields (or other
189+structure fields, although the compiler usually honors those types
190+anyway) should use a single access in a mode of the same size as the
191+container's type, aligned to a natural alignment if possible. For
192+example, targets with memory-mapped peripheral registers might require
193+all such accesses to be 16 bits wide; with this flag the user could
194+declare all peripheral bitfields as ``unsigned short'' (assuming short
195+is 16 bits on these targets) to force GCC to use 16 bit accesses
196+instead of, perhaps, a more efficient 32 bit access.
197+
198+If this option is disabled, the compiler will use the most efficient
199+instruction. In the previous example, that might be a 32-bit load
200+instruction, even though that will access bytes that do not contain
201+any portion of the bitfield, or memory-mapped registers unrelated to
202+the one being updated.
203+
204+If the target requires strict alignment, and honoring the container
205+type would require violating this alignment, a warning is issued.
206+However, the access happens as the user requested, under the
207+assumption that the user knows something about the target hardware
208+that GCC is unaware of.
209+
210+The default value of this option is determined by the application binary
211+interface for the target processor.
212+
213 @end table
214
215 @c man end
216
217=== modified file 'gcc/expmed.c'
218--- old/gcc/expmed.c 2010-10-04 00:50:43 +0000
219+++ new/gcc/expmed.c 2010-11-04 12:43:52 +0000
220@@ -47,7 +47,7 @@
221 static rtx extract_fixed_bit_field (enum machine_mode, rtx,
222 unsigned HOST_WIDE_INT,
223 unsigned HOST_WIDE_INT,
224- unsigned HOST_WIDE_INT, rtx, int);
225+ unsigned HOST_WIDE_INT, rtx, int, bool);
226 static rtx mask_rtx (enum machine_mode, int, int, int);
227 static rtx lshift_value (enum machine_mode, rtx, int, int);
228 static rtx extract_split_bit_field (rtx, unsigned HOST_WIDE_INT,
229@@ -904,8 +904,14 @@
230 if (GET_MODE_BITSIZE (mode) == 0
231 || GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (word_mode))
232 mode = word_mode;
233- mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT,
234- MEM_ALIGN (op0), mode, MEM_VOLATILE_P (op0));
235+
236+ if (MEM_VOLATILE_P (op0)
237+ && GET_MODE_BITSIZE (GET_MODE (op0)) > 0
238+ && flag_strict_volatile_bitfields > 0)
239+ mode = GET_MODE (op0);
240+ else
241+ mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT,
242+ MEM_ALIGN (op0), mode, MEM_VOLATILE_P (op0));
243
244 if (mode == VOIDmode)
245 {
246@@ -1099,7 +1105,7 @@
247 endianness compensation) to fetch the piece we want. */
248 part = extract_fixed_bit_field (word_mode, value, 0, thissize,
249 total_bits - bitsize + bitsdone,
250- NULL_RTX, 1);
251+ NULL_RTX, 1, false);
252 }
253 else
254 {
255@@ -1110,7 +1116,7 @@
256 & (((HOST_WIDE_INT) 1 << thissize) - 1));
257 else
258 part = extract_fixed_bit_field (word_mode, value, 0, thissize,
259- bitsdone, NULL_RTX, 1);
260+ bitsdone, NULL_RTX, 1, false);
261 }
262
263 /* If OP0 is a register, then handle OFFSET here.
264@@ -1176,7 +1182,8 @@
265
266 static rtx
267 extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
268- unsigned HOST_WIDE_INT bitnum, int unsignedp, rtx target,
269+ unsigned HOST_WIDE_INT bitnum,
270+ int unsignedp, bool packedp, rtx target,
271 enum machine_mode mode, enum machine_mode tmode,
272 bool fallback_p)
273 {
274@@ -1378,6 +1385,14 @@
275 ? mode_for_size (bitsize, GET_MODE_CLASS (tmode), 0)
276 : mode);
277
278+ /* If the bitfield is volatile, we need to make sure the access
279+ remains on a type-aligned boundary. */
280+ if (GET_CODE (op0) == MEM
281+ && MEM_VOLATILE_P (op0)
282+ && GET_MODE_BITSIZE (GET_MODE (op0)) > 0
283+ && flag_strict_volatile_bitfields > 0)
284+ goto no_subreg_mode_swap;
285+
286 if (((bitsize >= BITS_PER_WORD && bitsize == GET_MODE_BITSIZE (mode)
287 && bitpos % BITS_PER_WORD == 0)
288 || (mode1 != BLKmode
289@@ -1450,7 +1465,7 @@
290 rtx result_part
291 = extract_bit_field (op0, MIN (BITS_PER_WORD,
292 bitsize - i * BITS_PER_WORD),
293- bitnum + bit_offset, 1, target_part, mode,
294+ bitnum + bit_offset, 1, false, target_part, mode,
295 word_mode);
296
297 gcc_assert (target_part);
298@@ -1649,7 +1664,7 @@
299 xop0 = adjust_address (op0, bestmode, xoffset);
300 xop0 = force_reg (bestmode, xop0);
301 result = extract_bit_field_1 (xop0, bitsize, xbitpos,
302- unsignedp, target,
303+ unsignedp, packedp, target,
304 mode, tmode, false);
305 if (result)
306 return result;
307@@ -1663,7 +1678,7 @@
308 return NULL;
309
310 target = extract_fixed_bit_field (int_mode, op0, offset, bitsize,
311- bitpos, target, unsignedp);
312+ bitpos, target, unsignedp, packedp);
313 return convert_extracted_bit_field (target, mode, tmode, unsignedp);
314 }
315
316@@ -1674,6 +1689,7 @@
317
318 STR_RTX is the structure containing the byte (a REG or MEM).
319 UNSIGNEDP is nonzero if this is an unsigned bit field.
320+ PACKEDP is nonzero if the field has the packed attribute.
321 MODE is the natural mode of the field value once extracted.
322 TMODE is the mode the caller would like the value to have;
323 but the value may be returned with type MODE instead.
324@@ -1685,10 +1701,10 @@
325
326 rtx
327 extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
328- unsigned HOST_WIDE_INT bitnum, int unsignedp, rtx target,
329- enum machine_mode mode, enum machine_mode tmode)
330+ unsigned HOST_WIDE_INT bitnum, int unsignedp, bool packedp,
331+ rtx target, enum machine_mode mode, enum machine_mode tmode)
332 {
333- return extract_bit_field_1 (str_rtx, bitsize, bitnum, unsignedp,
334+ return extract_bit_field_1 (str_rtx, bitsize, bitnum, unsignedp, packedp,
335 target, mode, tmode, true);
336 }
337
338@@ -1704,6 +1720,8 @@
339 which is significant on bigendian machines.)
340
341 UNSIGNEDP is nonzero for an unsigned bit field (don't sign-extend value).
342+ PACKEDP is true if the field has the packed attribute.
343+
344 If TARGET is nonzero, attempts to store the value there
345 and return TARGET, but this is not guaranteed.
346 If TARGET is not used, create a pseudo-reg of mode TMODE for the value. */
347@@ -1713,7 +1731,7 @@
348 unsigned HOST_WIDE_INT offset,
349 unsigned HOST_WIDE_INT bitsize,
350 unsigned HOST_WIDE_INT bitpos, rtx target,
351- int unsignedp)
352+ int unsignedp, bool packedp)
353 {
354 unsigned int total_bits = BITS_PER_WORD;
355 enum machine_mode mode;
356@@ -1730,8 +1748,19 @@
357 includes the entire field. If such a mode would be larger than
358 a word, we won't be doing the extraction the normal way. */
359
360- mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT,
361- MEM_ALIGN (op0), word_mode, MEM_VOLATILE_P (op0));
362+ if (MEM_VOLATILE_P (op0)
363+ && flag_strict_volatile_bitfields > 0)
364+ {
365+ if (GET_MODE_BITSIZE (GET_MODE (op0)) > 0)
366+ mode = GET_MODE (op0);
367+ else if (target && GET_MODE_BITSIZE (GET_MODE (target)) > 0)
368+ mode = GET_MODE (target);
369+ else
370+ mode = tmode;
371+ }
372+ else
373+ mode = get_best_mode (bitsize, bitpos + offset * BITS_PER_UNIT,
374+ MEM_ALIGN (op0), word_mode, MEM_VOLATILE_P (op0));
375
376 if (mode == VOIDmode)
377 /* The only way this should occur is if the field spans word
378@@ -1752,12 +1781,67 @@
379 * BITS_PER_UNIT);
380 }
381
382- /* Get ref to an aligned byte, halfword, or word containing the field.
383- Adjust BITPOS to be position within a word,
384- and OFFSET to be the offset of that word.
385- Then alter OP0 to refer to that word. */
386- bitpos += (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT;
387- offset -= (offset % (total_bits / BITS_PER_UNIT));
388+ /* If we're accessing a volatile MEM, we can't do the next
389+ alignment step if it results in a multi-word access where we
390+ otherwise wouldn't have one. So, check for that case
391+ here. */
392+ if (MEM_P (op0)
393+ && MEM_VOLATILE_P (op0)
394+ && flag_strict_volatile_bitfields > 0
395+ && bitpos + bitsize <= total_bits
396+ && bitpos + bitsize + (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT > total_bits)
397+ {
398+ if (STRICT_ALIGNMENT)
399+ {
400+ static bool informed_about_misalignment = false;
401+ bool warned;
402+
403+ if (packedp)
404+ {
405+ if (bitsize == total_bits)
406+ warned = warning_at (input_location, OPT_fstrict_volatile_bitfields,
407+ "multiple accesses to volatile structure member"
408+ " because of packed attribute");
409+ else
410+ warned = warning_at (input_location, OPT_fstrict_volatile_bitfields,
411+ "multiple accesses to volatile structure bitfield"
412+ " because of packed attribute");
413+
414+ return extract_split_bit_field (op0, bitsize,
415+ bitpos + offset * BITS_PER_UNIT,
416+ unsignedp);
417+ }
418+
419+ if (bitsize == total_bits)
420+ warned = warning_at (input_location, OPT_fstrict_volatile_bitfields,
421+ "mis-aligned access used for structure member");
422+ else
423+ warned = warning_at (input_location, OPT_fstrict_volatile_bitfields,
424+ "mis-aligned access used for structure bitfield");
425+
426+ if (! informed_about_misalignment && warned)
427+ {
428+ informed_about_misalignment = true;
429+ inform (input_location,
430+ "When a volatile object spans multiple type-sized locations,"
431+ " the compiler must choose between using a single mis-aligned access to"
432+ " preserve the volatility, or using multiple aligned accesses to avoid"
433+ " runtime faults. This code may fail at runtime if the hardware does"
434+ " not allow this access.");
435+ }
436+ }
437+ }
438+ else
439+ {
440+
441+ /* Get ref to an aligned byte, halfword, or word containing the field.
442+ Adjust BITPOS to be position within a word,
443+ and OFFSET to be the offset of that word.
444+ Then alter OP0 to refer to that word. */
445+ bitpos += (offset % (total_bits / BITS_PER_UNIT)) * BITS_PER_UNIT;
446+ offset -= (offset % (total_bits / BITS_PER_UNIT));
447+ }
448+
449 op0 = adjust_address (op0, mode, offset);
450 }
451
452@@ -1966,7 +2050,7 @@
453 extract_fixed_bit_field wants offset in bytes. */
454 part = extract_fixed_bit_field (word_mode, word,
455 offset * unit / BITS_PER_UNIT,
456- thissize, thispos, 0, 1);
457+ thissize, thispos, 0, 1, false);
458 bitsdone += thissize;
459
460 /* Shift this part into place for the result. */
461
462=== modified file 'gcc/expr.c'
463--- old/gcc/expr.c 2010-10-04 00:50:43 +0000
464+++ new/gcc/expr.c 2010-11-04 12:43:52 +0000
465@@ -1749,7 +1749,7 @@
466 && (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode))
467 tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT,
468 (bytepos % slen0) * BITS_PER_UNIT,
469- 1, NULL_RTX, mode, mode);
470+ 1, false, NULL_RTX, mode, mode);
471 }
472 else
473 {
474@@ -1759,7 +1759,7 @@
475 mem = assign_stack_temp (GET_MODE (src), slen, 0);
476 emit_move_insn (mem, src);
477 tmps[i] = extract_bit_field (mem, bytelen * BITS_PER_UNIT,
478- 0, 1, NULL_RTX, mode, mode);
479+ 0, 1, false, NULL_RTX, mode, mode);
480 }
481 }
482 /* FIXME: A SIMD parallel will eventually lead to a subreg of a
483@@ -1800,7 +1800,7 @@
484 tmps[i] = src;
485 else
486 tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT,
487- bytepos * BITS_PER_UNIT, 1, NULL_RTX,
488+ bytepos * BITS_PER_UNIT, 1, false, NULL_RTX,
489 mode, mode);
490
491 if (shift)
492@@ -2213,7 +2213,7 @@
493 bitpos for the destination store (left justified). */
494 store_bit_field (dst, bitsize, bitpos % BITS_PER_WORD, copy_mode,
495 extract_bit_field (src, bitsize,
496- xbitpos % BITS_PER_WORD, 1,
497+ xbitpos % BITS_PER_WORD, 1, false,
498 NULL_RTX, copy_mode, copy_mode));
499 }
500
501@@ -2970,7 +2970,7 @@
502 }
503
504 return extract_bit_field (cplx, ibitsize, imag_p ? ibitsize : 0,
505- true, NULL_RTX, imode, imode);
506+ true, false, NULL_RTX, imode, imode);
507 }
508
509 /* A subroutine of emit_move_insn_1. Yet another lowpart generator.
510@@ -4233,6 +4233,13 @@
511
512 to_rtx = expand_normal (tem);
513
514+ /* If the bitfield is volatile, we want to access it in the
515+ field's mode, not the computed mode. */
516+ if (volatilep
517+ && GET_CODE (to_rtx) == MEM
518+ && flag_strict_volatile_bitfields > 0)
519+ to_rtx = adjust_address (to_rtx, mode1, 0);
520+
521 if (offset != 0)
522 {
523 enum machine_mode address_mode;
524@@ -5993,6 +6000,12 @@
525 mode = DECL_MODE (field);
526 else if (DECL_MODE (field) == BLKmode)
527 blkmode_bitfield = true;
528+ else if (TREE_THIS_VOLATILE (exp)
529+ && flag_strict_volatile_bitfields > 0)
530+ /* Volatile bitfields should be accessed in the mode of the
531+ field's type, not the mode computed based on the bit
532+ size. */
533+ mode = TYPE_MODE (DECL_BIT_FIELD_TYPE (field));
534
535 *punsignedp = DECL_UNSIGNED (field);
536 }
537@@ -8848,6 +8861,7 @@
538 HOST_WIDE_INT bitsize, bitpos;
539 tree offset;
540 int volatilep = 0, must_force_mem;
541+ bool packedp = false;
542 tree tem = get_inner_reference (exp, &bitsize, &bitpos, &offset,
543 &mode1, &unsignedp, &volatilep, true);
544 rtx orig_op0, memloc;
545@@ -8857,6 +8871,11 @@
546 infinitely recurse. */
547 gcc_assert (tem != exp);
548
549+ if (TYPE_PACKED (TREE_TYPE (TREE_OPERAND (exp, 0)))
550+ || (TREE_CODE (TREE_OPERAND (exp, 1)) == FIELD_DECL
551+ && DECL_PACKED (TREE_OPERAND (exp, 1))))
552+ packedp = true;
553+
554 /* If TEM's type is a union of variable size, pass TARGET to the inner
555 computation, since it will need a temporary and TARGET is known
556 to have to do. This occurs in unchecked conversion in Ada. */
557@@ -8873,6 +8892,14 @@
558 || modifier == EXPAND_STACK_PARM)
559 ? modifier : EXPAND_NORMAL);
560
561+
562+ /* If the bitfield is volatile, we want to access it in the
563+ field's mode, not the computed mode. */
564+ if (volatilep
565+ && GET_CODE (op0) == MEM
566+ && flag_strict_volatile_bitfields > 0)
567+ op0 = adjust_address (op0, mode1, 0);
568+
569 mode2
570 = CONSTANT_P (op0) ? TYPE_MODE (TREE_TYPE (tem)) : GET_MODE (op0);
571
572@@ -8998,6 +9025,9 @@
573 && GET_MODE_CLASS (mode) != MODE_COMPLEX_FLOAT
574 && modifier != EXPAND_CONST_ADDRESS
575 && modifier != EXPAND_INITIALIZER)
576+ /* If the field is volatile, we always want an aligned
577+ access. */
578+ || (volatilep && flag_strict_volatile_bitfields > 0)
579 /* If the field isn't aligned enough to fetch as a memref,
580 fetch it as a bit field. */
581 || (mode1 != BLKmode
582@@ -9058,7 +9088,7 @@
583 if (MEM_P (op0) && REG_P (XEXP (op0, 0)))
584 mark_reg_pointer (XEXP (op0, 0), MEM_ALIGN (op0));
585
586- op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp,
587+ op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp, packedp,
588 (modifier == EXPAND_STACK_PARM
589 ? NULL_RTX : target),
590 ext_mode, ext_mode);
591
592=== modified file 'gcc/expr.h'
593--- old/gcc/expr.h 2010-02-19 09:53:51 +0000
594+++ new/gcc/expr.h 2010-11-04 12:43:52 +0000
595@@ -802,7 +802,7 @@
596 extern void store_bit_field (rtx, unsigned HOST_WIDE_INT,
597 unsigned HOST_WIDE_INT, enum machine_mode, rtx);
598 extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT,
599- unsigned HOST_WIDE_INT, int, rtx,
600+ unsigned HOST_WIDE_INT, int, bool, rtx,
601 enum machine_mode, enum machine_mode);
602 extern rtx extract_low_bits (enum machine_mode, enum machine_mode, rtx);
603 extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
604
605=== modified file 'gcc/fold-const.c'
606--- old/gcc/fold-const.c 2010-10-04 00:50:43 +0000
607+++ new/gcc/fold-const.c 2010-11-04 12:43:52 +0000
608@@ -4208,11 +4208,16 @@
609
610 /* See if we can find a mode to refer to this field. We should be able to,
611 but fail if we can't. */
612- nmode = get_best_mode (lbitsize, lbitpos,
613- const_p ? TYPE_ALIGN (TREE_TYPE (linner))
614- : MIN (TYPE_ALIGN (TREE_TYPE (linner)),
615- TYPE_ALIGN (TREE_TYPE (rinner))),
616- word_mode, lvolatilep || rvolatilep);
617+ if (lvolatilep
618+ && GET_MODE_BITSIZE (lmode) > 0
619+ && flag_strict_volatile_bitfields > 0)
620+ nmode = lmode;
621+ else
622+ nmode = get_best_mode (lbitsize, lbitpos,
623+ const_p ? TYPE_ALIGN (TREE_TYPE (linner))
624+ : MIN (TYPE_ALIGN (TREE_TYPE (linner)),
625+ TYPE_ALIGN (TREE_TYPE (rinner))),
626+ word_mode, lvolatilep || rvolatilep);
627 if (nmode == VOIDmode)
628 return 0;
629
630
631=== modified file 'gcc/stmt.c'
632--- old/gcc/stmt.c 2010-08-13 11:53:46 +0000
633+++ new/gcc/stmt.c 2010-11-04 12:43:52 +0000
634@@ -1751,7 +1751,7 @@
635 xbitpos for the destination store (right justified). */
636 store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode,
637 extract_bit_field (src, bitsize,
638- bitpos % BITS_PER_WORD, 1,
639+ bitpos % BITS_PER_WORD, 1, false,
640 NULL_RTX, word_mode, word_mode));
641 }
642
643
644=== added file 'gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c'
645--- old/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 1970-01-01 00:00:00 +0000
646+++ new/gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c 2010-11-04 12:43:52 +0000
647@@ -0,0 +1,17 @@
648+/* { dg-do compile } */
649+/* { dg-options "-O2 -fstrict-volatile-bitfields" } */
650+
651+typedef struct {
652+ char a:1;
653+ char b:7;
654+ int c;
655+} BitStruct;
656+
657+volatile BitStruct bits;
658+
659+int foo ()
660+{
661+ return bits.b;
662+}
663+
664+/* { dg-final { scan-assembler "mov(b|zbl).*bits" } } */
665
666=== added file 'gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c'
667--- old/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 1970-01-01 00:00:00 +0000
668+++ new/gcc/testsuite/gcc.target/i386/volatile-bitfields-2.c 2010-11-04 12:43:52 +0000
669@@ -0,0 +1,17 @@
670+/* { dg-do compile } */
671+/* { dg-options "-O2 -fno-strict-volatile-bitfields" } */
672+
673+typedef struct {
674+ char a:1;
675+ char b:7;
676+ int c;
677+} BitStruct;
678+
679+volatile BitStruct bits;
680+
681+int foo ()
682+{
683+ return bits.b;
684+}
685+
686+/* { dg-final { scan-assembler "movl.*bits" } } */
687
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99425.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99425.patch
new file mode 100644
index 000000000..17839c03d
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99425.patch
@@ -0,0 +1,128 @@
12010-10-26 Jie Zhang <jie@codesourcery.com>
2
3 Issue #1259
4
5 Backport from mainline:
6
7 gcc/
8 2010-10-26 Jie Zhang <jie@codesourcery.com>
9
10 * stor-layout.c (layout_decl): Use the field's type to
11 determine the mode and keep DECL_BIT_FIELD for a volatile
12 bit-field.
13 * config/arm/arm.c (arm_override_options): Default to
14 -fstrict-volatile-bitfields.
15
16 gcc/testsuite/
17 2010-10-26 Jie Zhang <jie@codesourcery.com>
18
19 * gcc.target/arm/volatile-bitfields-1.c: New test.
20 * gcc.target/arm/volatile-bitfields-2.c: New test.
21 * gcc.target/arm/volatile-bitfields-3.c: New test.
22
23=== modified file 'gcc/config/arm/arm.c'
24--- old/gcc/config/arm/arm.c 2010-11-04 10:45:05 +0000
25+++ new/gcc/config/arm/arm.c 2010-11-04 12:49:37 +0000
26@@ -1933,6 +1933,10 @@
27 calculation, which is 2 instructions. */
28 set_param_value ("gcse-unrestricted-cost", 2);
29
30+ /* ARM EABI defaults to strict volatile bitfields. */
31+ if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0)
32+ flag_strict_volatile_bitfields = 1;
33+
34 /* Register global variables with the garbage collector. */
35 arm_add_gc_roots ();
36
37
38=== modified file 'gcc/stor-layout.c'
39--- old/gcc/stor-layout.c 2010-04-02 18:54:46 +0000
40+++ new/gcc/stor-layout.c 2010-11-04 12:49:37 +0000
41@@ -593,11 +593,14 @@
42 }
43
44 /* See if we can use an ordinary integer mode for a bit-field.
45- Conditions are: a fixed size that is correct for another mode
46- and occupying a complete byte or bytes on proper boundary. */
47+ Conditions are: a fixed size that is correct for another mode,
48+ occupying a complete byte or bytes on proper boundary,
49+ and not volatile or not -fstrict-volatile-bitfields. */
50 if (TYPE_SIZE (type) != 0
51 && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
52- && GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT)
53+ && GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
54+ && !(TREE_THIS_VOLATILE (decl)
55+ && flag_strict_volatile_bitfields > 0))
56 {
57 enum machine_mode xmode
58 = mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
59
60=== added file 'gcc/testsuite/gcc.target/arm/volatile-bitfields-1.c'
61--- old/gcc/testsuite/gcc.target/arm/volatile-bitfields-1.c 1970-01-01 00:00:00 +0000
62+++ new/gcc/testsuite/gcc.target/arm/volatile-bitfields-1.c 2010-11-04 12:49:37 +0000
63@@ -0,0 +1,18 @@
64+/* { dg-require-effective-target arm_eabi } */
65+/* { dg-do compile } */
66+/* { dg-options "-O2" } */
67+
68+typedef struct {
69+ char a:1;
70+ char b:7;
71+ int c;
72+} BitStruct;
73+
74+volatile BitStruct bits;
75+
76+int foo ()
77+{
78+ return bits.b;
79+}
80+
81+/* { dg-final { scan-assembler "ldrb\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" } } */
82
83=== added file 'gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c'
84--- old/gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c 1970-01-01 00:00:00 +0000
85+++ new/gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c 2010-11-04 12:49:37 +0000
86@@ -0,0 +1,18 @@
87+/* { dg-require-effective-target arm_eabi } */
88+/* { dg-do compile } */
89+/* { dg-options "-O2" } */
90+
91+typedef struct {
92+ volatile unsigned long a:8;
93+ volatile unsigned long b:8;
94+ volatile unsigned long c:16;
95+} BitStruct;
96+
97+BitStruct bits;
98+
99+unsigned long foo ()
100+{
101+ return bits.b;
102+}
103+
104+/* { dg-final { scan-assembler "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" } } */
105
106=== added file 'gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c'
107--- old/gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c 1970-01-01 00:00:00 +0000
108+++ new/gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c 2010-11-04 12:49:37 +0000
109@@ -0,0 +1,18 @@
110+/* { dg-require-effective-target arm_eabi } */
111+/* { dg-do compile } */
112+/* { dg-options "-O2" } */
113+
114+typedef struct {
115+ volatile unsigned long a:8;
116+ volatile unsigned long b:8;
117+ volatile unsigned long c:16;
118+} BitStruct;
119+
120+BitStruct bits;
121+
122+unsigned long foo ()
123+{
124+ return bits.c;
125+}
126+
127+/* { dg-final { scan-assembler "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" } } */
128
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99426.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99426.patch
new file mode 100644
index 000000000..cf06e1ff7
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99426.patch
@@ -0,0 +1,41 @@
1 Backport from mainline:
2
3 gcc/
4 2010-10-26 Jie Zhang <jie@codesourcery.com>
5
6 * doc/invoke.texi: Improve documentation of
7 -fstrict-volatile-bitfields.
8
9=== modified file 'gcc/doc/invoke.texi'
10--- old/gcc/doc/invoke.texi 2010-11-04 12:43:52 +0000
11+++ new/gcc/doc/invoke.texi 2010-11-04 14:29:09 +0000
12@@ -17633,8 +17633,8 @@
13 @opindex fstrict-volatile-bitfields
14 This option should be used if accesses to volatile bitfields (or other
15 structure fields, although the compiler usually honors those types
16-anyway) should use a single access in a mode of the same size as the
17-container's type, aligned to a natural alignment if possible. For
18+anyway) should use a single access of the width of the
19+field's type, aligned to a natural alignment if possible. For
20 example, targets with memory-mapped peripheral registers might require
21 all such accesses to be 16 bits wide; with this flag the user could
22 declare all peripheral bitfields as ``unsigned short'' (assuming short
23@@ -17647,11 +17647,13 @@
24 any portion of the bitfield, or memory-mapped registers unrelated to
25 the one being updated.
26
27-If the target requires strict alignment, and honoring the container
28+If the target requires strict alignment, and honoring the field
29 type would require violating this alignment, a warning is issued.
30-However, the access happens as the user requested, under the
31-assumption that the user knows something about the target hardware
32-that GCC is unaware of.
33+If the field has @code{packed} attribute, the access is done without
34+honoring the field type. If the field doesn't have @code{packed}
35+attribute, the access is done honoring the field type. In both cases,
36+GCC assumes that the user knows something about the target hardware
37+that it is unaware of.
38
39 The default value of this option is determined by the application binary
40 interface for the target processor.
41
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99429.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99429.patch
new file mode 100644
index 000000000..63ba95e0e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99429.patch
@@ -0,0 +1,1257 @@
12010-11-09 Michael Hope <michael.hope@linaro.org>
2
3 Revert:
4
5 Backport from mainline:
6
7 2010-07-15 Bernd Schmidt <bernds@codesourcery.com>
8
9 gcc/
10 * postreload.c (last_label_ruid, first_index_reg, last_index_reg):
11 New static variables.
12 (reload_combine_recognize_pattern): New static function, broken out
13 of reload_combine.
14 (reload_combine): Use it. Only initialize first_index_reg and
15 last_index_reg once.
16
17 2010-07-17 Bernd Schmidt <bernds@codesourcery.com>
18
19 PR target/42235
20 gcc/
21 * postreload.c (reload_cse_move2add): Return bool, true if anything.
22 changed. All callers changed.
23 (move2add_use_add2_insn): Likewise.
24 (move2add_use_add3_insn): Likewise.
25 (reload_cse_regs): If reload_cse_move2add changed anything, rerun
26 reload_combine.
27 (RELOAD_COMBINE_MAX_USES): Bump to 16.
28 (last_jump_ruid): New static variable.
29 (struct reg_use): New members CONTAINING_MEM and RUID.
30 (reg_state): New members ALL_OFFSETS_MATCH and REAL_STORE_RUID.
31 (reload_combine_split_one_ruid, reload_combine_split_ruids,
32 reload_combine_purge_insn_uses, reload_combine_closest_single_use
33 reload_combine_purge_reg_uses_after_ruid,
34 reload_combine_recognize_const_pattern): New static functions.
35 (reload_combine_recognize_pattern): Verify that ALL_OFFSETS_MATCH
36 is true for our reg and that we have available index regs.
37 (reload_combine_note_use): New args RUID and CONTAINING_MEM. All
38 callers changed. Use them to initialize fields in struct reg_use.
39 (reload_combine): Initialize last_jump_ruid. Be careful when to
40 take PREV_INSN of the scanned insn. Update REAL_STORE_RUID fields.
41 Call reload_combine_recognize_const_pattern.
42 (reload_combine_note_store): Update REAL_STORE_RUID field.
43
44 gcc/testsuite/
45 * gcc.target/arm/pr42235.c: New test.
46
47 2010-07-19 Bernd Schmidt <bernds@codesourcery.com>
48
49 gcc/
50 * postreload.c (reload_combine_closest_single_use): Ignore the
51 number of uses for DEBUG_INSNs.
52 (fixup_debug_insns): New static function.
53 (reload_combine_recognize_const_pattern): Use it. Don't let the
54 main loop be affected by DEBUG_INSNs.
55 Really disallow moving adds past a jump insn.
56 (reload_combine_recognize_pattern): Don't update use_ruid here.
57 (reload_combine_note_use): Do it here.
58 (reload_combine): Use control_flow_insn_p rather than JUMP_P.
59
60 2010-07-20 Bernd Schmidt <bernds@codesourcery.com>
61
62 gcc/
63 * postreload.c (fixup_debug_insns): Remove arg REGNO. New args
64 FROM and TO. All callers changed. Don't look for tracked uses,
65 just scan the RTL for DEBUG_INSNs and substitute.
66 (reload_combine_recognize_pattern): Call fixup_debug_insns.
67 (reload_combine): Ignore DEBUG_INSNs.
68
69 2010-07-22 Bernd Schmidt <bernds@codesourcery.com>
70
71 PR bootstrap/44970
72 PR middle-end/45009
73 gcc/
74 * postreload.c: Include "target.h".
75 (reload_combine_closest_single_use): Don't take DEBUG_INSNs
76 into account.
77 (fixup_debug_insns): Don't copy the rtx.
78 (reload_combine_recognize_const_pattern): DEBUG_INSNs can't have uses.
79 Don't copy when replacing. Call fixup_debug_insns in the case where
80 we merged one add with another.
81 (reload_combine_recognize_pattern): Fail if there aren't any uses.
82 Try harder to determine whether we're picking a valid index register.
83 Don't set store_ruid for an insn we're going to scan in the
84 next iteration.
85 (reload_combine): Remove unused code.
86 (reload_combine_note_use): When updating use information for
87 an old insn, ignore a use that occurs after store_ruid.
88 * Makefile.in (postreload.o): Update dependencies.
89
90 2010-07-27 Bernd Schmidt <bernds@codesourcery.com>
91
92 gcc/
93 * postreload.c (reload_combine_recognize_const_pattern): Move test
94 for limiting the insn movement to the right scope.
95
96 2010-07-27 Bernd Schmidt <bernds@codesourcery.com>
97
98 gcc/
99 * postreload.c (try_replace_in_use): New static function.
100 (reload_combine_recognize_const_pattern): Use it here. Allow
101 substituting into a final add insn, and substituting into a memory
102 reference in an insn that sets the reg.
103
104=== modified file 'gcc/Makefile.in'
105--- old/gcc/Makefile.in 2010-10-14 11:25:44 +0000
106+++ new/gcc/Makefile.in 2010-11-08 22:08:43 +0000
107@@ -3155,7 +3155,7 @@
108 $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
109 hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
110 $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(MACHMODE_H) \
111- $(OBSTACK_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
112+ $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
113 postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
114 $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
115 $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
116
117=== modified file 'gcc/postreload.c'
118--- old/gcc/postreload.c 2010-10-14 11:32:02 +0000
119+++ new/gcc/postreload.c 2010-11-08 22:08:43 +0000
120@@ -44,7 +44,6 @@
121 #include "toplev.h"
122 #include "except.h"
123 #include "tree.h"
124-#include "target.h"
125 #include "timevar.h"
126 #include "tree-pass.h"
127 #include "df.h"
128@@ -57,10 +56,10 @@
129 static int reload_cse_simplify_operands (rtx, rtx);
130
131 static void reload_combine (void);
132-static void reload_combine_note_use (rtx *, rtx, int, rtx);
133+static void reload_combine_note_use (rtx *, rtx);
134 static void reload_combine_note_store (rtx, const_rtx, void *);
135
136-static bool reload_cse_move2add (rtx);
137+static void reload_cse_move2add (rtx);
138 static void move2add_note_store (rtx, const_rtx, void *);
139
140 /* Call cse / combine like post-reload optimization phases.
141@@ -68,16 +67,11 @@
142 void
143 reload_cse_regs (rtx first ATTRIBUTE_UNUSED)
144 {
145- bool moves_converted;
146 reload_cse_regs_1 (first);
147 reload_combine ();
148- moves_converted = reload_cse_move2add (first);
149+ reload_cse_move2add (first);
150 if (flag_expensive_optimizations)
151- {
152- if (moves_converted)
153- reload_combine ();
154- reload_cse_regs_1 (first);
155- }
156+ reload_cse_regs_1 (first);
157 }
158
159 /* See whether a single set SET is a noop. */
160@@ -666,43 +660,30 @@
161
162 /* The maximum number of uses of a register we can keep track of to
163 replace them with reg+reg addressing. */
164-#define RELOAD_COMBINE_MAX_USES 16
165+#define RELOAD_COMBINE_MAX_USES 6
166
167-/* Describes a recorded use of a register. */
168-struct reg_use
169-{
170- /* The insn where a register has been used. */
171- rtx insn;
172- /* Points to the memory reference enclosing the use, if any, NULL_RTX
173- otherwise. */
174- rtx containing_mem;
175- /* Location of the register withing INSN. */
176- rtx *usep;
177- /* The reverse uid of the insn. */
178- int ruid;
179-};
180+/* INSN is the insn where a register has been used, and USEP points to the
181+ location of the register within the rtl. */
182+struct reg_use { rtx insn, *usep; };
183
184 /* If the register is used in some unknown fashion, USE_INDEX is negative.
185 If it is dead, USE_INDEX is RELOAD_COMBINE_MAX_USES, and STORE_RUID
186- indicates where it is first set or clobbered.
187+ indicates where it becomes live again.
188 Otherwise, USE_INDEX is the index of the last encountered use of the
189- register (which is first among these we have seen since we scan backwards).
190- USE_RUID indicates the first encountered, i.e. last, of these uses.
191- If ALL_OFFSETS_MATCH is true, all encountered uses were inside a PLUS
192- with a constant offset; OFFSET contains this constant in that case.
193+ register (which is first among these we have seen since we scan backwards),
194+ OFFSET contains the constant offset that is added to the register in
195+ all encountered uses, and USE_RUID indicates the first encountered, i.e.
196+ last, of these uses.
197 STORE_RUID is always meaningful if we only want to use a value in a
198 register in a different place: it denotes the next insn in the insn
199- stream (i.e. the last encountered) that sets or clobbers the register.
200- REAL_STORE_RUID is similar, but clobbers are ignored when updating it. */
201+ stream (i.e. the last encountered) that sets or clobbers the register. */
202 static struct
203 {
204 struct reg_use reg_use[RELOAD_COMBINE_MAX_USES];
205+ int use_index;
206 rtx offset;
207- int use_index;
208 int store_ruid;
209- int real_store_ruid;
210 int use_ruid;
211- bool all_offsets_match;
212 } reg_state[FIRST_PSEUDO_REGISTER];
213
214 /* Reverse linear uid. This is increased in reload_combine while scanning
215@@ -710,548 +691,42 @@
216 and the store_ruid / use_ruid fields in reg_state. */
217 static int reload_combine_ruid;
218
219-/* The RUID of the last label we encountered in reload_combine. */
220-static int last_label_ruid;
221-
222-/* The RUID of the last jump we encountered in reload_combine. */
223-static int last_jump_ruid;
224-
225-/* The register numbers of the first and last index register. A value of
226- -1 in LAST_INDEX_REG indicates that we've previously computed these
227- values and found no suitable index registers. */
228-static int first_index_reg = -1;
229-static int last_index_reg;
230-
231 #define LABEL_LIVE(LABEL) \
232 (label_live[CODE_LABEL_NUMBER (LABEL) - min_labelno])
233
234-/* Subroutine of reload_combine_split_ruids, called to fix up a single
235- ruid pointed to by *PRUID if it is higher than SPLIT_RUID. */
236-
237-static inline void
238-reload_combine_split_one_ruid (int *pruid, int split_ruid)
239-{
240- if (*pruid > split_ruid)
241- (*pruid)++;
242-}
243-
244-/* Called when we insert a new insn in a position we've already passed in
245- the scan. Examine all our state, increasing all ruids that are higher
246- than SPLIT_RUID by one in order to make room for a new insn. */
247-
248-static void
249-reload_combine_split_ruids (int split_ruid)
250-{
251- unsigned i;
252-
253- reload_combine_split_one_ruid (&reload_combine_ruid, split_ruid);
254- reload_combine_split_one_ruid (&last_label_ruid, split_ruid);
255- reload_combine_split_one_ruid (&last_jump_ruid, split_ruid);
256-
257- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
258- {
259- int j, idx = reg_state[i].use_index;
260- reload_combine_split_one_ruid (&reg_state[i].use_ruid, split_ruid);
261- reload_combine_split_one_ruid (&reg_state[i].store_ruid, split_ruid);
262- reload_combine_split_one_ruid (&reg_state[i].real_store_ruid,
263- split_ruid);
264- if (idx < 0)
265- continue;
266- for (j = idx; j < RELOAD_COMBINE_MAX_USES; j++)
267- {
268- reload_combine_split_one_ruid (&reg_state[i].reg_use[j].ruid,
269- split_ruid);
270- }
271- }
272-}
273-
274-/* Called when we are about to rescan a previously encountered insn with
275- reload_combine_note_use after modifying some part of it. This clears all
276- information about uses in that particular insn. */
277-
278-static void
279-reload_combine_purge_insn_uses (rtx insn)
280-{
281- unsigned i;
282-
283- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
284- {
285- int j, k, idx = reg_state[i].use_index;
286- if (idx < 0)
287- continue;
288- j = k = RELOAD_COMBINE_MAX_USES;
289- while (j-- > idx)
290- {
291- if (reg_state[i].reg_use[j].insn != insn)
292- {
293- k--;
294- if (k != j)
295- reg_state[i].reg_use[k] = reg_state[i].reg_use[j];
296- }
297- }
298- reg_state[i].use_index = k;
299- }
300-}
301-
302-/* Called when we need to forget about all uses of REGNO after an insn
303- which is identified by RUID. */
304-
305-static void
306-reload_combine_purge_reg_uses_after_ruid (unsigned regno, int ruid)
307-{
308- int j, k, idx = reg_state[regno].use_index;
309- if (idx < 0)
310- return;
311- j = k = RELOAD_COMBINE_MAX_USES;
312- while (j-- > idx)
313- {
314- if (reg_state[regno].reg_use[j].ruid >= ruid)
315- {
316- k--;
317- if (k != j)
318- reg_state[regno].reg_use[k] = reg_state[regno].reg_use[j];
319- }
320- }
321- reg_state[regno].use_index = k;
322-}
323-
324-/* Find the use of REGNO with the ruid that is highest among those
325- lower than RUID_LIMIT, and return it if it is the only use of this
326- reg in the insn. Return NULL otherwise. */
327-
328-static struct reg_use *
329-reload_combine_closest_single_use (unsigned regno, int ruid_limit)
330-{
331- int i, best_ruid = 0;
332- int use_idx = reg_state[regno].use_index;
333- struct reg_use *retval;
334-
335- if (use_idx < 0)
336- return NULL;
337- retval = NULL;
338- for (i = use_idx; i < RELOAD_COMBINE_MAX_USES; i++)
339- {
340- struct reg_use *use = reg_state[regno].reg_use + i;
341- int this_ruid = use->ruid;
342- if (this_ruid >= ruid_limit)
343- continue;
344- if (this_ruid > best_ruid)
345- {
346- best_ruid = this_ruid;
347- retval = use;
348- }
349- else if (this_ruid == best_ruid)
350- retval = NULL;
351- }
352- if (last_label_ruid >= best_ruid)
353- return NULL;
354- return retval;
355-}
356-
357-/* After we've moved an add insn, fix up any debug insns that occur
358- between the old location of the add and the new location. REG is
359- the destination register of the add insn; REPLACEMENT is the
360- SET_SRC of the add. FROM and TO specify the range in which we
361- should make this change on debug insns. */
362-
363-static void
364-fixup_debug_insns (rtx reg, rtx replacement, rtx from, rtx to)
365-{
366- rtx insn;
367- for (insn = from; insn != to; insn = NEXT_INSN (insn))
368- {
369- rtx t;
370-
371- if (!DEBUG_INSN_P (insn))
372- continue;
373-
374- t = INSN_VAR_LOCATION_LOC (insn);
375- t = simplify_replace_rtx (t, reg, replacement);
376- validate_change (insn, &INSN_VAR_LOCATION_LOC (insn), t, 0);
377- }
378-}
379-
380-/* Subroutine of reload_combine_recognize_const_pattern. Try to replace REG
381- with SRC in the insn described by USE, taking costs into account. Return
382- true if we made the replacement. */
383-
384-static bool
385-try_replace_in_use (struct reg_use *use, rtx reg, rtx src)
386-{
387- rtx use_insn = use->insn;
388- rtx mem = use->containing_mem;
389- bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn));
390-
391- if (mem != NULL_RTX)
392- {
393- addr_space_t as = MEM_ADDR_SPACE (mem);
394- rtx oldaddr = XEXP (mem, 0);
395- rtx newaddr = NULL_RTX;
396- int old_cost = address_cost (oldaddr, GET_MODE (mem), as, speed);
397- int new_cost;
398-
399- newaddr = simplify_replace_rtx (oldaddr, reg, src);
400- if (memory_address_addr_space_p (GET_MODE (mem), newaddr, as))
401- {
402- XEXP (mem, 0) = newaddr;
403- new_cost = address_cost (newaddr, GET_MODE (mem), as, speed);
404- XEXP (mem, 0) = oldaddr;
405- if (new_cost <= old_cost
406- && validate_change (use_insn,
407- &XEXP (mem, 0), newaddr, 0))
408- return true;
409- }
410- }
411- else
412- {
413- rtx new_set = single_set (use_insn);
414- if (new_set
415- && REG_P (SET_DEST (new_set))
416- && GET_CODE (SET_SRC (new_set)) == PLUS
417- && REG_P (XEXP (SET_SRC (new_set), 0))
418- && CONSTANT_P (XEXP (SET_SRC (new_set), 1)))
419- {
420- rtx new_src;
421- int old_cost = rtx_cost (SET_SRC (new_set), SET, speed);
422-
423- gcc_assert (rtx_equal_p (XEXP (SET_SRC (new_set), 0), reg));
424- new_src = simplify_replace_rtx (SET_SRC (new_set), reg, src);
425-
426- if (rtx_cost (new_src, SET, speed) <= old_cost
427- && validate_change (use_insn, &SET_SRC (new_set),
428- new_src, 0))
429- return true;
430- }
431- }
432- return false;
433-}
434-
435-/* Called by reload_combine when scanning INSN. This function tries to detect
436- patterns where a constant is added to a register, and the result is used
437- in an address.
438- Return true if no further processing is needed on INSN; false if it wasn't
439- recognized and should be handled normally. */
440-
441-static bool
442-reload_combine_recognize_const_pattern (rtx insn)
443-{
444- int from_ruid = reload_combine_ruid;
445- rtx set, pat, reg, src, addreg;
446- unsigned int regno;
447- struct reg_use *use;
448- bool must_move_add;
449- rtx add_moved_after_insn = NULL_RTX;
450- int add_moved_after_ruid = 0;
451- int clobbered_regno = -1;
452-
453- set = single_set (insn);
454- if (set == NULL_RTX)
455- return false;
456-
457- reg = SET_DEST (set);
458- src = SET_SRC (set);
459- if (!REG_P (reg)
460- || hard_regno_nregs[REGNO (reg)][GET_MODE (reg)] != 1
461- || GET_MODE (reg) != Pmode
462- || reg == stack_pointer_rtx)
463- return false;
464-
465- regno = REGNO (reg);
466-
467- /* We look for a REG1 = REG2 + CONSTANT insn, followed by either
468- uses of REG1 inside an address, or inside another add insn. If
469- possible and profitable, merge the addition into subsequent
470- uses. */
471- if (GET_CODE (src) != PLUS
472- || !REG_P (XEXP (src, 0))
473- || !CONSTANT_P (XEXP (src, 1)))
474- return false;
475-
476- addreg = XEXP (src, 0);
477- must_move_add = rtx_equal_p (reg, addreg);
478-
479- pat = PATTERN (insn);
480- if (must_move_add && set != pat)
481- {
482- /* We have to be careful when moving the add; apart from the
483- single_set there may also be clobbers. Recognize one special
484- case, that of one clobber alongside the set (likely a clobber
485- of the CC register). */
486- gcc_assert (GET_CODE (PATTERN (insn)) == PARALLEL);
487- if (XVECLEN (pat, 0) != 2 || XVECEXP (pat, 0, 0) != set
488- || GET_CODE (XVECEXP (pat, 0, 1)) != CLOBBER
489- || !REG_P (XEXP (XVECEXP (pat, 0, 1), 0)))
490- return false;
491- clobbered_regno = REGNO (XEXP (XVECEXP (pat, 0, 1), 0));
492- }
493-
494- do
495- {
496- use = reload_combine_closest_single_use (regno, from_ruid);
497-
498- if (use)
499- /* Start the search for the next use from here. */
500- from_ruid = use->ruid;
501-
502- if (use && GET_MODE (*use->usep) == Pmode)
503- {
504- bool delete_add = false;
505- rtx use_insn = use->insn;
506- int use_ruid = use->ruid;
507-
508- /* Avoid moving the add insn past a jump. */
509- if (must_move_add && use_ruid <= last_jump_ruid)
510- break;
511-
512- /* If the add clobbers another hard reg in parallel, don't move
513- it past a real set of this hard reg. */
514- if (must_move_add && clobbered_regno >= 0
515- && reg_state[clobbered_regno].real_store_ruid >= use_ruid)
516- break;
517-
518- gcc_assert (reg_state[regno].store_ruid <= use_ruid);
519- /* Avoid moving a use of ADDREG past a point where it is stored. */
520- if (reg_state[REGNO (addreg)].store_ruid > use_ruid)
521- break;
522-
523- /* We also must not move the addition past an insn that sets
524- the same register, unless we can combine two add insns. */
525- if (must_move_add && reg_state[regno].store_ruid == use_ruid)
526- {
527- if (use->containing_mem == NULL_RTX)
528- delete_add = true;
529- else
530- break;
531- }
532-
533- if (try_replace_in_use (use, reg, src))
534- {
535- reload_combine_purge_insn_uses (use_insn);
536- reload_combine_note_use (&PATTERN (use_insn), use_insn,
537- use_ruid, NULL_RTX);
538-
539- if (delete_add)
540- {
541- fixup_debug_insns (reg, src, insn, use_insn);
542- delete_insn (insn);
543- return true;
544- }
545- if (must_move_add)
546- {
547- add_moved_after_insn = use_insn;
548- add_moved_after_ruid = use_ruid;
549- }
550- continue;
551- }
552- }
553- /* If we get here, we couldn't handle this use. */
554- if (must_move_add)
555- break;
556- }
557- while (use);
558-
559- if (!must_move_add || add_moved_after_insn == NULL_RTX)
560- /* Process the add normally. */
561- return false;
562-
563- fixup_debug_insns (reg, src, insn, add_moved_after_insn);
564-
565- reorder_insns (insn, insn, add_moved_after_insn);
566- reload_combine_purge_reg_uses_after_ruid (regno, add_moved_after_ruid);
567- reload_combine_split_ruids (add_moved_after_ruid - 1);
568- reload_combine_note_use (&PATTERN (insn), insn,
569- add_moved_after_ruid, NULL_RTX);
570- reg_state[regno].store_ruid = add_moved_after_ruid;
571-
572- return true;
573-}
574-
575-/* Called by reload_combine when scanning INSN. Try to detect a pattern we
576- can handle and improve. Return true if no further processing is needed on
577- INSN; false if it wasn't recognized and should be handled normally. */
578-
579-static bool
580-reload_combine_recognize_pattern (rtx insn)
581-{
582- rtx set, reg, src;
583- unsigned int regno;
584-
585- set = single_set (insn);
586- if (set == NULL_RTX)
587- return false;
588-
589- reg = SET_DEST (set);
590- src = SET_SRC (set);
591- if (!REG_P (reg)
592- || hard_regno_nregs[REGNO (reg)][GET_MODE (reg)] != 1)
593- return false;
594-
595- regno = REGNO (reg);
596-
597- /* Look for (set (REGX) (CONST_INT))
598- (set (REGX) (PLUS (REGX) (REGY)))
599- ...
600- ... (MEM (REGX)) ...
601- and convert it to
602- (set (REGZ) (CONST_INT))
603- ...
604- ... (MEM (PLUS (REGZ) (REGY)))... .
605-
606- First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
607- and that we know all uses of REGX before it dies.
608- Also, explicitly check that REGX != REGY; our life information
609- does not yet show whether REGY changes in this insn. */
610-
611- if (GET_CODE (src) == PLUS
612- && reg_state[regno].all_offsets_match
613- && last_index_reg != -1
614- && REG_P (XEXP (src, 1))
615- && rtx_equal_p (XEXP (src, 0), reg)
616- && !rtx_equal_p (XEXP (src, 1), reg)
617- && reg_state[regno].use_index >= 0
618- && reg_state[regno].use_index < RELOAD_COMBINE_MAX_USES
619- && last_label_ruid < reg_state[regno].use_ruid)
620- {
621- rtx base = XEXP (src, 1);
622- rtx prev = prev_nonnote_insn (insn);
623- rtx prev_set = prev ? single_set (prev) : NULL_RTX;
624- rtx index_reg = NULL_RTX;
625- rtx reg_sum = NULL_RTX;
626- int i;
627-
628- /* Now we need to set INDEX_REG to an index register (denoted as
629- REGZ in the illustration above) and REG_SUM to the expression
630- register+register that we want to use to substitute uses of REG
631- (typically in MEMs) with. First check REG and BASE for being
632- index registers; we can use them even if they are not dead. */
633- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
634- || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
635- REGNO (base)))
636- {
637- index_reg = reg;
638- reg_sum = src;
639- }
640- else
641- {
642- /* Otherwise, look for a free index register. Since we have
643- checked above that neither REG nor BASE are index registers,
644- if we find anything at all, it will be different from these
645- two registers. */
646- for (i = first_index_reg; i <= last_index_reg; i++)
647- {
648- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], i)
649- && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
650- && reg_state[i].store_ruid <= reg_state[regno].use_ruid
651- && (call_used_regs[i] || df_regs_ever_live_p (i))
652- && (!frame_pointer_needed || i != HARD_FRAME_POINTER_REGNUM)
653- && !fixed_regs[i] && !global_regs[i]
654- && hard_regno_nregs[i][GET_MODE (reg)] == 1
655- && targetm.hard_regno_scratch_ok (i))
656- {
657- index_reg = gen_rtx_REG (GET_MODE (reg), i);
658- reg_sum = gen_rtx_PLUS (GET_MODE (reg), index_reg, base);
659- break;
660- }
661- }
662- }
663-
664- /* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
665- (REGY), i.e. BASE, is not clobbered before the last use we'll
666- create. */
667- if (reg_sum
668- && prev_set
669- && CONST_INT_P (SET_SRC (prev_set))
670- && rtx_equal_p (SET_DEST (prev_set), reg)
671- && (reg_state[REGNO (base)].store_ruid
672- <= reg_state[regno].use_ruid))
673- {
674- /* Change destination register and, if necessary, the constant
675- value in PREV, the constant loading instruction. */
676- validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
677- if (reg_state[regno].offset != const0_rtx)
678- validate_change (prev,
679- &SET_SRC (prev_set),
680- GEN_INT (INTVAL (SET_SRC (prev_set))
681- + INTVAL (reg_state[regno].offset)),
682- 1);
683-
684- /* Now for every use of REG that we have recorded, replace REG
685- with REG_SUM. */
686- for (i = reg_state[regno].use_index;
687- i < RELOAD_COMBINE_MAX_USES; i++)
688- validate_unshare_change (reg_state[regno].reg_use[i].insn,
689- reg_state[regno].reg_use[i].usep,
690- /* Each change must have its own
691- replacement. */
692- reg_sum, 1);
693-
694- if (apply_change_group ())
695- {
696- struct reg_use *lowest_ruid = NULL;
697-
698- /* For every new use of REG_SUM, we have to record the use
699- of BASE therein, i.e. operand 1. */
700- for (i = reg_state[regno].use_index;
701- i < RELOAD_COMBINE_MAX_USES; i++)
702- {
703- struct reg_use *use = reg_state[regno].reg_use + i;
704- reload_combine_note_use (&XEXP (*use->usep, 1), use->insn,
705- use->ruid, use->containing_mem);
706- if (lowest_ruid == NULL || use->ruid < lowest_ruid->ruid)
707- lowest_ruid = use;
708- }
709-
710- fixup_debug_insns (reg, reg_sum, insn, lowest_ruid->insn);
711-
712- /* Delete the reg-reg addition. */
713- delete_insn (insn);
714-
715- if (reg_state[regno].offset != const0_rtx)
716- /* Previous REG_EQUIV / REG_EQUAL notes for PREV
717- are now invalid. */
718- remove_reg_equal_equiv_notes (prev);
719-
720- reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
721- return true;
722- }
723- }
724- }
725- return false;
726-}
727-
728 static void
729 reload_combine (void)
730 {
731- rtx insn, prev;
732+ rtx insn, set;
733+ int first_index_reg = -1;
734+ int last_index_reg = 0;
735 int i;
736 basic_block bb;
737 unsigned int r;
738+ int last_label_ruid;
739 int min_labelno, n_labels;
740 HARD_REG_SET ever_live_at_start, *label_live;
741
742+ /* If reg+reg can be used in offsetable memory addresses, the main chunk of
743+ reload has already used it where appropriate, so there is no use in
744+ trying to generate it now. */
745+ if (double_reg_address_ok && INDEX_REG_CLASS != NO_REGS)
746+ return;
747+
748 /* To avoid wasting too much time later searching for an index register,
749 determine the minimum and maximum index register numbers. */
750- if (INDEX_REG_CLASS == NO_REGS)
751- last_index_reg = -1;
752- else if (first_index_reg == -1 && last_index_reg == 0)
753- {
754- for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
755- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
756- {
757- if (first_index_reg == -1)
758- first_index_reg = r;
759-
760- last_index_reg = r;
761- }
762-
763- /* If no index register is available, we can quit now. Set LAST_INDEX_REG
764- to -1 so we'll know to quit early the next time we get here. */
765- if (first_index_reg == -1)
766- {
767- last_index_reg = -1;
768- return;
769- }
770- }
771+ for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
772+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
773+ {
774+ if (first_index_reg == -1)
775+ first_index_reg = r;
776+
777+ last_index_reg = r;
778+ }
779+
780+ /* If no index register is available, we can quit now. */
781+ if (first_index_reg == -1)
782+ return;
783
784 /* Set up LABEL_LIVE and EVER_LIVE_AT_START. The register lifetime
785 information is a bit fuzzy immediately after reload, but it's
786@@ -1278,23 +753,20 @@
787 }
788
789 /* Initialize last_label_ruid, reload_combine_ruid and reg_state. */
790- last_label_ruid = last_jump_ruid = reload_combine_ruid = 0;
791+ last_label_ruid = reload_combine_ruid = 0;
792 for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
793 {
794- reg_state[r].store_ruid = 0;
795- reg_state[r].real_store_ruid = 0;
796+ reg_state[r].store_ruid = reload_combine_ruid;
797 if (fixed_regs[r])
798 reg_state[r].use_index = -1;
799 else
800 reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
801 }
802
803- for (insn = get_last_insn (); insn; insn = prev)
804+ for (insn = get_last_insn (); insn; insn = PREV_INSN (insn))
805 {
806 rtx note;
807
808- prev = PREV_INSN (insn);
809-
810 /* We cannot do our optimization across labels. Invalidating all the use
811 information we have would be costly, so we just note where the label
812 is and then later disable any optimization that would cross it. */
813@@ -1305,17 +777,141 @@
814 if (! fixed_regs[r])
815 reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
816
817- if (! NONDEBUG_INSN_P (insn))
818+ if (! INSN_P (insn))
819 continue;
820
821 reload_combine_ruid++;
822
823- if (control_flow_insn_p (insn))
824- last_jump_ruid = reload_combine_ruid;
825-
826- if (reload_combine_recognize_const_pattern (insn)
827- || reload_combine_recognize_pattern (insn))
828- continue;
829+ /* Look for (set (REGX) (CONST_INT))
830+ (set (REGX) (PLUS (REGX) (REGY)))
831+ ...
832+ ... (MEM (REGX)) ...
833+ and convert it to
834+ (set (REGZ) (CONST_INT))
835+ ...
836+ ... (MEM (PLUS (REGZ) (REGY)))... .
837+
838+ First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
839+ and that we know all uses of REGX before it dies.
840+ Also, explicitly check that REGX != REGY; our life information
841+ does not yet show whether REGY changes in this insn. */
842+ set = single_set (insn);
843+ if (set != NULL_RTX
844+ && REG_P (SET_DEST (set))
845+ && (hard_regno_nregs[REGNO (SET_DEST (set))]
846+ [GET_MODE (SET_DEST (set))]
847+ == 1)
848+ && GET_CODE (SET_SRC (set)) == PLUS
849+ && REG_P (XEXP (SET_SRC (set), 1))
850+ && rtx_equal_p (XEXP (SET_SRC (set), 0), SET_DEST (set))
851+ && !rtx_equal_p (XEXP (SET_SRC (set), 1), SET_DEST (set))
852+ && last_label_ruid < reg_state[REGNO (SET_DEST (set))].use_ruid)
853+ {
854+ rtx reg = SET_DEST (set);
855+ rtx plus = SET_SRC (set);
856+ rtx base = XEXP (plus, 1);
857+ rtx prev = prev_nonnote_nondebug_insn (insn);
858+ rtx prev_set = prev ? single_set (prev) : NULL_RTX;
859+ unsigned int regno = REGNO (reg);
860+ rtx index_reg = NULL_RTX;
861+ rtx reg_sum = NULL_RTX;
862+
863+ /* Now we need to set INDEX_REG to an index register (denoted as
864+ REGZ in the illustration above) and REG_SUM to the expression
865+ register+register that we want to use to substitute uses of REG
866+ (typically in MEMs) with. First check REG and BASE for being
867+ index registers; we can use them even if they are not dead. */
868+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
869+ || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
870+ REGNO (base)))
871+ {
872+ index_reg = reg;
873+ reg_sum = plus;
874+ }
875+ else
876+ {
877+ /* Otherwise, look for a free index register. Since we have
878+ checked above that neither REG nor BASE are index registers,
879+ if we find anything at all, it will be different from these
880+ two registers. */
881+ for (i = first_index_reg; i <= last_index_reg; i++)
882+ {
883+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
884+ i)
885+ && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
886+ && reg_state[i].store_ruid <= reg_state[regno].use_ruid
887+ && hard_regno_nregs[i][GET_MODE (reg)] == 1)
888+ {
889+ index_reg = gen_rtx_REG (GET_MODE (reg), i);
890+ reg_sum = gen_rtx_PLUS (GET_MODE (reg), index_reg, base);
891+ break;
892+ }
893+ }
894+ }
895+
896+ /* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
897+ (REGY), i.e. BASE, is not clobbered before the last use we'll
898+ create. */
899+ if (reg_sum
900+ && prev_set
901+ && CONST_INT_P (SET_SRC (prev_set))
902+ && rtx_equal_p (SET_DEST (prev_set), reg)
903+ && reg_state[regno].use_index >= 0
904+ && (reg_state[REGNO (base)].store_ruid
905+ <= reg_state[regno].use_ruid))
906+ {
907+ int i;
908+
909+ /* Change destination register and, if necessary, the constant
910+ value in PREV, the constant loading instruction. */
911+ validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
912+ if (reg_state[regno].offset != const0_rtx)
913+ validate_change (prev,
914+ &SET_SRC (prev_set),
915+ GEN_INT (INTVAL (SET_SRC (prev_set))
916+ + INTVAL (reg_state[regno].offset)),
917+ 1);
918+
919+ /* Now for every use of REG that we have recorded, replace REG
920+ with REG_SUM. */
921+ for (i = reg_state[regno].use_index;
922+ i < RELOAD_COMBINE_MAX_USES; i++)
923+ validate_unshare_change (reg_state[regno].reg_use[i].insn,
924+ reg_state[regno].reg_use[i].usep,
925+ /* Each change must have its own
926+ replacement. */
927+ reg_sum, 1);
928+
929+ if (apply_change_group ())
930+ {
931+ /* For every new use of REG_SUM, we have to record the use
932+ of BASE therein, i.e. operand 1. */
933+ for (i = reg_state[regno].use_index;
934+ i < RELOAD_COMBINE_MAX_USES; i++)
935+ reload_combine_note_use
936+ (&XEXP (*reg_state[regno].reg_use[i].usep, 1),
937+ reg_state[regno].reg_use[i].insn);
938+
939+ if (reg_state[REGNO (base)].use_ruid
940+ > reg_state[regno].use_ruid)
941+ reg_state[REGNO (base)].use_ruid
942+ = reg_state[regno].use_ruid;
943+
944+ /* Delete the reg-reg addition. */
945+ delete_insn (insn);
946+
947+ if (reg_state[regno].offset != const0_rtx)
948+ /* Previous REG_EQUIV / REG_EQUAL notes for PREV
949+ are now invalid. */
950+ remove_reg_equal_equiv_notes (prev);
951+
952+ reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
953+ reg_state[REGNO (index_reg)].store_ruid
954+ = reload_combine_ruid;
955+ continue;
956+ }
957+ }
958+ }
959
960 note_stores (PATTERN (insn), reload_combine_note_store, NULL);
961
962@@ -1371,8 +967,7 @@
963 reg_state[i].use_index = -1;
964 }
965
966- reload_combine_note_use (&PATTERN (insn), insn,
967- reload_combine_ruid, NULL_RTX);
968+ reload_combine_note_use (&PATTERN (insn), insn);
969 for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
970 {
971 if (REG_NOTE_KIND (note) == REG_INC
972@@ -1381,7 +976,6 @@
973 int regno = REGNO (XEXP (note, 0));
974
975 reg_state[regno].store_ruid = reload_combine_ruid;
976- reg_state[regno].real_store_ruid = reload_combine_ruid;
977 reg_state[regno].use_index = -1;
978 }
979 }
980@@ -1391,8 +985,8 @@
981 }
982
983 /* Check if DST is a register or a subreg of a register; if it is,
984- update store_ruid, real_store_ruid and use_index in the reg_state
985- structure accordingly. Called via note_stores from reload_combine. */
986+ update reg_state[regno].store_ruid and reg_state[regno].use_index
987+ accordingly. Called via note_stores from reload_combine. */
988
989 static void
990 reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED)
991@@ -1416,14 +1010,14 @@
992 /* note_stores might have stripped a STRICT_LOW_PART, so we have to be
993 careful with registers / register parts that are not full words.
994 Similarly for ZERO_EXTRACT. */
995- if (GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
996+ if (GET_CODE (set) != SET
997+ || GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
998 || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
999 {
1000 for (i = hard_regno_nregs[regno][mode] - 1 + regno; i >= regno; i--)
1001 {
1002 reg_state[i].use_index = -1;
1003 reg_state[i].store_ruid = reload_combine_ruid;
1004- reg_state[i].real_store_ruid = reload_combine_ruid;
1005 }
1006 }
1007 else
1008@@ -1431,8 +1025,6 @@
1009 for (i = hard_regno_nregs[regno][mode] - 1 + regno; i >= regno; i--)
1010 {
1011 reg_state[i].store_ruid = reload_combine_ruid;
1012- if (GET_CODE (set) == SET)
1013- reg_state[i].real_store_ruid = reload_combine_ruid;
1014 reg_state[i].use_index = RELOAD_COMBINE_MAX_USES;
1015 }
1016 }
1017@@ -1443,7 +1035,7 @@
1018 *XP is the pattern of INSN, or a part of it.
1019 Called from reload_combine, and recursively by itself. */
1020 static void
1021-reload_combine_note_use (rtx *xp, rtx insn, int ruid, rtx containing_mem)
1022+reload_combine_note_use (rtx *xp, rtx insn)
1023 {
1024 rtx x = *xp;
1025 enum rtx_code code = x->code;
1026@@ -1456,7 +1048,7 @@
1027 case SET:
1028 if (REG_P (SET_DEST (x)))
1029 {
1030- reload_combine_note_use (&SET_SRC (x), insn, ruid, NULL_RTX);
1031+ reload_combine_note_use (&SET_SRC (x), insn);
1032 return;
1033 }
1034 break;
1035@@ -1512,11 +1104,6 @@
1036 return;
1037 }
1038
1039- /* We may be called to update uses in previously seen insns.
1040- Don't add uses beyond the last store we saw. */
1041- if (ruid < reg_state[regno].store_ruid)
1042- return;
1043-
1044 /* If this register is already used in some unknown fashion, we
1045 can't do anything.
1046 If we decrement the index from zero to -1, we can't store more
1047@@ -1525,34 +1112,29 @@
1048 if (use_index < 0)
1049 return;
1050
1051- if (use_index == RELOAD_COMBINE_MAX_USES - 1)
1052+ if (use_index != RELOAD_COMBINE_MAX_USES - 1)
1053+ {
1054+ /* We have found another use for a register that is already
1055+ used later. Check if the offsets match; if not, mark the
1056+ register as used in an unknown fashion. */
1057+ if (! rtx_equal_p (offset, reg_state[regno].offset))
1058+ {
1059+ reg_state[regno].use_index = -1;
1060+ return;
1061+ }
1062+ }
1063+ else
1064 {
1065 /* This is the first use of this register we have seen since we
1066 marked it as dead. */
1067 reg_state[regno].offset = offset;
1068- reg_state[regno].all_offsets_match = true;
1069- reg_state[regno].use_ruid = ruid;
1070- }
1071- else
1072- {
1073- if (reg_state[regno].use_ruid > ruid)
1074- reg_state[regno].use_ruid = ruid;
1075-
1076- if (! rtx_equal_p (offset, reg_state[regno].offset))
1077- reg_state[regno].all_offsets_match = false;
1078- }
1079-
1080+ reg_state[regno].use_ruid = reload_combine_ruid;
1081+ }
1082 reg_state[regno].reg_use[use_index].insn = insn;
1083- reg_state[regno].reg_use[use_index].ruid = ruid;
1084- reg_state[regno].reg_use[use_index].containing_mem = containing_mem;
1085 reg_state[regno].reg_use[use_index].usep = xp;
1086 return;
1087 }
1088
1089- case MEM:
1090- containing_mem = x;
1091- break;
1092-
1093 default:
1094 break;
1095 }
1096@@ -1562,12 +1144,11 @@
1097 for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
1098 {
1099 if (fmt[i] == 'e')
1100- reload_combine_note_use (&XEXP (x, i), insn, ruid, containing_mem);
1101+ reload_combine_note_use (&XEXP (x, i), insn);
1102 else if (fmt[i] == 'E')
1103 {
1104 for (j = XVECLEN (x, i) - 1; j >= 0; j--)
1105- reload_combine_note_use (&XVECEXP (x, i, j), insn, ruid,
1106- containing_mem);
1107+ reload_combine_note_use (&XVECEXP (x, i, j), insn);
1108 }
1109 }
1110 }
1111@@ -1615,10 +1196,9 @@
1112 while REG is known to already have value (SYM + offset).
1113 This function tries to change INSN into an add instruction
1114 (set (REG) (plus (REG) (OFF - offset))) using the known value.
1115- It also updates the information about REG's known value.
1116- Return true if we made a change. */
1117+ It also updates the information about REG's known value. */
1118
1119-static bool
1120+static void
1121 move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn)
1122 {
1123 rtx pat = PATTERN (insn);
1124@@ -1627,7 +1207,6 @@
1125 rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[regno],
1126 GET_MODE (reg));
1127 bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
1128- bool changed = false;
1129
1130 /* (set (reg) (plus (reg) (const_int 0))) is not canonical;
1131 use (set (reg) (reg)) instead.
1132@@ -1642,13 +1221,13 @@
1133 (reg)), would be discarded. Maybe we should
1134 try a truncMN pattern? */
1135 if (INTVAL (off) == reg_offset [regno])
1136- changed = validate_change (insn, &SET_SRC (pat), reg, 0);
1137+ validate_change (insn, &SET_SRC (pat), reg, 0);
1138 }
1139 else if (rtx_cost (new_src, PLUS, speed) < rtx_cost (src, SET, speed)
1140 && have_add2_insn (reg, new_src))
1141 {
1142 rtx tem = gen_rtx_PLUS (GET_MODE (reg), reg, new_src);
1143- changed = validate_change (insn, &SET_SRC (pat), tem, 0);
1144+ validate_change (insn, &SET_SRC (pat), tem, 0);
1145 }
1146 else if (sym == NULL_RTX && GET_MODE (reg) != BImode)
1147 {
1148@@ -1673,9 +1252,8 @@
1149 gen_rtx_STRICT_LOW_PART (VOIDmode,
1150 narrow_reg),
1151 narrow_src);
1152- changed = validate_change (insn, &PATTERN (insn),
1153- new_set, 0);
1154- if (changed)
1155+ if (validate_change (insn, &PATTERN (insn),
1156+ new_set, 0))
1157 break;
1158 }
1159 }
1160@@ -1685,7 +1263,6 @@
1161 reg_mode[regno] = GET_MODE (reg);
1162 reg_symbol_ref[regno] = sym;
1163 reg_offset[regno] = INTVAL (off);
1164- return changed;
1165 }
1166
1167
1168@@ -1695,10 +1272,9 @@
1169 value (SYM + offset) and change INSN into an add instruction
1170 (set (REG) (plus (the found register) (OFF - offset))) if such
1171 a register is found. It also updates the information about
1172- REG's known value.
1173- Return true iff we made a change. */
1174+ REG's known value. */
1175
1176-static bool
1177+static void
1178 move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn)
1179 {
1180 rtx pat = PATTERN (insn);
1181@@ -1708,7 +1284,6 @@
1182 int min_regno;
1183 bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
1184 int i;
1185- bool changed = false;
1186
1187 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
1188 if (reg_set_luid[i] > move2add_last_label_luid
1189@@ -1753,25 +1328,20 @@
1190 GET_MODE (reg));
1191 tem = gen_rtx_PLUS (GET_MODE (reg), tem, new_src);
1192 }
1193- if (validate_change (insn, &SET_SRC (pat), tem, 0))
1194- changed = true;
1195+ validate_change (insn, &SET_SRC (pat), tem, 0);
1196 }
1197 reg_set_luid[regno] = move2add_luid;
1198 reg_base_reg[regno] = -1;
1199 reg_mode[regno] = GET_MODE (reg);
1200 reg_symbol_ref[regno] = sym;
1201 reg_offset[regno] = INTVAL (off);
1202- return changed;
1203 }
1204
1205-/* Convert move insns with constant inputs to additions if they are cheaper.
1206- Return true if any changes were made. */
1207-static bool
1208+static void
1209 reload_cse_move2add (rtx first)
1210 {
1211 int i;
1212 rtx insn;
1213- bool changed = false;
1214
1215 for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--)
1216 {
1217@@ -1832,7 +1402,7 @@
1218 && reg_base_reg[regno] < 0
1219 && reg_symbol_ref[regno] == NULL_RTX)
1220 {
1221- changed |= move2add_use_add2_insn (reg, NULL_RTX, src, insn);
1222+ move2add_use_add2_insn (reg, NULL_RTX, src, insn);
1223 continue;
1224 }
1225
1226@@ -1893,7 +1463,6 @@
1227 }
1228 if (success)
1229 delete_insn (insn);
1230- changed |= success;
1231 insn = next;
1232 reg_mode[regno] = GET_MODE (reg);
1233 reg_offset[regno] =
1234@@ -1939,12 +1508,12 @@
1235 && reg_base_reg[regno] < 0
1236 && reg_symbol_ref[regno] != NULL_RTX
1237 && rtx_equal_p (sym, reg_symbol_ref[regno]))
1238- changed |= move2add_use_add2_insn (reg, sym, off, insn);
1239+ move2add_use_add2_insn (reg, sym, off, insn);
1240
1241 /* Otherwise, we have to find a register whose value is sum
1242 of sym and some constant value. */
1243 else
1244- changed |= move2add_use_add3_insn (reg, sym, off, insn);
1245+ move2add_use_add3_insn (reg, sym, off, insn);
1246
1247 continue;
1248 }
1249@@ -1999,7 +1568,6 @@
1250 }
1251 }
1252 }
1253- return changed;
1254 }
1255
1256 /* SET is a SET or CLOBBER that sets DST. DATA is the insn which
1257
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99432.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99432.patch
new file mode 100644
index 000000000..b63c9b35e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99432.patch
@@ -0,0 +1,70 @@
12010-11-03 Nathan Froyd <froydnj@codesourcery.com>
2
3 Issue #10002
4
5 gcc/
6 * config/arm/arm.c (arm_legitimate_index_p): Split
7 VALID_NEON_QREG_MODE and VALID_NEON_DREG_MODE cases. Permit
8 slightly larger constants in the latter case.
9 (thumb2_legitimate_index_p): Likewise.
10
11=== modified file 'gcc/config/arm/arm.c'
12--- old/gcc/config/arm/arm.c 2010-11-04 12:49:37 +0000
13+++ new/gcc/config/arm/arm.c 2010-11-11 11:00:53 +0000
14@@ -5611,13 +5611,25 @@
15 && INTVAL (index) > -1024
16 && (INTVAL (index) & 3) == 0);
17
18- if (TARGET_NEON
19- && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)))
20+ /* For quad modes, we restrict the constant offset to be slightly less
21+ than what the instruction format permits. We do this because for
22+ quad mode moves, we will actually decompose them into two separate
23+ double-mode reads or writes. INDEX must therefore be a valid
24+ (double-mode) offset and so should INDEX+8. */
25+ if (TARGET_NEON && VALID_NEON_QREG_MODE (mode))
26 return (code == CONST_INT
27 && INTVAL (index) < 1016
28 && INTVAL (index) > -1024
29 && (INTVAL (index) & 3) == 0);
30
31+ /* We have no such constraint on double mode offsets, so we permit the
32+ full range of the instruction format. */
33+ if (TARGET_NEON && VALID_NEON_DREG_MODE (mode))
34+ return (code == CONST_INT
35+ && INTVAL (index) < 1024
36+ && INTVAL (index) > -1024
37+ && (INTVAL (index) & 3) == 0);
38+
39 if (TARGET_REALLY_IWMMXT && VALID_IWMMXT_REG_MODE (mode))
40 return (code == CONST_INT
41 && INTVAL (index) < 1024
42@@ -5731,13 +5743,25 @@
43 && (INTVAL (index) & 3) == 0);
44 }
45
46- if (TARGET_NEON
47- && (VALID_NEON_DREG_MODE (mode) || VALID_NEON_QREG_MODE (mode)))
48+ /* For quad modes, we restrict the constant offset to be slightly less
49+ than what the instruction format permits. We do this because for
50+ quad mode moves, we will actually decompose them into two separate
51+ double-mode reads or writes. INDEX must therefore be a valid
52+ (double-mode) offset and so should INDEX+8. */
53+ if (TARGET_NEON && VALID_NEON_QREG_MODE (mode))
54 return (code == CONST_INT
55 && INTVAL (index) < 1016
56 && INTVAL (index) > -1024
57 && (INTVAL (index) & 3) == 0);
58
59+ /* We have no such constraint on double mode offsets, so we permit the
60+ full range of the instruction format. */
61+ if (TARGET_NEON && VALID_NEON_DREG_MODE (mode))
62+ return (code == CONST_INT
63+ && INTVAL (index) < 1024
64+ && INTVAL (index) > -1024
65+ && (INTVAL (index) & 3) == 0);
66+
67 if (arm_address_register_rtx_p (index, strict_p)
68 && (GET_MODE_SIZE (mode) <= 4))
69 return 1;
70
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99433.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99433.patch
new file mode 100644
index 000000000..6bc33f2be
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99433.patch
@@ -0,0 +1,40 @@
12010-10-29 Julian Brown <julian@codesourcery.com>
2
3 Launchpad #629671
4
5 gcc/
6 * config/arm/arm.h (REG_CLASS_CONTENTS): Remove soft frame pointer
7 from CORE_REGS and GENERAL_REGS classes.
8 * config/arm/arm.md (*thumb1_movsi_insn): Ignore all parts of final
9 constraint for register preferencing.
10
11=== modified file 'gcc/config/arm/arm.h'
12--- old/gcc/config/arm/arm.h 2010-11-04 10:45:05 +0000
13+++ new/gcc/config/arm/arm.h 2010-11-11 11:12:14 +0000
14@@ -1262,8 +1262,8 @@
15 { 0x0000DF00, 0x00000000, 0x00000000, 0x00000000 }, /* HI_REGS */ \
16 { 0x01000000, 0x00000000, 0x00000000, 0x00000000 }, /* CC_REG */ \
17 { 0x00000000, 0x00000000, 0x00000000, 0x80000000 }, /* VFPCC_REG */ \
18- { 0x0200DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \
19- { 0x0200FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */ \
20+ { 0x0000DFFF, 0x00000000, 0x00000000, 0x00000000 }, /* GENERAL_REGS */ \
21+ { 0x0000FFFF, 0x00000000, 0x00000000, 0x00000000 }, /* CORE_REGS */ \
22 { 0xFAFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF } /* ALL_REGS */ \
23 }
24
25
26=== modified file 'gcc/config/arm/arm.md'
27--- old/gcc/config/arm/arm.md 2010-11-04 10:45:05 +0000
28+++ new/gcc/config/arm/arm.md 2010-11-11 11:12:14 +0000
29@@ -5160,8 +5160,8 @@
30 })
31
32 (define_insn "*thumb1_movsi_insn"
33- [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*lhk")
34- (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*lhk"))]
35+ [(set (match_operand:SI 0 "nonimmediate_operand" "=l,l,l,l,l,>,l, m,*l*h*k")
36+ (match_operand:SI 1 "general_operand" "l, I,J,K,>,l,mi,l,*l*h*k"))]
37 "TARGET_THUMB1
38 && ( register_operand (operands[0], SImode)
39 || register_operand (operands[1], SImode))"
40
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99434.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99434.patch
new file mode 100644
index 000000000..adda68c62
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99434.patch
@@ -0,0 +1,30 @@
12010-11-3 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-11-02 Chung-Lin Tang <cltang@codesourcery.com>
6
7 gcc/
8 * Makefile.in (LIBGCC2_CFLAGS): Add -fno-stack-protector, to
9 explicitly disable stack protection when building libgcc.
10 (CRTSTUFF_CFLAGS): Same, for crtbegin/end.
11
12--- old/gcc/Makefile.in 2010-11-08 22:08:43 +0000
13+++ new/gcc/Makefile.in 2010-11-11 11:34:59 +0000
14@@ -646,6 +646,7 @@
15 LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) \
16 $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) \
17 -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \
18+ -fno-stack-protector \
19 $(INHIBIT_LIBC_CFLAGS)
20
21 # Additional options to use when compiling libgcc2.a.
22@@ -659,6 +660,7 @@
23 CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
24 -finhibit-size-directive -fno-inline -fno-exceptions \
25 -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
26+ -fno-stack-protector \
27 $(INHIBIT_LIBC_CFLAGS)
28
29 # Additional sources to handle exceptions; overridden by targets as needed.
30
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99435.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99435.patch
new file mode 100644
index 000000000..d66df137f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99435.patch
@@ -0,0 +1,32 @@
12010-11-08 Yao Qi <yao@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/
6 2010-08-02 Bernd Schmidt <bernds@codesourcery.com>
7
8 * config/arm/arm.c (arm_rtx_costs_1): Remove second clause from the
9 if statement which adds extra costs to frame-related
10 expressions.
11
12=== modified file 'gcc/config/arm/arm.c'
13--- old/gcc/config/arm/arm.c 2010-11-11 11:00:53 +0000
14+++ new/gcc/config/arm/arm.c 2010-11-11 11:50:33 +0000
15@@ -6805,12 +6805,10 @@
16 since then they might not be moved outside of loops. As a compromise
17 we allow integration with ops that have a constant as their second
18 operand. */
19- if ((REG_OR_SUBREG_REG (XEXP (x, 0))
20- && ARM_FRAME_RTX (REG_OR_SUBREG_RTX (XEXP (x, 0)))
21- && GET_CODE (XEXP (x, 1)) != CONST_INT)
22- || (REG_OR_SUBREG_REG (XEXP (x, 0))
23- && ARM_FRAME_RTX (REG_OR_SUBREG_RTX (XEXP (x, 0)))))
24- *total = 4;
25+ if (REG_OR_SUBREG_REG (XEXP (x, 0))
26+ && ARM_FRAME_RTX (REG_OR_SUBREG_RTX (XEXP (x, 0)))
27+ && GET_CODE (XEXP (x, 1)) != CONST_INT)
28+ *total = COSTS_N_INSNS (1);
29
30 if (mode == DImode)
31 {
32
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99436.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99436.patch
new file mode 100644
index 000000000..deb749efc
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99436.patch
@@ -0,0 +1,209 @@
12010-11-24 Maxim Kuvyrkov <maxim@codesourcery.com>
2
3 gcc/
4 * combine.c (subst, combine_simlify_rtx): Add new argument, use it
5 to track processing of conditionals. Update all callers.
6 (try_combine, simplify_if_then_else): Update.
7
8=== modified file 'gcc/combine.c'
9--- old/gcc/combine.c 2010-11-04 12:39:28 +0000
10+++ new/gcc/combine.c 2010-11-25 11:11:45 +0000
11@@ -392,8 +392,8 @@
12 static void undo_all (void);
13 static void undo_commit (void);
14 static rtx *find_split_point (rtx *, rtx);
15-static rtx subst (rtx, rtx, rtx, int, int);
16-static rtx combine_simplify_rtx (rtx, enum machine_mode, int);
17+static rtx subst (rtx, rtx, rtx, int, int, int);
18+static rtx combine_simplify_rtx (rtx, enum machine_mode, int, int);
19 static rtx simplify_if_then_else (rtx);
20 static rtx simplify_set (rtx);
21 static rtx simplify_logical (rtx);
22@@ -2944,12 +2944,12 @@
23 if (i1)
24 {
25 subst_low_luid = DF_INSN_LUID (i1);
26- i1src = subst (i1src, pc_rtx, pc_rtx, 0, 0);
27+ i1src = subst (i1src, pc_rtx, pc_rtx, 0, 0, 0);
28 }
29 else
30 {
31 subst_low_luid = DF_INSN_LUID (i2);
32- i2src = subst (i2src, pc_rtx, pc_rtx, 0, 0);
33+ i2src = subst (i2src, pc_rtx, pc_rtx, 0, 0, 0);
34 }
35 }
36
37@@ -2960,7 +2960,7 @@
38 to avoid self-referential rtl. */
39
40 subst_low_luid = DF_INSN_LUID (i2);
41- newpat = subst (PATTERN (i3), i2dest, i2src, 0,
42+ newpat = subst (PATTERN (i3), i2dest, i2src, 0, 0,
43 ! i1_feeds_i3 && i1dest_in_i1src);
44 substed_i2 = 1;
45
46@@ -2991,7 +2991,7 @@
47
48 n_occurrences = 0;
49 subst_low_luid = DF_INSN_LUID (i1);
50- newpat = subst (newpat, i1dest, i1src, 0, 0);
51+ newpat = subst (newpat, i1dest, i1src, 0, 0, 0);
52 substed_i1 = 1;
53 }
54
55@@ -3053,7 +3053,7 @@
56 else
57 /* See comment where i2pat is assigned. */
58 XVECEXP (newpat, 0, --total_sets)
59- = subst (i2pat, i1dest, i1src, 0, 0);
60+ = subst (i2pat, i1dest, i1src, 0, 0, 0);
61 }
62 }
63
64@@ -4605,11 +4605,13 @@
65
66 IN_DEST is nonzero if we are processing the SET_DEST of a SET.
67
68+ IN_COND is nonzero if we are on top level of the condition.
69+
70 UNIQUE_COPY is nonzero if each substitution must be unique. We do this
71 by copying if `n_occurrences' is nonzero. */
72
73 static rtx
74-subst (rtx x, rtx from, rtx to, int in_dest, int unique_copy)
75+subst (rtx x, rtx from, rtx to, int in_dest, int in_cond, int unique_copy)
76 {
77 enum rtx_code code = GET_CODE (x);
78 enum machine_mode op0_mode = VOIDmode;
79@@ -4670,7 +4672,7 @@
80 && GET_CODE (XVECEXP (x, 0, 0)) == SET
81 && GET_CODE (SET_SRC (XVECEXP (x, 0, 0))) == ASM_OPERANDS)
82 {
83- new_rtx = subst (XVECEXP (x, 0, 0), from, to, 0, unique_copy);
84+ new_rtx = subst (XVECEXP (x, 0, 0), from, to, 0, 0, unique_copy);
85
86 /* If this substitution failed, this whole thing fails. */
87 if (GET_CODE (new_rtx) == CLOBBER
88@@ -4687,7 +4689,7 @@
89 && GET_CODE (dest) != CC0
90 && GET_CODE (dest) != PC)
91 {
92- new_rtx = subst (dest, from, to, 0, unique_copy);
93+ new_rtx = subst (dest, from, to, 0, 0, unique_copy);
94
95 /* If this substitution failed, this whole thing fails. */
96 if (GET_CODE (new_rtx) == CLOBBER
97@@ -4733,8 +4735,8 @@
98 }
99 else
100 {
101- new_rtx = subst (XVECEXP (x, i, j), from, to, 0,
102- unique_copy);
103+ new_rtx = subst (XVECEXP (x, i, j), from, to, 0, 0,
104+ unique_copy);
105
106 /* If this substitution failed, this whole thing
107 fails. */
108@@ -4811,7 +4813,9 @@
109 && (code == SUBREG || code == STRICT_LOW_PART
110 || code == ZERO_EXTRACT))
111 || code == SET)
112- && i == 0), unique_copy);
113+ && i == 0),
114+ code == IF_THEN_ELSE && i == 0,
115+ unique_copy);
116
117 /* If we found that we will have to reject this combination,
118 indicate that by returning the CLOBBER ourselves, rather than
119@@ -4868,7 +4872,7 @@
120 /* If X is sufficiently simple, don't bother trying to do anything
121 with it. */
122 if (code != CONST_INT && code != REG && code != CLOBBER)
123- x = combine_simplify_rtx (x, op0_mode, in_dest);
124+ x = combine_simplify_rtx (x, op0_mode, in_dest, in_cond);
125
126 if (GET_CODE (x) == code)
127 break;
128@@ -4888,10 +4892,12 @@
129 expression.
130
131 OP0_MODE is the original mode of XEXP (x, 0). IN_DEST is nonzero
132- if we are inside a SET_DEST. */
133+ if we are inside a SET_DEST. IN_COND is nonzero if we are on the top level
134+ of a condition. */
135
136 static rtx
137-combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest)
138+combine_simplify_rtx (rtx x, enum machine_mode op0_mode, int in_dest,
139+ int in_cond)
140 {
141 enum rtx_code code = GET_CODE (x);
142 enum machine_mode mode = GET_MODE (x);
143@@ -4946,8 +4952,8 @@
144 false arms to store-flag values. Be careful to use copy_rtx
145 here since true_rtx or false_rtx might share RTL with x as a
146 result of the if_then_else_cond call above. */
147- true_rtx = subst (copy_rtx (true_rtx), pc_rtx, pc_rtx, 0, 0);
148- false_rtx = subst (copy_rtx (false_rtx), pc_rtx, pc_rtx, 0, 0);
149+ true_rtx = subst (copy_rtx (true_rtx), pc_rtx, pc_rtx, 0, 0, 0);
150+ false_rtx = subst (copy_rtx (false_rtx), pc_rtx, pc_rtx, 0, 0, 0);
151
152 /* If true_rtx and false_rtx are not general_operands, an if_then_else
153 is unlikely to be simpler. */
154@@ -5291,7 +5297,7 @@
155 {
156 /* Try to simplify the expression further. */
157 rtx tor = simplify_gen_binary (IOR, mode, XEXP (x, 0), XEXP (x, 1));
158- temp = combine_simplify_rtx (tor, mode, in_dest);
159+ temp = combine_simplify_rtx (tor, mode, in_dest, 0);
160
161 /* If we could, great. If not, do not go ahead with the IOR
162 replacement, since PLUS appears in many special purpose
163@@ -5384,7 +5390,16 @@
164 ZERO_EXTRACT is indeed appropriate, it will be placed back by
165 the call to make_compound_operation in the SET case. */
166
167- if (STORE_FLAG_VALUE == 1
168+ if (in_cond)
169+ /* Don't apply below optimizations if the caller would
170+ prefer a comparison rather than a value.
171+ E.g., for the condition in an IF_THEN_ELSE most targets need
172+ an explicit comparison. */
173+ {
174+ ;
175+ }
176+
177+ else if (STORE_FLAG_VALUE == 1
178 && new_code == NE && GET_MODE_CLASS (mode) == MODE_INT
179 && op1 == const0_rtx
180 && mode == GET_MODE (op0)
181@@ -5628,11 +5643,11 @@
182 if (reg_mentioned_p (from, true_rtx))
183 true_rtx = subst (known_cond (copy_rtx (true_rtx), true_code,
184 from, true_val),
185- pc_rtx, pc_rtx, 0, 0);
186+ pc_rtx, pc_rtx, 0, 0, 0);
187 if (reg_mentioned_p (from, false_rtx))
188 false_rtx = subst (known_cond (copy_rtx (false_rtx), false_code,
189 from, false_val),
190- pc_rtx, pc_rtx, 0, 0);
191+ pc_rtx, pc_rtx, 0, 0, 0);
192
193 SUBST (XEXP (x, 1), swapped ? false_rtx : true_rtx);
194 SUBST (XEXP (x, 2), swapped ? true_rtx : false_rtx);
195@@ -5849,11 +5864,11 @@
196 {
197 temp = subst (simplify_gen_relational (true_code, m, VOIDmode,
198 cond_op0, cond_op1),
199- pc_rtx, pc_rtx, 0, 0);
200+ pc_rtx, pc_rtx, 0, 0, 0);
201 temp = simplify_gen_binary (MULT, m, temp,
202 simplify_gen_binary (MULT, m, c1,
203 const_true_rtx));
204- temp = subst (temp, pc_rtx, pc_rtx, 0, 0);
205+ temp = subst (temp, pc_rtx, pc_rtx, 0, 0, 0);
206 temp = simplify_gen_binary (op, m, gen_lowpart (m, z), temp);
207
208 if (extend_op != UNKNOWN)
209
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99437.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99437.patch
new file mode 100644
index 000000000..94d966608
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99437.patch
@@ -0,0 +1,27 @@
12010-11-24 Richard Sandiford <richard.sandiford@linaro.org>
2
3 Launchpad #618684
4
5 Backport from mainline:
6
7 2010-04-10 Bernd Schmidt <bernds@codesourcery.com>
8
9 * reload1.c (eliminate_regs_in_insn): Don't restore an operand
10 if doing so would replace the entire pattern.
11
12=== modified file 'gcc/reload1.c'
13--- old/gcc/reload1.c 2010-10-04 00:50:43 +0000
14+++ new/gcc/reload1.c 2010-11-24 13:40:23 +0000
15@@ -3567,7 +3567,10 @@
16 {
17 /* Restore the old body. */
18 for (i = 0; i < recog_data.n_operands; i++)
19- *recog_data.operand_loc[i] = orig_operand[i];
20+ /* Restoring a top-level match_parallel would clobber the new_body
21+ we installed in the insn. */
22+ if (recog_data.operand_loc[i] != &PATTERN (insn))
23+ *recog_data.operand_loc[i] = orig_operand[i];
24 for (i = 0; i < recog_data.n_dups; i++)
25 *recog_data.dup_loc[i] = orig_operand[(int) recog_data.dup_num[i]];
26 }
27
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99439.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99439.patch
new file mode 100644
index 000000000..cec7f57d4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99439.patch
@@ -0,0 +1,1500 @@
12010-11-16 Chung-Lin Tang <cltang@codesourcery.com>
2
3 2010-07-21 Richard Henderson <rth@redhat.com>
4
5 gcc/
6 * config/i386/i386.c (setup_incoming_varargs_64): Emit a simple
7 comparison for avoiding xmm register saves. Emit the xmm register
8 saves explicitly.
9 * config/i386/i386.md (UNSPEC_SSE_PROLOGUE_SAVE): Remove.
10 (UNSPEC_SSE_PROLOGUE_SAVE_LOW): Remove.
11 (sse_prologue_save, sse_prologue_save_insn1, sse_prologue_save_insn):
12 Remove patterns and the associated splitters.
13
14 2010-07-22 Richard Henderson <rth@redhat.com>
15
16 gcc/
17 PR target/45027
18 * config/i386/i386.c (setup_incoming_varargs_64): Force the use
19 of V4SFmode for the SSE saves; increase stack alignment if needed.
20
212010-11-16 Chung-Lin Tang <cltang@codesourcery.com>
22
23 Re-merge, backport from mainline:
24
25 2010-07-15 Bernd Schmidt <bernds@codesourcery.com>
26
27 gcc/
28 * postreload.c (last_label_ruid, first_index_reg, last_index_reg):
29 New static variables.
30 (reload_combine_recognize_pattern): New static function, broken out
31 of reload_combine.
32 (reload_combine): Use it. Only initialize first_index_reg and
33 last_index_reg once.
34
35 2010-07-17 Bernd Schmidt <bernds@codesourcery.com>
36
37 PR target/42235
38 gcc/
39 * postreload.c (reload_cse_move2add): Return bool, true if anything.
40 changed. All callers changed.
41 (move2add_use_add2_insn): Likewise.
42 (move2add_use_add3_insn): Likewise.
43 (reload_cse_regs): If reload_cse_move2add changed anything, rerun
44 reload_combine.
45 (RELOAD_COMBINE_MAX_USES): Bump to 16.
46 (last_jump_ruid): New static variable.
47 (struct reg_use): New members CONTAINING_MEM and RUID.
48 (reg_state): New members ALL_OFFSETS_MATCH and REAL_STORE_RUID.
49 (reload_combine_split_one_ruid, reload_combine_split_ruids,
50 reload_combine_purge_insn_uses, reload_combine_closest_single_use
51 reload_combine_purge_reg_uses_after_ruid,
52 reload_combine_recognize_const_pattern): New static functions.
53 (reload_combine_recognize_pattern): Verify that ALL_OFFSETS_MATCH
54 is true for our reg and that we have available index regs.
55 (reload_combine_note_use): New args RUID and CONTAINING_MEM. All
56 callers changed. Use them to initialize fields in struct reg_use.
57 (reload_combine): Initialize last_jump_ruid. Be careful when to
58 take PREV_INSN of the scanned insn. Update REAL_STORE_RUID fields.
59 Call reload_combine_recognize_const_pattern.
60 (reload_combine_note_store): Update REAL_STORE_RUID field.
61
62 gcc/testsuite/
63 * gcc.target/arm/pr42235.c: New test.
64
65 2010-07-19 Bernd Schmidt <bernds@codesourcery.com>
66
67 gcc/
68 * postreload.c (reload_combine_closest_single_use): Ignore the
69 number of uses for DEBUG_INSNs.
70 (fixup_debug_insns): New static function.
71 (reload_combine_recognize_const_pattern): Use it. Don't let the
72 main loop be affected by DEBUG_INSNs.
73 Really disallow moving adds past a jump insn.
74 (reload_combine_recognize_pattern): Don't update use_ruid here.
75 (reload_combine_note_use): Do it here.
76 (reload_combine): Use control_flow_insn_p rather than JUMP_P.
77
78 2010-07-20 Bernd Schmidt <bernds@codesourcery.com>
79
80 gcc/
81 * postreload.c (fixup_debug_insns): Remove arg REGNO. New args
82 FROM and TO. All callers changed. Don't look for tracked uses,
83 just scan the RTL for DEBUG_INSNs and substitute.
84 (reload_combine_recognize_pattern): Call fixup_debug_insns.
85 (reload_combine): Ignore DEBUG_INSNs.
86
87 2010-07-22 Bernd Schmidt <bernds@codesourcery.com>
88
89 PR bootstrap/44970
90 PR middle-end/45009
91 gcc/
92 * postreload.c: Include "target.h".
93 (reload_combine_closest_single_use): Don't take DEBUG_INSNs
94 into account.
95 (fixup_debug_insns): Don't copy the rtx.
96 (reload_combine_recognize_const_pattern): DEBUG_INSNs can't have uses.
97 Don't copy when replacing. Call fixup_debug_insns in the case where
98 we merged one add with another.
99 (reload_combine_recognize_pattern): Fail if there aren't any uses.
100 Try harder to determine whether we're picking a valid index register.
101 Don't set store_ruid for an insn we're going to scan in the
102 next iteration.
103 (reload_combine): Remove unused code.
104 (reload_combine_note_use): When updating use information for
105 an old insn, ignore a use that occurs after store_ruid.
106 * Makefile.in (postreload.o): Update dependencies.
107
108 2010-07-27 Bernd Schmidt <bernds@codesourcery.com>
109
110 gcc/
111 * postreload.c (reload_combine_recognize_const_pattern): Move test
112 for limiting the insn movement to the right scope.
113
114 2010-07-27 Bernd Schmidt <bernds@codesourcery.com>
115
116 gcc/
117 * postreload.c (try_replace_in_use): New static function.
118 (reload_combine_recognize_const_pattern): Use it here. Allow
119 substituting into a final add insn, and substituting into a memory
120 reference in an insn that sets the reg.
121
122=== modified file 'gcc/Makefile.in'
123--- old/gcc/Makefile.in 2010-11-11 11:34:59 +0000
124+++ new/gcc/Makefile.in 2010-11-16 18:05:53 +0000
125@@ -3157,7 +3157,7 @@
126 $(RTL_H) $(REAL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
127 hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
128 $(FUNCTION_H) $(TOPLEV_H) cselib.h $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(MACHMODE_H) \
129- $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
130+ $(OBSTACK_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
131 postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
132 $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
133 $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
134
135=== modified file 'gcc/config/i386/i386.c'
136--- old/gcc/config/i386/i386.c 2010-09-30 20:24:54 +0000
137+++ new/gcc/config/i386/i386.c 2010-11-16 18:05:53 +0000
138@@ -6737,12 +6737,8 @@
139 setup_incoming_varargs_64 (CUMULATIVE_ARGS *cum)
140 {
141 rtx save_area, mem;
142- rtx label;
143- rtx label_ref;
144- rtx tmp_reg;
145- rtx nsse_reg;
146 alias_set_type set;
147- int i;
148+ int i, max;
149
150 /* GPR size of varargs save area. */
151 if (cfun->va_list_gpr_size)
152@@ -6752,7 +6748,7 @@
153
154 /* FPR size of varargs save area. We don't need it if we don't pass
155 anything in SSE registers. */
156- if (cum->sse_nregs && cfun->va_list_fpr_size)
157+ if (TARGET_SSE && cfun->va_list_fpr_size)
158 ix86_varargs_fpr_size = X86_64_SSE_REGPARM_MAX * 16;
159 else
160 ix86_varargs_fpr_size = 0;
161@@ -6763,10 +6759,11 @@
162 save_area = frame_pointer_rtx;
163 set = get_varargs_alias_set ();
164
165- for (i = cum->regno;
166- i < X86_64_REGPARM_MAX
167- && i < cum->regno + cfun->va_list_gpr_size / UNITS_PER_WORD;
168- i++)
169+ max = cum->regno + cfun->va_list_gpr_size / UNITS_PER_WORD;
170+ if (max > X86_64_REGPARM_MAX)
171+ max = X86_64_REGPARM_MAX;
172+
173+ for (i = cum->regno; i < max; i++)
174 {
175 mem = gen_rtx_MEM (Pmode,
176 plus_constant (save_area, i * UNITS_PER_WORD));
177@@ -6778,62 +6775,42 @@
178
179 if (ix86_varargs_fpr_size)
180 {
181- /* Stack must be aligned to 16byte for FP register save area. */
182- if (crtl->stack_alignment_needed < 128)
183- crtl->stack_alignment_needed = 128;
184+ enum machine_mode smode;
185+ rtx label, test;
186
187 /* Now emit code to save SSE registers. The AX parameter contains number
188- of SSE parameter registers used to call this function. We use
189- sse_prologue_save insn template that produces computed jump across
190- SSE saves. We need some preparation work to get this working. */
191+ of SSE parameter registers used to call this function, though all we
192+ actually check here is the zero/non-zero status. */
193
194 label = gen_label_rtx ();
195- label_ref = gen_rtx_LABEL_REF (Pmode, label);
196-
197- /* Compute address to jump to :
198- label - eax*4 + nnamed_sse_arguments*4 Or
199- label - eax*5 + nnamed_sse_arguments*5 for AVX. */
200- tmp_reg = gen_reg_rtx (Pmode);
201- nsse_reg = gen_reg_rtx (Pmode);
202- emit_insn (gen_zero_extendqidi2 (nsse_reg, gen_rtx_REG (QImode, AX_REG)));
203- emit_insn (gen_rtx_SET (VOIDmode, tmp_reg,
204- gen_rtx_MULT (Pmode, nsse_reg,
205- GEN_INT (4))));
206-
207- /* vmovaps is one byte longer than movaps. */
208- if (TARGET_AVX)
209- emit_insn (gen_rtx_SET (VOIDmode, tmp_reg,
210- gen_rtx_PLUS (Pmode, tmp_reg,
211- nsse_reg)));
212-
213- if (cum->sse_regno)
214- emit_move_insn
215- (nsse_reg,
216- gen_rtx_CONST (DImode,
217- gen_rtx_PLUS (DImode,
218- label_ref,
219- GEN_INT (cum->sse_regno
220- * (TARGET_AVX ? 5 : 4)))));
221- else
222- emit_move_insn (nsse_reg, label_ref);
223- emit_insn (gen_subdi3 (nsse_reg, nsse_reg, tmp_reg));
224-
225- /* Compute address of memory block we save into. We always use pointer
226- pointing 127 bytes after first byte to store - this is needed to keep
227- instruction size limited by 4 bytes (5 bytes for AVX) with one
228- byte displacement. */
229- tmp_reg = gen_reg_rtx (Pmode);
230- emit_insn (gen_rtx_SET (VOIDmode, tmp_reg,
231- plus_constant (save_area,
232- ix86_varargs_gpr_size + 127)));
233- mem = gen_rtx_MEM (BLKmode, plus_constant (tmp_reg, -127));
234- MEM_NOTRAP_P (mem) = 1;
235- set_mem_alias_set (mem, set);
236- set_mem_align (mem, BITS_PER_WORD);
237-
238- /* And finally do the dirty job! */
239- emit_insn (gen_sse_prologue_save (mem, nsse_reg,
240- GEN_INT (cum->sse_regno), label));
241+ test = gen_rtx_EQ (VOIDmode, gen_rtx_REG (QImode, AX_REG), const0_rtx);
242+ emit_jump_insn (gen_cbranchqi4 (test, XEXP (test, 0), XEXP (test, 1),
243+ label));
244+
245+ /* ??? If !TARGET_SSE_TYPELESS_STORES, would we perform better if
246+ we used movdqa (i.e. TImode) instead? Perhaps even better would
247+ be if we could determine the real mode of the data, via a hook
248+ into pass_stdarg. Ignore all that for now. */
249+ smode = V4SFmode;
250+ if (crtl->stack_alignment_needed < GET_MODE_ALIGNMENT (smode))
251+ crtl->stack_alignment_needed = GET_MODE_ALIGNMENT (smode);
252+
253+ max = cum->sse_regno + cfun->va_list_fpr_size / 16;
254+ if (max > X86_64_SSE_REGPARM_MAX)
255+ max = X86_64_SSE_REGPARM_MAX;
256+
257+ for (i = cum->sse_regno; i < max; ++i)
258+ {
259+ mem = plus_constant (save_area, i * 16 + ix86_varargs_gpr_size);
260+ mem = gen_rtx_MEM (smode, mem);
261+ MEM_NOTRAP_P (mem) = 1;
262+ set_mem_alias_set (mem, set);
263+ set_mem_align (mem, GET_MODE_ALIGNMENT (smode));
264+
265+ emit_move_insn (mem, gen_rtx_REG (smode, SSE_REGNO (i)));
266+ }
267+
268+ emit_label (label);
269 }
270 }
271
272
273=== modified file 'gcc/config/i386/i386.md'
274--- old/gcc/config/i386/i386.md 2010-10-22 04:56:41 +0000
275+++ new/gcc/config/i386/i386.md 2010-11-27 15:24:12 +0000
276@@ -80,7 +80,6 @@
277 ; Prologue support
278 (UNSPEC_STACK_ALLOC 11)
279 (UNSPEC_SET_GOT 12)
280- (UNSPEC_SSE_PROLOGUE_SAVE 13)
281 (UNSPEC_REG_SAVE 14)
282 (UNSPEC_DEF_CFA 15)
283 (UNSPEC_SET_RIP 16)
284@@ -20252,74 +20251,6 @@
285 { return ASM_SHORT "0x0b0f"; }
286 [(set_attr "length" "2")])
287
288-(define_expand "sse_prologue_save"
289- [(parallel [(set (match_operand:BLK 0 "" "")
290- (unspec:BLK [(reg:DI XMM0_REG)
291- (reg:DI XMM1_REG)
292- (reg:DI XMM2_REG)
293- (reg:DI XMM3_REG)
294- (reg:DI XMM4_REG)
295- (reg:DI XMM5_REG)
296- (reg:DI XMM6_REG)
297- (reg:DI XMM7_REG)] UNSPEC_SSE_PROLOGUE_SAVE))
298- (use (match_operand:DI 1 "register_operand" ""))
299- (use (match_operand:DI 2 "immediate_operand" ""))
300- (use (label_ref:DI (match_operand 3 "" "")))])]
301- "TARGET_64BIT"
302- "")
303-
304-(define_insn "*sse_prologue_save_insn"
305- [(set (mem:BLK (plus:DI (match_operand:DI 0 "register_operand" "R")
306- (match_operand:DI 4 "const_int_operand" "n")))
307- (unspec:BLK [(reg:DI XMM0_REG)
308- (reg:DI XMM1_REG)
309- (reg:DI XMM2_REG)
310- (reg:DI XMM3_REG)
311- (reg:DI XMM4_REG)
312- (reg:DI XMM5_REG)
313- (reg:DI XMM6_REG)
314- (reg:DI XMM7_REG)] UNSPEC_SSE_PROLOGUE_SAVE))
315- (use (match_operand:DI 1 "register_operand" "r"))
316- (use (match_operand:DI 2 "const_int_operand" "i"))
317- (use (label_ref:DI (match_operand 3 "" "X")))]
318- "TARGET_64BIT
319- && INTVAL (operands[4]) + X86_64_SSE_REGPARM_MAX * 16 - 16 < 128
320- && INTVAL (operands[4]) + INTVAL (operands[2]) * 16 >= -128"
321-{
322- int i;
323- operands[0] = gen_rtx_MEM (Pmode,
324- gen_rtx_PLUS (Pmode, operands[0], operands[4]));
325- /* VEX instruction with a REX prefix will #UD. */
326- if (TARGET_AVX && GET_CODE (XEXP (operands[0], 0)) != PLUS)
327- gcc_unreachable ();
328-
329- output_asm_insn ("jmp\t%A1", operands);
330- for (i = X86_64_SSE_REGPARM_MAX - 1; i >= INTVAL (operands[2]); i--)
331- {
332- operands[4] = adjust_address (operands[0], DImode, i*16);
333- operands[5] = gen_rtx_REG (TImode, SSE_REGNO (i));
334- PUT_MODE (operands[4], TImode);
335- if (GET_CODE (XEXP (operands[0], 0)) != PLUS)
336- output_asm_insn ("rex", operands);
337- output_asm_insn ("%vmovaps\t{%5, %4|%4, %5}", operands);
338- }
339- (*targetm.asm_out.internal_label) (asm_out_file, "L",
340- CODE_LABEL_NUMBER (operands[3]));
341- return "";
342-}
343- [(set_attr "type" "other")
344- (set_attr "length_immediate" "0")
345- (set_attr "length_address" "0")
346- (set (attr "length")
347- (if_then_else
348- (eq (symbol_ref "TARGET_AVX") (const_int 0))
349- (const_string "34")
350- (const_string "42")))
351- (set_attr "memory" "store")
352- (set_attr "modrm" "0")
353- (set_attr "prefix" "maybe_vex")
354- (set_attr "mode" "DI")])
355-
356 (define_expand "prefetch"
357 [(prefetch (match_operand 0 "address_operand" "")
358 (match_operand:SI 1 "const_int_operand" "")
359
360=== modified file 'gcc/postreload.c'
361--- old/gcc/postreload.c 2010-11-08 22:08:43 +0000
362+++ new/gcc/postreload.c 2010-11-16 18:05:53 +0000
363@@ -44,6 +44,7 @@
364 #include "toplev.h"
365 #include "except.h"
366 #include "tree.h"
367+#include "target.h"
368 #include "timevar.h"
369 #include "tree-pass.h"
370 #include "df.h"
371@@ -56,10 +57,10 @@
372 static int reload_cse_simplify_operands (rtx, rtx);
373
374 static void reload_combine (void);
375-static void reload_combine_note_use (rtx *, rtx);
376+static void reload_combine_note_use (rtx *, rtx, int, rtx);
377 static void reload_combine_note_store (rtx, const_rtx, void *);
378
379-static void reload_cse_move2add (rtx);
380+static bool reload_cse_move2add (rtx);
381 static void move2add_note_store (rtx, const_rtx, void *);
382
383 /* Call cse / combine like post-reload optimization phases.
384@@ -67,11 +68,16 @@
385 void
386 reload_cse_regs (rtx first ATTRIBUTE_UNUSED)
387 {
388+ bool moves_converted;
389 reload_cse_regs_1 (first);
390 reload_combine ();
391- reload_cse_move2add (first);
392+ moves_converted = reload_cse_move2add (first);
393 if (flag_expensive_optimizations)
394- reload_cse_regs_1 (first);
395+ {
396+ if (moves_converted)
397+ reload_combine ();
398+ reload_cse_regs_1 (first);
399+ }
400 }
401
402 /* See whether a single set SET is a noop. */
403@@ -660,30 +666,43 @@
404
405 /* The maximum number of uses of a register we can keep track of to
406 replace them with reg+reg addressing. */
407-#define RELOAD_COMBINE_MAX_USES 6
408+#define RELOAD_COMBINE_MAX_USES 16
409
410-/* INSN is the insn where a register has been used, and USEP points to the
411- location of the register within the rtl. */
412-struct reg_use { rtx insn, *usep; };
413+/* Describes a recorded use of a register. */
414+struct reg_use
415+{
416+ /* The insn where a register has been used. */
417+ rtx insn;
418+ /* Points to the memory reference enclosing the use, if any, NULL_RTX
419+ otherwise. */
420+ rtx containing_mem;
421+ /* Location of the register withing INSN. */
422+ rtx *usep;
423+ /* The reverse uid of the insn. */
424+ int ruid;
425+};
426
427 /* If the register is used in some unknown fashion, USE_INDEX is negative.
428 If it is dead, USE_INDEX is RELOAD_COMBINE_MAX_USES, and STORE_RUID
429- indicates where it becomes live again.
430+ indicates where it is first set or clobbered.
431 Otherwise, USE_INDEX is the index of the last encountered use of the
432- register (which is first among these we have seen since we scan backwards),
433- OFFSET contains the constant offset that is added to the register in
434- all encountered uses, and USE_RUID indicates the first encountered, i.e.
435- last, of these uses.
436+ register (which is first among these we have seen since we scan backwards).
437+ USE_RUID indicates the first encountered, i.e. last, of these uses.
438+ If ALL_OFFSETS_MATCH is true, all encountered uses were inside a PLUS
439+ with a constant offset; OFFSET contains this constant in that case.
440 STORE_RUID is always meaningful if we only want to use a value in a
441 register in a different place: it denotes the next insn in the insn
442- stream (i.e. the last encountered) that sets or clobbers the register. */
443+ stream (i.e. the last encountered) that sets or clobbers the register.
444+ REAL_STORE_RUID is similar, but clobbers are ignored when updating it. */
445 static struct
446 {
447 struct reg_use reg_use[RELOAD_COMBINE_MAX_USES];
448+ rtx offset;
449 int use_index;
450- rtx offset;
451 int store_ruid;
452+ int real_store_ruid;
453 int use_ruid;
454+ bool all_offsets_match;
455 } reg_state[FIRST_PSEUDO_REGISTER];
456
457 /* Reverse linear uid. This is increased in reload_combine while scanning
458@@ -691,42 +710,548 @@
459 and the store_ruid / use_ruid fields in reg_state. */
460 static int reload_combine_ruid;
461
462+/* The RUID of the last label we encountered in reload_combine. */
463+static int last_label_ruid;
464+
465+/* The RUID of the last jump we encountered in reload_combine. */
466+static int last_jump_ruid;
467+
468+/* The register numbers of the first and last index register. A value of
469+ -1 in LAST_INDEX_REG indicates that we've previously computed these
470+ values and found no suitable index registers. */
471+static int first_index_reg = -1;
472+static int last_index_reg;
473+
474 #define LABEL_LIVE(LABEL) \
475 (label_live[CODE_LABEL_NUMBER (LABEL) - min_labelno])
476
477+/* Subroutine of reload_combine_split_ruids, called to fix up a single
478+ ruid pointed to by *PRUID if it is higher than SPLIT_RUID. */
479+
480+static inline void
481+reload_combine_split_one_ruid (int *pruid, int split_ruid)
482+{
483+ if (*pruid > split_ruid)
484+ (*pruid)++;
485+}
486+
487+/* Called when we insert a new insn in a position we've already passed in
488+ the scan. Examine all our state, increasing all ruids that are higher
489+ than SPLIT_RUID by one in order to make room for a new insn. */
490+
491+static void
492+reload_combine_split_ruids (int split_ruid)
493+{
494+ unsigned i;
495+
496+ reload_combine_split_one_ruid (&reload_combine_ruid, split_ruid);
497+ reload_combine_split_one_ruid (&last_label_ruid, split_ruid);
498+ reload_combine_split_one_ruid (&last_jump_ruid, split_ruid);
499+
500+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
501+ {
502+ int j, idx = reg_state[i].use_index;
503+ reload_combine_split_one_ruid (&reg_state[i].use_ruid, split_ruid);
504+ reload_combine_split_one_ruid (&reg_state[i].store_ruid, split_ruid);
505+ reload_combine_split_one_ruid (&reg_state[i].real_store_ruid,
506+ split_ruid);
507+ if (idx < 0)
508+ continue;
509+ for (j = idx; j < RELOAD_COMBINE_MAX_USES; j++)
510+ {
511+ reload_combine_split_one_ruid (&reg_state[i].reg_use[j].ruid,
512+ split_ruid);
513+ }
514+ }
515+}
516+
517+/* Called when we are about to rescan a previously encountered insn with
518+ reload_combine_note_use after modifying some part of it. This clears all
519+ information about uses in that particular insn. */
520+
521+static void
522+reload_combine_purge_insn_uses (rtx insn)
523+{
524+ unsigned i;
525+
526+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
527+ {
528+ int j, k, idx = reg_state[i].use_index;
529+ if (idx < 0)
530+ continue;
531+ j = k = RELOAD_COMBINE_MAX_USES;
532+ while (j-- > idx)
533+ {
534+ if (reg_state[i].reg_use[j].insn != insn)
535+ {
536+ k--;
537+ if (k != j)
538+ reg_state[i].reg_use[k] = reg_state[i].reg_use[j];
539+ }
540+ }
541+ reg_state[i].use_index = k;
542+ }
543+}
544+
545+/* Called when we need to forget about all uses of REGNO after an insn
546+ which is identified by RUID. */
547+
548+static void
549+reload_combine_purge_reg_uses_after_ruid (unsigned regno, int ruid)
550+{
551+ int j, k, idx = reg_state[regno].use_index;
552+ if (idx < 0)
553+ return;
554+ j = k = RELOAD_COMBINE_MAX_USES;
555+ while (j-- > idx)
556+ {
557+ if (reg_state[regno].reg_use[j].ruid >= ruid)
558+ {
559+ k--;
560+ if (k != j)
561+ reg_state[regno].reg_use[k] = reg_state[regno].reg_use[j];
562+ }
563+ }
564+ reg_state[regno].use_index = k;
565+}
566+
567+/* Find the use of REGNO with the ruid that is highest among those
568+ lower than RUID_LIMIT, and return it if it is the only use of this
569+ reg in the insn. Return NULL otherwise. */
570+
571+static struct reg_use *
572+reload_combine_closest_single_use (unsigned regno, int ruid_limit)
573+{
574+ int i, best_ruid = 0;
575+ int use_idx = reg_state[regno].use_index;
576+ struct reg_use *retval;
577+
578+ if (use_idx < 0)
579+ return NULL;
580+ retval = NULL;
581+ for (i = use_idx; i < RELOAD_COMBINE_MAX_USES; i++)
582+ {
583+ struct reg_use *use = reg_state[regno].reg_use + i;
584+ int this_ruid = use->ruid;
585+ if (this_ruid >= ruid_limit)
586+ continue;
587+ if (this_ruid > best_ruid)
588+ {
589+ best_ruid = this_ruid;
590+ retval = use;
591+ }
592+ else if (this_ruid == best_ruid)
593+ retval = NULL;
594+ }
595+ if (last_label_ruid >= best_ruid)
596+ return NULL;
597+ return retval;
598+}
599+
600+/* After we've moved an add insn, fix up any debug insns that occur
601+ between the old location of the add and the new location. REG is
602+ the destination register of the add insn; REPLACEMENT is the
603+ SET_SRC of the add. FROM and TO specify the range in which we
604+ should make this change on debug insns. */
605+
606+static void
607+fixup_debug_insns (rtx reg, rtx replacement, rtx from, rtx to)
608+{
609+ rtx insn;
610+ for (insn = from; insn != to; insn = NEXT_INSN (insn))
611+ {
612+ rtx t;
613+
614+ if (!DEBUG_INSN_P (insn))
615+ continue;
616+
617+ t = INSN_VAR_LOCATION_LOC (insn);
618+ t = simplify_replace_rtx (t, reg, replacement);
619+ validate_change (insn, &INSN_VAR_LOCATION_LOC (insn), t, 0);
620+ }
621+}
622+
623+/* Subroutine of reload_combine_recognize_const_pattern. Try to replace REG
624+ with SRC in the insn described by USE, taking costs into account. Return
625+ true if we made the replacement. */
626+
627+static bool
628+try_replace_in_use (struct reg_use *use, rtx reg, rtx src)
629+{
630+ rtx use_insn = use->insn;
631+ rtx mem = use->containing_mem;
632+ bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn));
633+
634+ if (mem != NULL_RTX)
635+ {
636+ addr_space_t as = MEM_ADDR_SPACE (mem);
637+ rtx oldaddr = XEXP (mem, 0);
638+ rtx newaddr = NULL_RTX;
639+ int old_cost = address_cost (oldaddr, GET_MODE (mem), as, speed);
640+ int new_cost;
641+
642+ newaddr = simplify_replace_rtx (oldaddr, reg, src);
643+ if (memory_address_addr_space_p (GET_MODE (mem), newaddr, as))
644+ {
645+ XEXP (mem, 0) = newaddr;
646+ new_cost = address_cost (newaddr, GET_MODE (mem), as, speed);
647+ XEXP (mem, 0) = oldaddr;
648+ if (new_cost <= old_cost
649+ && validate_change (use_insn,
650+ &XEXP (mem, 0), newaddr, 0))
651+ return true;
652+ }
653+ }
654+ else
655+ {
656+ rtx new_set = single_set (use_insn);
657+ if (new_set
658+ && REG_P (SET_DEST (new_set))
659+ && GET_CODE (SET_SRC (new_set)) == PLUS
660+ && REG_P (XEXP (SET_SRC (new_set), 0))
661+ && CONSTANT_P (XEXP (SET_SRC (new_set), 1)))
662+ {
663+ rtx new_src;
664+ int old_cost = rtx_cost (SET_SRC (new_set), SET, speed);
665+
666+ gcc_assert (rtx_equal_p (XEXP (SET_SRC (new_set), 0), reg));
667+ new_src = simplify_replace_rtx (SET_SRC (new_set), reg, src);
668+
669+ if (rtx_cost (new_src, SET, speed) <= old_cost
670+ && validate_change (use_insn, &SET_SRC (new_set),
671+ new_src, 0))
672+ return true;
673+ }
674+ }
675+ return false;
676+}
677+
678+/* Called by reload_combine when scanning INSN. This function tries to detect
679+ patterns where a constant is added to a register, and the result is used
680+ in an address.
681+ Return true if no further processing is needed on INSN; false if it wasn't
682+ recognized and should be handled normally. */
683+
684+static bool
685+reload_combine_recognize_const_pattern (rtx insn)
686+{
687+ int from_ruid = reload_combine_ruid;
688+ rtx set, pat, reg, src, addreg;
689+ unsigned int regno;
690+ struct reg_use *use;
691+ bool must_move_add;
692+ rtx add_moved_after_insn = NULL_RTX;
693+ int add_moved_after_ruid = 0;
694+ int clobbered_regno = -1;
695+
696+ set = single_set (insn);
697+ if (set == NULL_RTX)
698+ return false;
699+
700+ reg = SET_DEST (set);
701+ src = SET_SRC (set);
702+ if (!REG_P (reg)
703+ || hard_regno_nregs[REGNO (reg)][GET_MODE (reg)] != 1
704+ || GET_MODE (reg) != Pmode
705+ || reg == stack_pointer_rtx)
706+ return false;
707+
708+ regno = REGNO (reg);
709+
710+ /* We look for a REG1 = REG2 + CONSTANT insn, followed by either
711+ uses of REG1 inside an address, or inside another add insn. If
712+ possible and profitable, merge the addition into subsequent
713+ uses. */
714+ if (GET_CODE (src) != PLUS
715+ || !REG_P (XEXP (src, 0))
716+ || !CONSTANT_P (XEXP (src, 1)))
717+ return false;
718+
719+ addreg = XEXP (src, 0);
720+ must_move_add = rtx_equal_p (reg, addreg);
721+
722+ pat = PATTERN (insn);
723+ if (must_move_add && set != pat)
724+ {
725+ /* We have to be careful when moving the add; apart from the
726+ single_set there may also be clobbers. Recognize one special
727+ case, that of one clobber alongside the set (likely a clobber
728+ of the CC register). */
729+ gcc_assert (GET_CODE (PATTERN (insn)) == PARALLEL);
730+ if (XVECLEN (pat, 0) != 2 || XVECEXP (pat, 0, 0) != set
731+ || GET_CODE (XVECEXP (pat, 0, 1)) != CLOBBER
732+ || !REG_P (XEXP (XVECEXP (pat, 0, 1), 0)))
733+ return false;
734+ clobbered_regno = REGNO (XEXP (XVECEXP (pat, 0, 1), 0));
735+ }
736+
737+ do
738+ {
739+ use = reload_combine_closest_single_use (regno, from_ruid);
740+
741+ if (use)
742+ /* Start the search for the next use from here. */
743+ from_ruid = use->ruid;
744+
745+ if (use && GET_MODE (*use->usep) == Pmode)
746+ {
747+ bool delete_add = false;
748+ rtx use_insn = use->insn;
749+ int use_ruid = use->ruid;
750+
751+ /* Avoid moving the add insn past a jump. */
752+ if (must_move_add && use_ruid <= last_jump_ruid)
753+ break;
754+
755+ /* If the add clobbers another hard reg in parallel, don't move
756+ it past a real set of this hard reg. */
757+ if (must_move_add && clobbered_regno >= 0
758+ && reg_state[clobbered_regno].real_store_ruid >= use_ruid)
759+ break;
760+
761+ gcc_assert (reg_state[regno].store_ruid <= use_ruid);
762+ /* Avoid moving a use of ADDREG past a point where it is stored. */
763+ if (reg_state[REGNO (addreg)].store_ruid > use_ruid)
764+ break;
765+
766+ /* We also must not move the addition past an insn that sets
767+ the same register, unless we can combine two add insns. */
768+ if (must_move_add && reg_state[regno].store_ruid == use_ruid)
769+ {
770+ if (use->containing_mem == NULL_RTX)
771+ delete_add = true;
772+ else
773+ break;
774+ }
775+
776+ if (try_replace_in_use (use, reg, src))
777+ {
778+ reload_combine_purge_insn_uses (use_insn);
779+ reload_combine_note_use (&PATTERN (use_insn), use_insn,
780+ use_ruid, NULL_RTX);
781+
782+ if (delete_add)
783+ {
784+ fixup_debug_insns (reg, src, insn, use_insn);
785+ delete_insn (insn);
786+ return true;
787+ }
788+ if (must_move_add)
789+ {
790+ add_moved_after_insn = use_insn;
791+ add_moved_after_ruid = use_ruid;
792+ }
793+ continue;
794+ }
795+ }
796+ /* If we get here, we couldn't handle this use. */
797+ if (must_move_add)
798+ break;
799+ }
800+ while (use);
801+
802+ if (!must_move_add || add_moved_after_insn == NULL_RTX)
803+ /* Process the add normally. */
804+ return false;
805+
806+ fixup_debug_insns (reg, src, insn, add_moved_after_insn);
807+
808+ reorder_insns (insn, insn, add_moved_after_insn);
809+ reload_combine_purge_reg_uses_after_ruid (regno, add_moved_after_ruid);
810+ reload_combine_split_ruids (add_moved_after_ruid - 1);
811+ reload_combine_note_use (&PATTERN (insn), insn,
812+ add_moved_after_ruid, NULL_RTX);
813+ reg_state[regno].store_ruid = add_moved_after_ruid;
814+
815+ return true;
816+}
817+
818+/* Called by reload_combine when scanning INSN. Try to detect a pattern we
819+ can handle and improve. Return true if no further processing is needed on
820+ INSN; false if it wasn't recognized and should be handled normally. */
821+
822+static bool
823+reload_combine_recognize_pattern (rtx insn)
824+{
825+ rtx set, reg, src;
826+ unsigned int regno;
827+
828+ set = single_set (insn);
829+ if (set == NULL_RTX)
830+ return false;
831+
832+ reg = SET_DEST (set);
833+ src = SET_SRC (set);
834+ if (!REG_P (reg)
835+ || hard_regno_nregs[REGNO (reg)][GET_MODE (reg)] != 1)
836+ return false;
837+
838+ regno = REGNO (reg);
839+
840+ /* Look for (set (REGX) (CONST_INT))
841+ (set (REGX) (PLUS (REGX) (REGY)))
842+ ...
843+ ... (MEM (REGX)) ...
844+ and convert it to
845+ (set (REGZ) (CONST_INT))
846+ ...
847+ ... (MEM (PLUS (REGZ) (REGY)))... .
848+
849+ First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
850+ and that we know all uses of REGX before it dies.
851+ Also, explicitly check that REGX != REGY; our life information
852+ does not yet show whether REGY changes in this insn. */
853+
854+ if (GET_CODE (src) == PLUS
855+ && reg_state[regno].all_offsets_match
856+ && last_index_reg != -1
857+ && REG_P (XEXP (src, 1))
858+ && rtx_equal_p (XEXP (src, 0), reg)
859+ && !rtx_equal_p (XEXP (src, 1), reg)
860+ && reg_state[regno].use_index >= 0
861+ && reg_state[regno].use_index < RELOAD_COMBINE_MAX_USES
862+ && last_label_ruid < reg_state[regno].use_ruid)
863+ {
864+ rtx base = XEXP (src, 1);
865+ rtx prev = prev_nonnote_insn (insn);
866+ rtx prev_set = prev ? single_set (prev) : NULL_RTX;
867+ rtx index_reg = NULL_RTX;
868+ rtx reg_sum = NULL_RTX;
869+ int i;
870+
871+ /* Now we need to set INDEX_REG to an index register (denoted as
872+ REGZ in the illustration above) and REG_SUM to the expression
873+ register+register that we want to use to substitute uses of REG
874+ (typically in MEMs) with. First check REG and BASE for being
875+ index registers; we can use them even if they are not dead. */
876+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
877+ || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
878+ REGNO (base)))
879+ {
880+ index_reg = reg;
881+ reg_sum = src;
882+ }
883+ else
884+ {
885+ /* Otherwise, look for a free index register. Since we have
886+ checked above that neither REG nor BASE are index registers,
887+ if we find anything at all, it will be different from these
888+ two registers. */
889+ for (i = first_index_reg; i <= last_index_reg; i++)
890+ {
891+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], i)
892+ && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
893+ && reg_state[i].store_ruid <= reg_state[regno].use_ruid
894+ && (call_used_regs[i] || df_regs_ever_live_p (i))
895+ && (!frame_pointer_needed || i != HARD_FRAME_POINTER_REGNUM)
896+ && !fixed_regs[i] && !global_regs[i]
897+ && hard_regno_nregs[i][GET_MODE (reg)] == 1
898+ && targetm.hard_regno_scratch_ok (i))
899+ {
900+ index_reg = gen_rtx_REG (GET_MODE (reg), i);
901+ reg_sum = gen_rtx_PLUS (GET_MODE (reg), index_reg, base);
902+ break;
903+ }
904+ }
905+ }
906+
907+ /* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
908+ (REGY), i.e. BASE, is not clobbered before the last use we'll
909+ create. */
910+ if (reg_sum
911+ && prev_set
912+ && CONST_INT_P (SET_SRC (prev_set))
913+ && rtx_equal_p (SET_DEST (prev_set), reg)
914+ && (reg_state[REGNO (base)].store_ruid
915+ <= reg_state[regno].use_ruid))
916+ {
917+ /* Change destination register and, if necessary, the constant
918+ value in PREV, the constant loading instruction. */
919+ validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
920+ if (reg_state[regno].offset != const0_rtx)
921+ validate_change (prev,
922+ &SET_SRC (prev_set),
923+ GEN_INT (INTVAL (SET_SRC (prev_set))
924+ + INTVAL (reg_state[regno].offset)),
925+ 1);
926+
927+ /* Now for every use of REG that we have recorded, replace REG
928+ with REG_SUM. */
929+ for (i = reg_state[regno].use_index;
930+ i < RELOAD_COMBINE_MAX_USES; i++)
931+ validate_unshare_change (reg_state[regno].reg_use[i].insn,
932+ reg_state[regno].reg_use[i].usep,
933+ /* Each change must have its own
934+ replacement. */
935+ reg_sum, 1);
936+
937+ if (apply_change_group ())
938+ {
939+ struct reg_use *lowest_ruid = NULL;
940+
941+ /* For every new use of REG_SUM, we have to record the use
942+ of BASE therein, i.e. operand 1. */
943+ for (i = reg_state[regno].use_index;
944+ i < RELOAD_COMBINE_MAX_USES; i++)
945+ {
946+ struct reg_use *use = reg_state[regno].reg_use + i;
947+ reload_combine_note_use (&XEXP (*use->usep, 1), use->insn,
948+ use->ruid, use->containing_mem);
949+ if (lowest_ruid == NULL || use->ruid < lowest_ruid->ruid)
950+ lowest_ruid = use;
951+ }
952+
953+ fixup_debug_insns (reg, reg_sum, insn, lowest_ruid->insn);
954+
955+ /* Delete the reg-reg addition. */
956+ delete_insn (insn);
957+
958+ if (reg_state[regno].offset != const0_rtx)
959+ /* Previous REG_EQUIV / REG_EQUAL notes for PREV
960+ are now invalid. */
961+ remove_reg_equal_equiv_notes (prev);
962+
963+ reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
964+ return true;
965+ }
966+ }
967+ }
968+ return false;
969+}
970+
971 static void
972 reload_combine (void)
973 {
974- rtx insn, set;
975- int first_index_reg = -1;
976- int last_index_reg = 0;
977+ rtx insn, prev;
978 int i;
979 basic_block bb;
980 unsigned int r;
981- int last_label_ruid;
982 int min_labelno, n_labels;
983 HARD_REG_SET ever_live_at_start, *label_live;
984
985- /* If reg+reg can be used in offsetable memory addresses, the main chunk of
986- reload has already used it where appropriate, so there is no use in
987- trying to generate it now. */
988- if (double_reg_address_ok && INDEX_REG_CLASS != NO_REGS)
989- return;
990-
991 /* To avoid wasting too much time later searching for an index register,
992 determine the minimum and maximum index register numbers. */
993- for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
994- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
995- {
996- if (first_index_reg == -1)
997- first_index_reg = r;
998-
999- last_index_reg = r;
1000- }
1001-
1002- /* If no index register is available, we can quit now. */
1003- if (first_index_reg == -1)
1004- return;
1005+ if (INDEX_REG_CLASS == NO_REGS)
1006+ last_index_reg = -1;
1007+ else if (first_index_reg == -1 && last_index_reg == 0)
1008+ {
1009+ for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
1010+ if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], r))
1011+ {
1012+ if (first_index_reg == -1)
1013+ first_index_reg = r;
1014+
1015+ last_index_reg = r;
1016+ }
1017+
1018+ /* If no index register is available, we can quit now. Set LAST_INDEX_REG
1019+ to -1 so we'll know to quit early the next time we get here. */
1020+ if (first_index_reg == -1)
1021+ {
1022+ last_index_reg = -1;
1023+ return;
1024+ }
1025+ }
1026
1027 /* Set up LABEL_LIVE and EVER_LIVE_AT_START. The register lifetime
1028 information is a bit fuzzy immediately after reload, but it's
1029@@ -753,20 +1278,23 @@
1030 }
1031
1032 /* Initialize last_label_ruid, reload_combine_ruid and reg_state. */
1033- last_label_ruid = reload_combine_ruid = 0;
1034+ last_label_ruid = last_jump_ruid = reload_combine_ruid = 0;
1035 for (r = 0; r < FIRST_PSEUDO_REGISTER; r++)
1036 {
1037- reg_state[r].store_ruid = reload_combine_ruid;
1038+ reg_state[r].store_ruid = 0;
1039+ reg_state[r].real_store_ruid = 0;
1040 if (fixed_regs[r])
1041 reg_state[r].use_index = -1;
1042 else
1043 reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
1044 }
1045
1046- for (insn = get_last_insn (); insn; insn = PREV_INSN (insn))
1047+ for (insn = get_last_insn (); insn; insn = prev)
1048 {
1049 rtx note;
1050
1051+ prev = PREV_INSN (insn);
1052+
1053 /* We cannot do our optimization across labels. Invalidating all the use
1054 information we have would be costly, so we just note where the label
1055 is and then later disable any optimization that would cross it. */
1056@@ -777,141 +1305,17 @@
1057 if (! fixed_regs[r])
1058 reg_state[r].use_index = RELOAD_COMBINE_MAX_USES;
1059
1060- if (! INSN_P (insn))
1061+ if (! NONDEBUG_INSN_P (insn))
1062 continue;
1063
1064 reload_combine_ruid++;
1065
1066- /* Look for (set (REGX) (CONST_INT))
1067- (set (REGX) (PLUS (REGX) (REGY)))
1068- ...
1069- ... (MEM (REGX)) ...
1070- and convert it to
1071- (set (REGZ) (CONST_INT))
1072- ...
1073- ... (MEM (PLUS (REGZ) (REGY)))... .
1074-
1075- First, check that we have (set (REGX) (PLUS (REGX) (REGY)))
1076- and that we know all uses of REGX before it dies.
1077- Also, explicitly check that REGX != REGY; our life information
1078- does not yet show whether REGY changes in this insn. */
1079- set = single_set (insn);
1080- if (set != NULL_RTX
1081- && REG_P (SET_DEST (set))
1082- && (hard_regno_nregs[REGNO (SET_DEST (set))]
1083- [GET_MODE (SET_DEST (set))]
1084- == 1)
1085- && GET_CODE (SET_SRC (set)) == PLUS
1086- && REG_P (XEXP (SET_SRC (set), 1))
1087- && rtx_equal_p (XEXP (SET_SRC (set), 0), SET_DEST (set))
1088- && !rtx_equal_p (XEXP (SET_SRC (set), 1), SET_DEST (set))
1089- && last_label_ruid < reg_state[REGNO (SET_DEST (set))].use_ruid)
1090- {
1091- rtx reg = SET_DEST (set);
1092- rtx plus = SET_SRC (set);
1093- rtx base = XEXP (plus, 1);
1094- rtx prev = prev_nonnote_nondebug_insn (insn);
1095- rtx prev_set = prev ? single_set (prev) : NULL_RTX;
1096- unsigned int regno = REGNO (reg);
1097- rtx index_reg = NULL_RTX;
1098- rtx reg_sum = NULL_RTX;
1099-
1100- /* Now we need to set INDEX_REG to an index register (denoted as
1101- REGZ in the illustration above) and REG_SUM to the expression
1102- register+register that we want to use to substitute uses of REG
1103- (typically in MEMs) with. First check REG and BASE for being
1104- index registers; we can use them even if they are not dead. */
1105- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS], regno)
1106- || TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
1107- REGNO (base)))
1108- {
1109- index_reg = reg;
1110- reg_sum = plus;
1111- }
1112- else
1113- {
1114- /* Otherwise, look for a free index register. Since we have
1115- checked above that neither REG nor BASE are index registers,
1116- if we find anything at all, it will be different from these
1117- two registers. */
1118- for (i = first_index_reg; i <= last_index_reg; i++)
1119- {
1120- if (TEST_HARD_REG_BIT (reg_class_contents[INDEX_REG_CLASS],
1121- i)
1122- && reg_state[i].use_index == RELOAD_COMBINE_MAX_USES
1123- && reg_state[i].store_ruid <= reg_state[regno].use_ruid
1124- && hard_regno_nregs[i][GET_MODE (reg)] == 1)
1125- {
1126- index_reg = gen_rtx_REG (GET_MODE (reg), i);
1127- reg_sum = gen_rtx_PLUS (GET_MODE (reg), index_reg, base);
1128- break;
1129- }
1130- }
1131- }
1132-
1133- /* Check that PREV_SET is indeed (set (REGX) (CONST_INT)) and that
1134- (REGY), i.e. BASE, is not clobbered before the last use we'll
1135- create. */
1136- if (reg_sum
1137- && prev_set
1138- && CONST_INT_P (SET_SRC (prev_set))
1139- && rtx_equal_p (SET_DEST (prev_set), reg)
1140- && reg_state[regno].use_index >= 0
1141- && (reg_state[REGNO (base)].store_ruid
1142- <= reg_state[regno].use_ruid))
1143- {
1144- int i;
1145-
1146- /* Change destination register and, if necessary, the constant
1147- value in PREV, the constant loading instruction. */
1148- validate_change (prev, &SET_DEST (prev_set), index_reg, 1);
1149- if (reg_state[regno].offset != const0_rtx)
1150- validate_change (prev,
1151- &SET_SRC (prev_set),
1152- GEN_INT (INTVAL (SET_SRC (prev_set))
1153- + INTVAL (reg_state[regno].offset)),
1154- 1);
1155-
1156- /* Now for every use of REG that we have recorded, replace REG
1157- with REG_SUM. */
1158- for (i = reg_state[regno].use_index;
1159- i < RELOAD_COMBINE_MAX_USES; i++)
1160- validate_unshare_change (reg_state[regno].reg_use[i].insn,
1161- reg_state[regno].reg_use[i].usep,
1162- /* Each change must have its own
1163- replacement. */
1164- reg_sum, 1);
1165-
1166- if (apply_change_group ())
1167- {
1168- /* For every new use of REG_SUM, we have to record the use
1169- of BASE therein, i.e. operand 1. */
1170- for (i = reg_state[regno].use_index;
1171- i < RELOAD_COMBINE_MAX_USES; i++)
1172- reload_combine_note_use
1173- (&XEXP (*reg_state[regno].reg_use[i].usep, 1),
1174- reg_state[regno].reg_use[i].insn);
1175-
1176- if (reg_state[REGNO (base)].use_ruid
1177- > reg_state[regno].use_ruid)
1178- reg_state[REGNO (base)].use_ruid
1179- = reg_state[regno].use_ruid;
1180-
1181- /* Delete the reg-reg addition. */
1182- delete_insn (insn);
1183-
1184- if (reg_state[regno].offset != const0_rtx)
1185- /* Previous REG_EQUIV / REG_EQUAL notes for PREV
1186- are now invalid. */
1187- remove_reg_equal_equiv_notes (prev);
1188-
1189- reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES;
1190- reg_state[REGNO (index_reg)].store_ruid
1191- = reload_combine_ruid;
1192- continue;
1193- }
1194- }
1195- }
1196+ if (control_flow_insn_p (insn))
1197+ last_jump_ruid = reload_combine_ruid;
1198+
1199+ if (reload_combine_recognize_const_pattern (insn)
1200+ || reload_combine_recognize_pattern (insn))
1201+ continue;
1202
1203 note_stores (PATTERN (insn), reload_combine_note_store, NULL);
1204
1205@@ -967,7 +1371,8 @@
1206 reg_state[i].use_index = -1;
1207 }
1208
1209- reload_combine_note_use (&PATTERN (insn), insn);
1210+ reload_combine_note_use (&PATTERN (insn), insn,
1211+ reload_combine_ruid, NULL_RTX);
1212 for (note = REG_NOTES (insn); note; note = XEXP (note, 1))
1213 {
1214 if (REG_NOTE_KIND (note) == REG_INC
1215@@ -976,6 +1381,7 @@
1216 int regno = REGNO (XEXP (note, 0));
1217
1218 reg_state[regno].store_ruid = reload_combine_ruid;
1219+ reg_state[regno].real_store_ruid = reload_combine_ruid;
1220 reg_state[regno].use_index = -1;
1221 }
1222 }
1223@@ -985,8 +1391,8 @@
1224 }
1225
1226 /* Check if DST is a register or a subreg of a register; if it is,
1227- update reg_state[regno].store_ruid and reg_state[regno].use_index
1228- accordingly. Called via note_stores from reload_combine. */
1229+ update store_ruid, real_store_ruid and use_index in the reg_state
1230+ structure accordingly. Called via note_stores from reload_combine. */
1231
1232 static void
1233 reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED)
1234@@ -1010,14 +1416,14 @@
1235 /* note_stores might have stripped a STRICT_LOW_PART, so we have to be
1236 careful with registers / register parts that are not full words.
1237 Similarly for ZERO_EXTRACT. */
1238- if (GET_CODE (set) != SET
1239- || GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
1240+ if (GET_CODE (SET_DEST (set)) == ZERO_EXTRACT
1241 || GET_CODE (SET_DEST (set)) == STRICT_LOW_PART)
1242 {
1243 for (i = hard_regno_nregs[regno][mode] - 1 + regno; i >= regno; i--)
1244 {
1245 reg_state[i].use_index = -1;
1246 reg_state[i].store_ruid = reload_combine_ruid;
1247+ reg_state[i].real_store_ruid = reload_combine_ruid;
1248 }
1249 }
1250 else
1251@@ -1025,6 +1431,8 @@
1252 for (i = hard_regno_nregs[regno][mode] - 1 + regno; i >= regno; i--)
1253 {
1254 reg_state[i].store_ruid = reload_combine_ruid;
1255+ if (GET_CODE (set) == SET)
1256+ reg_state[i].real_store_ruid = reload_combine_ruid;
1257 reg_state[i].use_index = RELOAD_COMBINE_MAX_USES;
1258 }
1259 }
1260@@ -1035,7 +1443,7 @@
1261 *XP is the pattern of INSN, or a part of it.
1262 Called from reload_combine, and recursively by itself. */
1263 static void
1264-reload_combine_note_use (rtx *xp, rtx insn)
1265+reload_combine_note_use (rtx *xp, rtx insn, int ruid, rtx containing_mem)
1266 {
1267 rtx x = *xp;
1268 enum rtx_code code = x->code;
1269@@ -1048,7 +1456,7 @@
1270 case SET:
1271 if (REG_P (SET_DEST (x)))
1272 {
1273- reload_combine_note_use (&SET_SRC (x), insn);
1274+ reload_combine_note_use (&SET_SRC (x), insn, ruid, NULL_RTX);
1275 return;
1276 }
1277 break;
1278@@ -1104,6 +1512,11 @@
1279 return;
1280 }
1281
1282+ /* We may be called to update uses in previously seen insns.
1283+ Don't add uses beyond the last store we saw. */
1284+ if (ruid < reg_state[regno].store_ruid)
1285+ return;
1286+
1287 /* If this register is already used in some unknown fashion, we
1288 can't do anything.
1289 If we decrement the index from zero to -1, we can't store more
1290@@ -1112,29 +1525,34 @@
1291 if (use_index < 0)
1292 return;
1293
1294- if (use_index != RELOAD_COMBINE_MAX_USES - 1)
1295- {
1296- /* We have found another use for a register that is already
1297- used later. Check if the offsets match; if not, mark the
1298- register as used in an unknown fashion. */
1299- if (! rtx_equal_p (offset, reg_state[regno].offset))
1300- {
1301- reg_state[regno].use_index = -1;
1302- return;
1303- }
1304- }
1305- else
1306+ if (use_index == RELOAD_COMBINE_MAX_USES - 1)
1307 {
1308 /* This is the first use of this register we have seen since we
1309 marked it as dead. */
1310 reg_state[regno].offset = offset;
1311- reg_state[regno].use_ruid = reload_combine_ruid;
1312- }
1313+ reg_state[regno].all_offsets_match = true;
1314+ reg_state[regno].use_ruid = ruid;
1315+ }
1316+ else
1317+ {
1318+ if (reg_state[regno].use_ruid > ruid)
1319+ reg_state[regno].use_ruid = ruid;
1320+
1321+ if (! rtx_equal_p (offset, reg_state[regno].offset))
1322+ reg_state[regno].all_offsets_match = false;
1323+ }
1324+
1325 reg_state[regno].reg_use[use_index].insn = insn;
1326+ reg_state[regno].reg_use[use_index].ruid = ruid;
1327+ reg_state[regno].reg_use[use_index].containing_mem = containing_mem;
1328 reg_state[regno].reg_use[use_index].usep = xp;
1329 return;
1330 }
1331
1332+ case MEM:
1333+ containing_mem = x;
1334+ break;
1335+
1336 default:
1337 break;
1338 }
1339@@ -1144,11 +1562,12 @@
1340 for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
1341 {
1342 if (fmt[i] == 'e')
1343- reload_combine_note_use (&XEXP (x, i), insn);
1344+ reload_combine_note_use (&XEXP (x, i), insn, ruid, containing_mem);
1345 else if (fmt[i] == 'E')
1346 {
1347 for (j = XVECLEN (x, i) - 1; j >= 0; j--)
1348- reload_combine_note_use (&XVECEXP (x, i, j), insn);
1349+ reload_combine_note_use (&XVECEXP (x, i, j), insn, ruid,
1350+ containing_mem);
1351 }
1352 }
1353 }
1354@@ -1196,9 +1615,10 @@
1355 while REG is known to already have value (SYM + offset).
1356 This function tries to change INSN into an add instruction
1357 (set (REG) (plus (REG) (OFF - offset))) using the known value.
1358- It also updates the information about REG's known value. */
1359+ It also updates the information about REG's known value.
1360+ Return true if we made a change. */
1361
1362-static void
1363+static bool
1364 move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn)
1365 {
1366 rtx pat = PATTERN (insn);
1367@@ -1207,6 +1627,7 @@
1368 rtx new_src = gen_int_mode (INTVAL (off) - reg_offset[regno],
1369 GET_MODE (reg));
1370 bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
1371+ bool changed = false;
1372
1373 /* (set (reg) (plus (reg) (const_int 0))) is not canonical;
1374 use (set (reg) (reg)) instead.
1375@@ -1221,13 +1642,13 @@
1376 (reg)), would be discarded. Maybe we should
1377 try a truncMN pattern? */
1378 if (INTVAL (off) == reg_offset [regno])
1379- validate_change (insn, &SET_SRC (pat), reg, 0);
1380+ changed = validate_change (insn, &SET_SRC (pat), reg, 0);
1381 }
1382 else if (rtx_cost (new_src, PLUS, speed) < rtx_cost (src, SET, speed)
1383 && have_add2_insn (reg, new_src))
1384 {
1385 rtx tem = gen_rtx_PLUS (GET_MODE (reg), reg, new_src);
1386- validate_change (insn, &SET_SRC (pat), tem, 0);
1387+ changed = validate_change (insn, &SET_SRC (pat), tem, 0);
1388 }
1389 else if (sym == NULL_RTX && GET_MODE (reg) != BImode)
1390 {
1391@@ -1252,8 +1673,9 @@
1392 gen_rtx_STRICT_LOW_PART (VOIDmode,
1393 narrow_reg),
1394 narrow_src);
1395- if (validate_change (insn, &PATTERN (insn),
1396- new_set, 0))
1397+ changed = validate_change (insn, &PATTERN (insn),
1398+ new_set, 0);
1399+ if (changed)
1400 break;
1401 }
1402 }
1403@@ -1263,6 +1685,7 @@
1404 reg_mode[regno] = GET_MODE (reg);
1405 reg_symbol_ref[regno] = sym;
1406 reg_offset[regno] = INTVAL (off);
1407+ return changed;
1408 }
1409
1410
1411@@ -1272,9 +1695,10 @@
1412 value (SYM + offset) and change INSN into an add instruction
1413 (set (REG) (plus (the found register) (OFF - offset))) if such
1414 a register is found. It also updates the information about
1415- REG's known value. */
1416+ REG's known value.
1417+ Return true iff we made a change. */
1418
1419-static void
1420+static bool
1421 move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn)
1422 {
1423 rtx pat = PATTERN (insn);
1424@@ -1284,6 +1708,7 @@
1425 int min_regno;
1426 bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
1427 int i;
1428+ bool changed = false;
1429
1430 for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
1431 if (reg_set_luid[i] > move2add_last_label_luid
1432@@ -1328,20 +1753,25 @@
1433 GET_MODE (reg));
1434 tem = gen_rtx_PLUS (GET_MODE (reg), tem, new_src);
1435 }
1436- validate_change (insn, &SET_SRC (pat), tem, 0);
1437+ if (validate_change (insn, &SET_SRC (pat), tem, 0))
1438+ changed = true;
1439 }
1440 reg_set_luid[regno] = move2add_luid;
1441 reg_base_reg[regno] = -1;
1442 reg_mode[regno] = GET_MODE (reg);
1443 reg_symbol_ref[regno] = sym;
1444 reg_offset[regno] = INTVAL (off);
1445+ return changed;
1446 }
1447
1448-static void
1449+/* Convert move insns with constant inputs to additions if they are cheaper.
1450+ Return true if any changes were made. */
1451+static bool
1452 reload_cse_move2add (rtx first)
1453 {
1454 int i;
1455 rtx insn;
1456+ bool changed = false;
1457
1458 for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--)
1459 {
1460@@ -1402,7 +1832,7 @@
1461 && reg_base_reg[regno] < 0
1462 && reg_symbol_ref[regno] == NULL_RTX)
1463 {
1464- move2add_use_add2_insn (reg, NULL_RTX, src, insn);
1465+ changed |= move2add_use_add2_insn (reg, NULL_RTX, src, insn);
1466 continue;
1467 }
1468
1469@@ -1463,6 +1893,7 @@
1470 }
1471 if (success)
1472 delete_insn (insn);
1473+ changed |= success;
1474 insn = next;
1475 reg_mode[regno] = GET_MODE (reg);
1476 reg_offset[regno] =
1477@@ -1508,12 +1939,12 @@
1478 && reg_base_reg[regno] < 0
1479 && reg_symbol_ref[regno] != NULL_RTX
1480 && rtx_equal_p (sym, reg_symbol_ref[regno]))
1481- move2add_use_add2_insn (reg, sym, off, insn);
1482+ changed |= move2add_use_add2_insn (reg, sym, off, insn);
1483
1484 /* Otherwise, we have to find a register whose value is sum
1485 of sym and some constant value. */
1486 else
1487- move2add_use_add3_insn (reg, sym, off, insn);
1488+ changed |= move2add_use_add3_insn (reg, sym, off, insn);
1489
1490 continue;
1491 }
1492@@ -1568,6 +1999,7 @@
1493 }
1494 }
1495 }
1496+ return changed;
1497 }
1498
1499 /* SET is a SET or CLOBBER that sets DST. DATA is the insn which
1500
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99440.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99440.patch
new file mode 100644
index 000000000..b7a28de65
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99440.patch
@@ -0,0 +1,78 @@
12010-11-24 Chung-Lin Tang <cltang@codesourcery.com>
2
3 2010-07-08 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4
5 PR bootstrap/44768
6
7 * cfgexpand.c (estimated_stack_frame_size): Make self-contained
8 with respect to current_function_decl. Pass decl of the function.
9 * tree-inline.h (estimated_stack_frame_size): Adjust prototype.
10 * ipa-inline.c (compute_inline_parameters): Pass decl to
11 estimated_stack_frame_size.
12
13=== modified file 'gcc/cfgexpand.c'
14--- old/gcc/cfgexpand.c 2010-10-04 00:50:43 +0000
15+++ new/gcc/cfgexpand.c 2010-11-24 08:43:48 +0000
16@@ -1248,8 +1248,8 @@
17 stack_vars_alloc = stack_vars_num = 0;
18 }
19
20-/* Make a fair guess for the size of the stack frame of the current
21- function. This doesn't have to be exact, the result is only used
22+/* Make a fair guess for the size of the stack frame of the decl
23+ passed. This doesn't have to be exact, the result is only used
24 in the inline heuristics. So we don't want to run the full stack
25 var packing algorithm (which is quadratic in the number of stack
26 vars). Instead, we calculate the total size of all stack vars.
27@@ -1257,11 +1257,14 @@
28 vars doesn't happen very often. */
29
30 HOST_WIDE_INT
31-estimated_stack_frame_size (void)
32+estimated_stack_frame_size (tree decl)
33 {
34 HOST_WIDE_INT size = 0;
35 size_t i;
36 tree t, outer_block = DECL_INITIAL (current_function_decl);
37+ tree old_cur_fun_decl = current_function_decl;
38+ current_function_decl = decl;
39+ push_cfun (DECL_STRUCT_FUNCTION (decl));
40
41 init_vars_expansion ();
42
43@@ -1284,7 +1287,8 @@
44 size += account_stack_vars ();
45 fini_vars_expansion ();
46 }
47-
48+ pop_cfun ();
49+ current_function_decl = old_cur_fun_decl;
50 return size;
51 }
52
53
54=== modified file 'gcc/ipa-inline.c'
55--- old/gcc/ipa-inline.c 2010-06-30 21:30:12 +0000
56+++ new/gcc/ipa-inline.c 2010-11-24 08:43:48 +0000
57@@ -1967,7 +1967,7 @@
58
59 /* Estimate the stack size for the function. But not at -O0
60 because estimated_stack_frame_size is a quadratic problem. */
61- self_stack_size = optimize ? estimated_stack_frame_size () : 0;
62+ self_stack_size = optimize ? estimated_stack_frame_size (node->decl) : 0;
63 inline_summary (node)->estimated_self_stack_size = self_stack_size;
64 node->global.estimated_stack_size = self_stack_size;
65 node->global.stack_frame_offset = 0;
66
67=== modified file 'gcc/tree-inline.h'
68--- old/gcc/tree-inline.h 2009-09-14 18:18:58 +0000
69+++ new/gcc/tree-inline.h 2010-11-24 08:43:48 +0000
70@@ -187,6 +187,6 @@
71 extern tree remap_type (tree type, copy_body_data *id);
72 extern gimple_seq copy_gimple_seq_and_replace_locals (gimple_seq seq);
73
74-extern HOST_WIDE_INT estimated_stack_frame_size (void);
75+extern HOST_WIDE_INT estimated_stack_frame_size (tree);
76
77 #endif /* GCC_TREE_INLINE_H */
78
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99441.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99441.patch
new file mode 100644
index 000000000..5495b8d80
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99441.patch
@@ -0,0 +1,33 @@
12010-11-25 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-10-28 Andrew Stubbs <ams@codesourcery.com>
6
7 gcc/
8 * config/arm/arm.c (const_ok_for_arm): Support 0xXY00XY00 pattern
9 constants in thumb2.
10
11=== modified file 'gcc/config/arm/arm.c'
12--- old/gcc/config/arm/arm.c 2010-11-11 11:50:33 +0000
13+++ new/gcc/config/arm/arm.c 2010-12-10 15:30:47 +0000
14@@ -2340,11 +2340,17 @@
15 {
16 HOST_WIDE_INT v;
17
18- /* Allow repeated pattern. */
19+ /* Allow repeated patterns 0x00XY00XY or 0xXYXYXYXY. */
20 v = i & 0xff;
21 v |= v << 16;
22 if (i == v || i == (v | (v << 8)))
23 return TRUE;
24+
25+ /* Allow repeated pattern 0xXY00XY00. */
26+ v = i & 0xff00;
27+ v |= v << 16;
28+ if (i == v)
29+ return TRUE;
30 }
31
32 return FALSE;
33
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99442.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99442.patch
new file mode 100644
index 000000000..62c44784b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99442.patch
@@ -0,0 +1,23 @@
12010-11-24 Maxim Kuvyrkov <maxim@codesourcery.com>
2
3 gcc/
4 * loop-iv.c (get_biv_step): Workaround loop analysis ICE.
5
6=== modified file 'gcc/loop-iv.c'
7--- old/gcc/loop-iv.c 2009-11-25 10:55:54 +0000
8+++ new/gcc/loop-iv.c 2010-12-10 15:32:04 +0000
9@@ -796,6 +796,13 @@
10 outer_step))
11 return false;
12
13+ /* CSL local: workaround get_biv_step_1() inability to handle DU
14+ chains originating at sets of subregs. Such subregs are introduced
15+ by Tom's extension elimination pass. For upstream duscussion see
16+ http://gcc.gnu.org/ml/gcc/2010-11/msg00552.html . */
17+ if (!((*inner_mode == *outer_mode) != (*extend != UNKNOWN)))
18+ return false;
19+
20 gcc_assert ((*inner_mode == *outer_mode) != (*extend != UNKNOWN));
21 gcc_assert (*inner_mode != *outer_mode || *outer_step == const0_rtx);
22
23
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99443.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99443.patch
new file mode 100644
index 000000000..802c3816f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99443.patch
@@ -0,0 +1,873 @@
12010-11-26 Tom de Vries <tom@codesourcery.com>
2
3 gcc/
4 * gcc/ee.c: New file.
5 * gcc/tree-pass.h (pass_ee): Declare.
6 * gcc/opts.c (decode_options): Set flag_ee at -O2.
7 * gcc/timevar.def (TV_EE): New timevar.
8 * gcc/common.opt (fextension-elimination): New option.
9 * gcc/Makefile.in (ee.o): New rule.
10 * gcc/passes.c (pass_ee): Add it.
11 * gcc/testsuite/gcc.dg/extend-4.c: New test.
12 * gcc/testsuite/gcc.dg/extend-1.c: New test.
13 * gcc/testsuite/gcc.dg/extend-2.c: New test.
14 * gcc/testsuite/gcc.dg/extend-2-64.c: New test.
15 * gcc/testsuite/gcc.dg/extend-3.c: New test.
16
17=== modified file 'gcc/Makefile.in'
18--- old/gcc/Makefile.in 2010-11-16 18:05:53 +0000
19+++ new/gcc/Makefile.in 2010-12-10 15:33:37 +0000
20@@ -1194,6 +1194,7 @@
21 dse.o \
22 dwarf2asm.o \
23 dwarf2out.o \
24+ ee.o \
25 ebitmap.o \
26 emit-rtl.o \
27 et-forest.o \
28@@ -2965,6 +2966,11 @@
29 web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
30 hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
31 $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H)
32+ee.o : ee.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
33+ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h \
34+ $(DF_H) $(TIMEVAR_H) tree-pass.h $(RECOG_H) $(EXPR_H) \
35+ $(REGS_H) $(TREE_H) $(TM_P_H) insn-config.h $(INSN_ATTR_H) $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) \
36+ $(TARGET_H) $(OPTABS_H) insn-codes.h rtlhooks-def.h $(PARAMS_H) $(CGRAPH_H)
37 gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
38 $(REGS_H) hard-reg-set.h $(FLAGS_H) $(REAL_H) insn-config.h $(GGC_H) \
39 $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(TOPLEV_H) \
40
41=== modified file 'gcc/common.opt'
42--- old/gcc/common.opt 2010-11-04 12:43:52 +0000
43+++ new/gcc/common.opt 2010-12-10 15:33:37 +0000
44@@ -496,6 +496,10 @@
45 Common Report Var(flag_early_inlining) Init(1) Optimization
46 Perform early inlining
47
48+fextension-elimination
49+Common Report Var(flag_ee) Init(0) Optimization
50+Perform extension elimination
51+
52 feliminate-dwarf2-dups
53 Common Report Var(flag_eliminate_dwarf2_dups)
54 Perform DWARF2 duplicate elimination
55
56=== added file 'gcc/ee.c'
57--- old/gcc/ee.c 1970-01-01 00:00:00 +0000
58+++ new/gcc/ee.c 2010-12-10 15:33:37 +0000
59@@ -0,0 +1,662 @@
60+/* Redundant extension elimination
61+ Copyright (C) 2010 Free Software Foundation, Inc.
62+ Contributed by Tom de Vries (tom@codesourcery.com)
63+
64+This file is part of GCC.
65+
66+GCC is free software; you can redistribute it and/or modify it under
67+the terms of the GNU General Public License as published by the Free
68+Software Foundation; either version 3, or (at your option) any later
69+version.
70+
71+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
72+WARRANTY; without even the implied warranty of MERCHANTABILITY or
73+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74+for more details.
75+
76+You should have received a copy of the GNU General Public License
77+along with GCC; see the file COPYING3. If not see
78+<http://www.gnu.org/licenses/>. */
79+
80+/*
81+
82+ MOTIVATING EXAMPLE
83+
84+ The motivating example for this pass is:
85+
86+ void f(unsigned char *p, short s, int c, int *z)
87+ {
88+ if (c)
89+ *z = 0;
90+ *p ^= (unsigned char)s;
91+ }
92+
93+ For MIPS, compilation results in the following insns.
94+
95+ (set (reg/v:SI 199)
96+ (sign_extend:SI (subreg:HI (reg:SI 200) 2)))
97+
98+ ...
99+
100+ (set (reg:QI 203)
101+ (subreg:QI (reg/v:SI 199) 3))
102+
103+ These insns are the only def and the only use of reg 199, each located in a
104+ different bb.
105+
106+ The sign-extension preserves the lower half of reg 200 and copies them to
107+ reg 199, and the subreg use of reg 199 only reads the least significant byte.
108+ The sign extension is therefore redundant (the extension part, not the copy
109+ part), and can safely be replaced with a regcopy from reg 200 to reg 199.
110+
111+
112+ OTHER SIGN/ZERO EXTENSION ELIMINATION PASSES
113+
114+ There are other passes which eliminate sign/zero-extension: combine and
115+ implicit_zee. Both attempt to eliminate extensions by combining them with
116+ other instructions. The combine pass does this at bb level,
117+ implicit_zee works at inter-bb level.
118+
119+ The combine pass combine an extension with either:
120+ - all uses of the extension, or
121+ - all defs of the operand of the extension.
122+ The implicit_zee pass only implements the latter.
123+
124+ For our motivating example, combine doesn't work since the def and the use of
125+ reg 199 are in a different bb.
126+
127+ Implicit_zee does not work since it only combines an extension with the defs
128+ of its operand.
129+
130+
131+ INTENDED EFFECT
132+
133+ This pass works by removing sign/zero-extensions, or replacing them with
134+ regcopies. The idea there is that the regcopy might be eliminated by a later
135+ pass. In case the regcopy cannot be eliminated, it might at least be cheaper
136+ than the extension.
137+
138+
139+ IMPLEMENTATION
140+
141+ The pass scans twice over all instructions.
142+
143+ The first scan registers all uses of a reg in the biggest_use array. After
144+ that first scan, the biggest_use array contains the size in bits of the
145+ biggest use of each reg.
146+
147+ The second scan finds extensions, determines whether they are redundant based
148+ on the biggest use, and deletes or replaces them.
149+
150+ In case that the src and dest reg of the replacement are not of the same size,
151+ we do not replace with a normal regcopy, but with a truncate or with the copy
152+ of a paradoxical subreg instead.
153+
154+
155+ LIMITATIONS
156+
157+ The scope of the analysis is limited to an extension and its uses. The other
158+ type of analysis (related to the defs of the operand of an extension) is not
159+ done.
160+
161+ Furthermore, we do the analysis of biggest use per reg. So when determining
162+ whether an extension is redundant, we take all uses of a the dest reg into
163+ account, also the ones that are not uses of the extension. This could be
164+ overcome by calculating the def-use chains and using those for analysis
165+ instead.
166+
167+ Finally, during the analysis each insn is looked at in isolation. There is no
168+ propagation of information during the analysis. To overcome this limitation,
169+ a backward iterative bit-level liveness analysis is needed. */
170+
171+
172+#include "config.h"
173+#include "system.h"
174+#include "coretypes.h"
175+#include "tm.h"
176+#include "rtl.h"
177+#include "tree.h"
178+#include "tm_p.h"
179+#include "flags.h"
180+#include "regs.h"
181+#include "hard-reg-set.h"
182+#include "basic-block.h"
183+#include "insn-config.h"
184+#include "function.h"
185+#include "expr.h"
186+#include "insn-attr.h"
187+#include "recog.h"
188+#include "toplev.h"
189+#include "target.h"
190+#include "timevar.h"
191+#include "optabs.h"
192+#include "insn-codes.h"
193+#include "rtlhooks-def.h"
194+#include "output.h"
195+#include "params.h"
196+#include "timevar.h"
197+#include "tree-pass.h"
198+#include "cgraph.h"
199+
200+#define SKIP_REG (-1)
201+
202+/* Array to register the biggest use of a reg, in bits. */
203+
204+static int *biggest_use;
205+
206+/* Forward declaration. */
207+
208+static void note_use (rtx *x, void *data);
209+
210+/* The following two functions are borrowed from trunk/gcc/toplev.c. They can be
211+ removed for a check-in into gcc trunk. */
212+
213+/* Given X, an unsigned number, return the number of least significant bits
214+ that are zero. When X == 0, the result is the word size. */
215+
216+static int
217+ctz_hwi (unsigned HOST_WIDE_INT x)
218+{
219+ return x ? floor_log2 (x & -x) : HOST_BITS_PER_WIDE_INT;
220+}
221+
222+/* Similarly for most significant bits. */
223+
224+static int
225+clz_hwi (unsigned HOST_WIDE_INT x)
226+{
227+ return HOST_BITS_PER_WIDE_INT - 1 - floor_log2(x);
228+}
229+
230+/* Check whether this is a paradoxical subreg. */
231+
232+static bool
233+paradoxical_subreg_p (rtx subreg)
234+{
235+ enum machine_mode subreg_mode, reg_mode;
236+
237+ if (GET_CODE (subreg) != SUBREG)
238+ return false;
239+
240+ subreg_mode = GET_MODE (subreg);
241+ reg_mode = GET_MODE (SUBREG_REG (subreg));
242+
243+ if (GET_MODE_SIZE (subreg_mode) > GET_MODE_SIZE (reg_mode))
244+ return true;
245+
246+ return false;
247+}
248+
249+/* Get the size and reg number of a REG or SUBREG use. */
250+
251+static bool
252+reg_use_p (rtx use, int *size, unsigned int *regno)
253+{
254+ rtx reg;
255+
256+ if (REG_P (use))
257+ {
258+ *regno = REGNO (use);
259+ *size = GET_MODE_BITSIZE (GET_MODE (use));
260+ return true;
261+ }
262+ else if (GET_CODE (use) == SUBREG)
263+ {
264+ reg = SUBREG_REG (use);
265+
266+ if (!REG_P (reg))
267+ return false;
268+
269+ *regno = REGNO (reg);
270+
271+ if (paradoxical_subreg_p (use))
272+ *size = GET_MODE_BITSIZE (GET_MODE (reg));
273+ else
274+ *size = subreg_lsb (use) + GET_MODE_BITSIZE (GET_MODE (use));
275+
276+ return true;
277+ }
278+
279+ return false;
280+}
281+
282+/* Register the use of a reg. */
283+
284+static void
285+register_use (int size, unsigned int regno)
286+{
287+ int *current = &biggest_use[regno];
288+
289+ if (*current == SKIP_REG)
290+ return;
291+
292+ *current = MAX (*current, size);
293+}
294+
295+/* Handle embedded uses. */
296+
297+static void
298+note_embedded_uses (rtx use, rtx pattern)
299+{
300+ const char *format_ptr;
301+ int i, j;
302+
303+ format_ptr = GET_RTX_FORMAT (GET_CODE (use));
304+ for (i = 0; i < GET_RTX_LENGTH (GET_CODE (use)); i++)
305+ if (format_ptr[i] == 'e')
306+ note_use (&XEXP (use, i), pattern);
307+ else if (format_ptr[i] == 'E')
308+ for (j = 0; j < XVECLEN (use, i); j++)
309+ note_use (&XVECEXP (use, i, j), pattern);
310+}
311+
312+/* Get the set that has use as its SRC operand. */
313+
314+static rtx
315+get_set (rtx use, rtx pattern)
316+{
317+ rtx sub;
318+ int i;
319+
320+ if (GET_CODE (pattern) == SET && SET_SRC (pattern) == use)
321+ return pattern;
322+
323+ if (GET_CODE (pattern) == PARALLEL)
324+ for (i = 0; i < XVECLEN (pattern, 0); ++i)
325+ {
326+ sub = XVECEXP (pattern, 0, i);
327+ if (GET_CODE (sub) == SET && SET_SRC (sub) == use)
328+ return sub;
329+ }
330+
331+ return NULL_RTX;
332+}
333+
334+/* Handle a restricted op use. In this context restricted means that a bit in an
335+ operand influences only the same bit or more significant bits in the result.
336+ The bitwise ops are a subclass, but PLUS is one as well. */
337+
338+static void
339+note_restricted_op_use (rtx use, unsigned int nr_operands, rtx pattern)
340+{
341+ unsigned int i, smallest;
342+ int operand_size[2];
343+ int used_size;
344+ unsigned int operand_regno[2];
345+ bool operand_reg[2];
346+ bool operand_ignore[2];
347+ rtx set;
348+
349+ /* Init operand_reg, operand_size, operand_regno and operand_ignore. */
350+ for (i = 0; i < nr_operands; ++i)
351+ {
352+ operand_reg[i] = reg_use_p (XEXP (use, i), &operand_size[i],
353+ &operand_regno[i]);
354+ operand_ignore[i] = false;
355+ }
356+
357+ /* Handle case of reg and-masked with const. */
358+ if (GET_CODE (use) == AND && CONST_INT_P (XEXP (use, 1)) && operand_reg[0])
359+ {
360+ used_size =
361+ HOST_BITS_PER_WIDE_INT - clz_hwi (UINTVAL (XEXP (use, 1)));
362+ operand_size[0] = MIN (operand_size[0], used_size);
363+ }
364+
365+ /* Handle case of reg or-masked with const. */
366+ if (GET_CODE (use) == IOR && CONST_INT_P (XEXP (use, 1)) && operand_reg[0])
367+ {
368+ used_size =
369+ HOST_BITS_PER_WIDE_INT - clz_hwi (~UINTVAL (XEXP (use, 1)));
370+ operand_size[0] = MIN (operand_size[0], used_size);
371+ }
372+
373+ /* Ignore the use of a in 'a = a + b'. */
374+ set = get_set (use, pattern);
375+ if (set != NULL_RTX && REG_P (SET_DEST (set)))
376+ for (i = 0; i < nr_operands; ++i)
377+ operand_ignore[i] = (operand_reg[i]
378+ && (REGNO (SET_DEST (set)) == operand_regno[i]));
379+
380+ /* Handle the case a reg is combined with don't care bits. */
381+ if (nr_operands == 2 && operand_reg[0] && operand_reg[1]
382+ && operand_size[0] != operand_size[1])
383+ {
384+ smallest = operand_size[0] > operand_size[1];
385+
386+ if (paradoxical_subreg_p (XEXP (use, smallest))
387+ && !SUBREG_PROMOTED_VAR_P (XEXP (use, smallest)))
388+ operand_size[1 - smallest] = operand_size[smallest];
389+ }
390+
391+ /* Register the operand use, if necessary. */
392+ for (i = 0; i < nr_operands; ++i)
393+ if (!operand_reg[i])
394+ note_use (&XEXP (use, i), pattern);
395+ else if (!operand_ignore[i])
396+ register_use (operand_size[i], operand_regno[i]);
397+}
398+
399+/* Handle all uses noted by note_uses. */
400+
401+static void
402+note_use (rtx *x, void *data)
403+{
404+ rtx use = *x;
405+ rtx pattern = (rtx)data;
406+ int use_size;
407+ unsigned int use_regno;
408+
409+ switch (GET_CODE (use))
410+ {
411+ case REG:
412+ case SUBREG:
413+ if (!reg_use_p (use, &use_size, &use_regno))
414+ {
415+ note_embedded_uses (use, pattern);
416+ return;
417+ }
418+ register_use (use_size, use_regno);
419+ return;
420+ case IOR:
421+ case AND:
422+ case XOR:
423+ case PLUS:
424+ case MINUS:
425+ note_restricted_op_use (use, 2, pattern);
426+ return;
427+ case NOT:
428+ case NEG:
429+ note_restricted_op_use (use, 1, pattern);
430+ return;
431+ case ASHIFT:
432+ if (!reg_use_p (XEXP (use, 0), &use_size, &use_regno)
433+ || !CONST_INT_P (XEXP (use, 1))
434+ || INTVAL (XEXP (use, 1)) <= 0
435+ || paradoxical_subreg_p (XEXP (use, 0)))
436+ {
437+ note_embedded_uses (use, pattern);
438+ return;
439+ }
440+ register_use (use_size - INTVAL (XEXP (use, 1)), use_regno);
441+ return;
442+ default:
443+ note_embedded_uses (use, pattern);
444+ return;
445+ }
446+}
447+
448+/* Check whether reg is implicitly used. */
449+
450+static bool
451+implicit_use_p (int regno)
452+{
453+#ifdef EPILOGUE_USES
454+ if (EPILOGUE_USES (regno))
455+ return true;
456+#endif
457+
458+#ifdef EH_USES
459+ if (EH_USES (regno))
460+ return true;
461+#endif
462+
463+ return false;
464+}
465+
466+/* Note the uses of argument registers in a call. */
467+
468+static void
469+note_call_uses (rtx insn)
470+{
471+ rtx link, link_expr;
472+
473+ if (!CALL_P (insn))
474+ return;
475+
476+ for (link = CALL_INSN_FUNCTION_USAGE (insn); link; link = XEXP (link, 1))
477+ {
478+ link_expr = XEXP (link, 0);
479+
480+ if (GET_CODE (link_expr) == USE)
481+ note_use (&XEXP (link_expr, 0), link);
482+ }
483+}
484+
485+/* Calculate the biggest use mode for all regs. */
486+
487+static void
488+calculate_biggest_use (void)
489+{
490+ int i;
491+ basic_block bb;
492+ rtx insn;
493+
494+ /* Initialize biggest_use for all regs to 0. If a reg is used implicitly, we
495+ handle that reg conservatively and set it to SKIP_REG instead. */
496+ for (i = 0; i < max_reg_num (); i++)
497+ biggest_use[i] = ((implicit_use_p (i) || HARD_REGISTER_NUM_P (i))
498+ ? SKIP_REG : 0);
499+
500+ /* For all insns, call note_use for each use in insn. */
501+ FOR_EACH_BB (bb)
502+ FOR_BB_INSNS (bb, insn)
503+ {
504+ if (!NONDEBUG_INSN_P (insn))
505+ continue;
506+
507+ note_uses (&PATTERN (insn), note_use, PATTERN (insn));
508+
509+ if (CALL_P (insn))
510+ note_call_uses (insn);
511+ }
512+
513+ /* Dump the biggest uses found. */
514+ if (dump_file)
515+ for (i = 0; i < max_reg_num (); i++)
516+ if (biggest_use[i] > 0)
517+ fprintf (dump_file, "reg %d: size %d\n", i, biggest_use[i]);
518+}
519+
520+/* Check whether this is a sign/zero extension. */
521+
522+static bool
523+extension_p (rtx insn, rtx *dest, rtx *inner, int *preserved_size)
524+{
525+ rtx src, op0;
526+
527+ /* Detect set of reg. */
528+ if (GET_CODE (PATTERN (insn)) != SET)
529+ return false;
530+
531+ src = SET_SRC (PATTERN (insn));
532+ *dest = SET_DEST (PATTERN (insn));
533+
534+ if (!REG_P (*dest))
535+ return false;
536+
537+ /* Detect sign or zero extension. */
538+ if (GET_CODE (src) == ZERO_EXTEND || GET_CODE (src) == SIGN_EXTEND
539+ || (GET_CODE (src) == AND && CONST_INT_P (XEXP (src, 1))))
540+ {
541+ op0 = XEXP (src, 0);
542+
543+ /* Determine amount of least significant bits preserved by operation. */
544+ if (GET_CODE (src) == AND)
545+ *preserved_size = ctz_hwi (~UINTVAL (XEXP (src, 1)));
546+ else
547+ *preserved_size = GET_MODE_BITSIZE (GET_MODE (op0));
548+
549+ if (GET_CODE (op0) == SUBREG)
550+ {
551+ if (subreg_lsb (op0) != 0)
552+ return false;
553+
554+ *inner = SUBREG_REG (op0);
555+ return true;
556+ }
557+ else if (REG_P (op0))
558+ {
559+ *inner = op0;
560+ return true;
561+ }
562+ }
563+
564+ return false;
565+}
566+
567+/* Check whether this is a redundant sign/zero extension. */
568+
569+static bool
570+redundant_extension_p (rtx insn, rtx *dest, rtx *inner)
571+{
572+ int biggest_dest_use;
573+ int preserved_size;
574+
575+ if (!extension_p (insn, dest, inner, &preserved_size))
576+ return false;
577+
578+ if (dump_file)
579+ fprintf (dump_file, "considering extension %u with preserved size %d\n",
580+ INSN_UID (insn), preserved_size);
581+
582+ biggest_dest_use = biggest_use[REGNO (*dest)];
583+
584+ if (biggest_dest_use == SKIP_REG)
585+ return false;
586+
587+ if (preserved_size < biggest_dest_use)
588+ return false;
589+
590+ if (dump_file)
591+ fprintf (dump_file, "found superfluous extension %u\n", INSN_UID (insn));
592+
593+ return true;
594+}
595+
596+/* Try to remove or replace the redundant extension. */
597+
598+static void
599+try_remove_or_replace_extension (rtx insn, rtx dest, rtx inner)
600+{
601+ rtx cp_src, cp_dest, seq, one;
602+
603+ if (GET_MODE_CLASS (GET_MODE (dest)) != GET_MODE_CLASS (GET_MODE (inner)))
604+ return;
605+
606+ /* Check whether replacement is needed. */
607+ if (dest != inner)
608+ {
609+ start_sequence ();
610+
611+ /* Determine the proper replacement operation. */
612+ if (GET_MODE (dest) == GET_MODE (inner))
613+ {
614+ cp_src = inner;
615+ cp_dest = dest;
616+ }
617+ else if (GET_MODE_SIZE (GET_MODE (dest))
618+ > GET_MODE_SIZE (GET_MODE (inner)))
619+ {
620+ emit_clobber (dest);
621+ cp_src = inner;
622+ cp_dest = gen_lowpart_SUBREG (GET_MODE (inner), dest);
623+ }
624+ else
625+ {
626+ cp_src = gen_rtx_TRUNCATE (GET_MODE (dest), inner);
627+ cp_dest = dest;
628+ }
629+
630+ emit_move_insn (cp_dest, cp_src);
631+
632+ seq = get_insns ();
633+ end_sequence ();
634+
635+ /* If the replacement is not supported, bail out. */
636+ for (one = seq; one != NULL_RTX; one = NEXT_INSN (one))
637+ if (recog_memoized (one) < 0 && GET_CODE (PATTERN (one)) != CLOBBER)
638+ return;
639+
640+ /* Insert the replacement. */
641+ emit_insn_before (seq, insn);
642+ }
643+
644+ /* Note replacement/removal in the dump. */
645+ if (dump_file)
646+ {
647+ fprintf (dump_file, "superfluous extension %u ", INSN_UID (insn));
648+ if (dest != inner)
649+ fprintf (dump_file, "replaced by %u\n", INSN_UID (seq));
650+ else
651+ fprintf (dump_file, "removed\n");
652+ }
653+
654+ /* Remove the extension. */
655+ delete_insn (insn);
656+}
657+
658+/* Find redundant extensions and remove or replace them if possible. */
659+
660+static void
661+remove_redundant_extensions (void)
662+{
663+ basic_block bb;
664+ rtx insn, next, dest, inner;
665+
666+ biggest_use = XNEWVEC (int, max_reg_num ());
667+ calculate_biggest_use ();
668+
669+ /* Remove redundant extensions. */
670+ FOR_EACH_BB (bb)
671+ FOR_BB_INSNS_SAFE (bb, insn, next)
672+ {
673+ if (!NONDEBUG_INSN_P (insn))
674+ continue;
675+
676+ if (!redundant_extension_p (insn, &dest, &inner))
677+ continue;
678+
679+ try_remove_or_replace_extension (insn, dest, inner);
680+ }
681+
682+ free (biggest_use);
683+}
684+
685+/* Remove redundant extensions. */
686+
687+static unsigned int
688+rest_of_handle_ee (void)
689+{
690+ remove_redundant_extensions ();
691+ return 0;
692+}
693+
694+/* Run ee pass when flag_ee is set at optimization level > 0. */
695+
696+static bool
697+gate_handle_ee (void)
698+{
699+ return (optimize > 0 && flag_ee);
700+}
701+
702+struct rtl_opt_pass pass_ee =
703+{
704+ {
705+ RTL_PASS,
706+ "ee", /* name */
707+ gate_handle_ee, /* gate */
708+ rest_of_handle_ee, /* execute */
709+ NULL, /* sub */
710+ NULL, /* next */
711+ 0, /* static_pass_number */
712+ TV_EE, /* tv_id */
713+ 0, /* properties_required */
714+ 0, /* properties_provided */
715+ 0, /* properties_destroyed */
716+ 0, /* todo_flags_start */
717+ TODO_ggc_collect |
718+ TODO_dump_func |
719+ TODO_verify_rtl_sharing, /* todo_flags_finish */
720+ }
721+};
722
723=== modified file 'gcc/opts.c'
724--- old/gcc/opts.c 2010-05-17 09:13:28 +0000
725+++ new/gcc/opts.c 2010-12-10 15:33:37 +0000
726@@ -907,6 +907,7 @@
727 flag_tree_switch_conversion = opt2;
728 flag_ipa_cp = opt2;
729 flag_ipa_sra = opt2;
730+ flag_ee = opt2;
731
732 /* Track fields in field-sensitive alias analysis. */
733 set_param_value ("max-fields-for-field-sensitive",
734
735=== modified file 'gcc/passes.c'
736--- old/gcc/passes.c 2010-09-01 13:29:58 +0000
737+++ new/gcc/passes.c 2010-12-10 15:33:37 +0000
738@@ -974,6 +974,7 @@
739 NEXT_PASS (pass_lower_subreg);
740 NEXT_PASS (pass_df_initialize_opt);
741 NEXT_PASS (pass_cse);
742+ NEXT_PASS (pass_ee);
743 NEXT_PASS (pass_rtl_fwprop);
744 NEXT_PASS (pass_rtl_cprop);
745 NEXT_PASS (pass_rtl_pre);
746
747=== added file 'gcc/testsuite/gcc.dg/extend-1.c'
748--- old/gcc/testsuite/gcc.dg/extend-1.c 1970-01-01 00:00:00 +0000
749+++ new/gcc/testsuite/gcc.dg/extend-1.c 2010-12-10 15:33:37 +0000
750@@ -0,0 +1,13 @@
751+/* { dg-do compile } */
752+/* { dg-options "-O2 -fdump-rtl-ee" } */
753+
754+void f(unsigned char * p, short s, int c, int *z)
755+{
756+ if (c)
757+ *z = 0;
758+ *p ^= (unsigned char)s;
759+}
760+
761+/* { dg-final { scan-rtl-dump-times "sign_extend:" 0 "ee" { target mips*-*-* } } } */
762+/* { dg-final { scan-rtl-dump-times "superfluous extension \[0-9\]+ replaced" 1 "ee" { target mips*-*-* } } } */
763+/* { dg-final { cleanup-rtl-dump "ee" } } */
764
765=== added file 'gcc/testsuite/gcc.dg/extend-2-64.c'
766--- old/gcc/testsuite/gcc.dg/extend-2-64.c 1970-01-01 00:00:00 +0000
767+++ new/gcc/testsuite/gcc.dg/extend-2-64.c 2010-12-10 15:33:37 +0000
768@@ -0,0 +1,20 @@
769+/* { dg-do compile } */
770+/* { dg-options "-O2 -fdump-rtl-ee" } */
771+/* { dg-require-effective-target mips64 } */
772+
773+void f(unsigned char * p, short *s, int c)
774+{
775+ short or = 0;
776+ while (c)
777+ {
778+ or = or | s[c];
779+ c --;
780+ }
781+ *p = (unsigned char)or;
782+}
783+
784+/* { dg-final { scan-rtl-dump-times "zero_extend:" 1 "ee" { target mips*-*-* } } } */
785+/* { dg-final { scan-rtl-dump-times "sign_extend:" 0 "ee" { target mips*-*-* } } } */
786+/* { dg-final { scan-rtl-dump-times "superfluous extension \[0-9\]+ replaced" 3 "ee" { target mips*-*-* } } } */
787+/* { dg-final { cleanup-rtl-dump "ee" } } */
788+
789
790=== added file 'gcc/testsuite/gcc.dg/extend-2.c'
791--- old/gcc/testsuite/gcc.dg/extend-2.c 1970-01-01 00:00:00 +0000
792+++ new/gcc/testsuite/gcc.dg/extend-2.c 2010-12-10 15:33:37 +0000
793@@ -0,0 +1,20 @@
794+/* { dg-do compile } */
795+/* { dg-options "-O2 -fdump-rtl-ee" } */
796+/* { dg-require-effective-target ilp32 } */
797+
798+void f(unsigned char * p, short *s, int c)
799+{
800+ short or = 0;
801+ while (c)
802+ {
803+ or = or | s[c];
804+ c --;
805+ }
806+ *p = (unsigned char)or;
807+}
808+
809+/* { dg-final { scan-rtl-dump-times "zero_extend" 0 "ee" { target mips*-*-* } } } */
810+/* { dg-final { scan-rtl-dump-times "sign_extend" 0 "ee" { target mips*-*-* } } } */
811+/* { dg-final { scan-rtl-dump-times "superfluous extension \[0-9\]+ replaced" 2 "ee" { target mips*-*-* } } } */
812+/* { dg-final { cleanup-rtl-dump "ee" } } */
813+
814
815=== added file 'gcc/testsuite/gcc.dg/extend-3.c'
816--- old/gcc/testsuite/gcc.dg/extend-3.c 1970-01-01 00:00:00 +0000
817+++ new/gcc/testsuite/gcc.dg/extend-3.c 2010-12-10 15:33:37 +0000
818@@ -0,0 +1,12 @@
819+/* { dg-do compile } */
820+/* { dg-options "-O2 -fdump-rtl-ee" } */
821+
822+unsigned int f(unsigned char byte)
823+{
824+ return byte << 25;
825+}
826+
827+/* { dg-final { scan-rtl-dump-times "zero_extend:" 0 "ee" { target mips*-*-* } } } */
828+/* { dg-final { scan-rtl-dump "superfluous extension \[0-9\]+ replaced" "ee" { target mips*-*-* } } } */
829+/* { dg-final { cleanup-rtl-dump "ee" } } */
830+
831
832=== added file 'gcc/testsuite/gcc.dg/extend-4.c'
833--- old/gcc/testsuite/gcc.dg/extend-4.c 1970-01-01 00:00:00 +0000
834+++ new/gcc/testsuite/gcc.dg/extend-4.c 2010-12-10 15:33:37 +0000
835@@ -0,0 +1,13 @@
836+/* { dg-do compile } */
837+/* { dg-options "-O2 -fdump-rtl-ee" } */
838+
839+unsigned char f(unsigned int a)
840+{
841+ unsigned int b = a & 0x10ff;
842+ return b;
843+}
844+
845+/* { dg-final { scan-rtl-dump-times "and:" 0 "ee" { target mips*-*-* } } } */
846+/* { dg-final { scan-rtl-dump-times "superfluous extension \[0-9\]+ replaced" 1 "ee" { target mips*-*-* } } } */
847+/* { dg-final { cleanup-rtl-dump "ee" } } */
848+
849
850=== modified file 'gcc/timevar.def'
851--- old/gcc/timevar.def 2009-11-27 12:43:08 +0000
852+++ new/gcc/timevar.def 2010-12-10 15:33:37 +0000
853@@ -162,6 +162,7 @@
854 DEFTIMEVAR (TV_VARCONST , "varconst")
855 DEFTIMEVAR (TV_LOWER_SUBREG , "lower subreg")
856 DEFTIMEVAR (TV_JUMP , "jump")
857+DEFTIMEVAR (TV_EE , "extension elimination")
858 DEFTIMEVAR (TV_FWPROP , "forward prop")
859 DEFTIMEVAR (TV_CSE , "CSE")
860 DEFTIMEVAR (TV_DCE , "dead code elimination")
861
862=== modified file 'gcc/tree-pass.h'
863--- old/gcc/tree-pass.h 2010-09-01 13:29:58 +0000
864+++ new/gcc/tree-pass.h 2010-12-10 15:33:37 +0000
865@@ -468,6 +468,7 @@
866 extern struct rtl_opt_pass pass_initial_value_sets;
867 extern struct rtl_opt_pass pass_unshare_all_rtl;
868 extern struct rtl_opt_pass pass_instantiate_virtual_regs;
869+extern struct rtl_opt_pass pass_ee;
870 extern struct rtl_opt_pass pass_rtl_fwprop;
871 extern struct rtl_opt_pass pass_rtl_fwprop_addr;
872 extern struct rtl_opt_pass pass_jump2;
873
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99444.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99444.patch
new file mode 100644
index 000000000..80eebeec0
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99444.patch
@@ -0,0 +1,183 @@
12010-12-02 Bernd Schmidt <bernds@codesourcery.com>
2
3 Issue #10089
4
5 gcc/
6 * expr.c (store_field): Avoid a direct store if the mode is larger
7 than the size of the bit field.
8 * stor-layout.c (layout_decl): If flag_strict_volatile_bitfields,
9 treat non-volatile bit fields like volatile ones.
10 * toplev.c (process_options): Disallow combination of
11 -fstrict-volatile-bitfields and ABI versions less than 2.
12 * config/arm/arm.c (arm_option_override): Don't enable
13 flag_strict_volatile_bitfields if the ABI version is less than 2.
14 * config/h8300/h8300.c (h8300_option_override): Likewise.
15 * config/rx/rx.c (rx_option_override): Likewise.
16 * config/m32c/m32c.c (m32c_option_override): Likewise.
17 * config/sh/sh.c (sh_option_override): Likewise.
18
19 gcc/testsuite/
20 * gcc.target/arm/volatile-bitfields-4.c: New test.
21 * c-c++-common/abi-bf.c: New test.
22
23=== modified file 'gcc/config/arm/arm.c'
24--- old/gcc/config/arm/arm.c 2010-12-10 15:30:47 +0000
25+++ new/gcc/config/arm/arm.c 2010-12-10 15:34:19 +0000
26@@ -1934,7 +1934,8 @@
27 set_param_value ("gcse-unrestricted-cost", 2);
28
29 /* ARM EABI defaults to strict volatile bitfields. */
30- if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0)
31+ if (TARGET_AAPCS_BASED && flag_strict_volatile_bitfields < 0
32+ && abi_version_at_least(2))
33 flag_strict_volatile_bitfields = 1;
34
35 /* Register global variables with the garbage collector. */
36
37=== modified file 'gcc/config/h8300/h8300.c'
38--- old/gcc/config/h8300/h8300.c 2010-11-04 12:43:52 +0000
39+++ new/gcc/config/h8300/h8300.c 2010-12-10 15:34:19 +0000
40@@ -405,7 +405,7 @@
41 }
42
43 /* This target defaults to strict volatile bitfields. */
44- if (flag_strict_volatile_bitfields < 0)
45+ if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
46 flag_strict_volatile_bitfields = 1;
47 }
48
49
50=== modified file 'gcc/config/m32c/m32c.c'
51--- old/gcc/config/m32c/m32c.c 2010-11-04 12:43:52 +0000
52+++ new/gcc/config/m32c/m32c.c 2010-12-10 15:34:19 +0000
53@@ -430,7 +430,7 @@
54 flag_ivopts = 0;
55
56 /* This target defaults to strict volatile bitfields. */
57- if (flag_strict_volatile_bitfields < 0)
58+ if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
59 flag_strict_volatile_bitfields = 1;
60 }
61
62
63=== modified file 'gcc/config/rx/rx.c'
64--- old/gcc/config/rx/rx.c 2010-11-04 12:43:52 +0000
65+++ new/gcc/config/rx/rx.c 2010-12-10 15:34:19 +0000
66@@ -2191,7 +2191,7 @@
67 rx_option_override (void)
68 {
69 /* This target defaults to strict volatile bitfields. */
70- if (flag_strict_volatile_bitfields < 0)
71+ if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
72 flag_strict_volatile_bitfields = 1;
73 }
74
75
76=== modified file 'gcc/config/sh/sh.c'
77--- old/gcc/config/sh/sh.c 2010-11-04 12:43:52 +0000
78+++ new/gcc/config/sh/sh.c 2010-12-10 15:34:19 +0000
79@@ -952,7 +952,7 @@
80 sh_fix_range (sh_fixed_range_str);
81
82 /* This target defaults to strict volatile bitfields. */
83- if (flag_strict_volatile_bitfields < 0)
84+ if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
85 flag_strict_volatile_bitfields = 1;
86 }
87
88
89=== modified file 'gcc/expr.c'
90--- old/gcc/expr.c 2010-11-04 12:43:52 +0000
91+++ new/gcc/expr.c 2010-12-10 15:34:19 +0000
92@@ -5848,6 +5848,8 @@
93 || bitpos % GET_MODE_ALIGNMENT (mode))
94 && SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (target)))
95 || (bitpos % BITS_PER_UNIT != 0)))
96+ || (bitsize >= 0 && mode != BLKmode
97+ && GET_MODE_BITSIZE (mode) > bitsize)
98 /* If the RHS and field are a constant size and the size of the
99 RHS isn't the same size as the bitfield, we must use bitfield
100 operations. */
101
102=== modified file 'gcc/stor-layout.c'
103--- old/gcc/stor-layout.c 2010-11-26 12:03:32 +0000
104+++ new/gcc/stor-layout.c 2010-12-10 15:34:19 +0000
105@@ -621,12 +621,13 @@
106 /* See if we can use an ordinary integer mode for a bit-field.
107 Conditions are: a fixed size that is correct for another mode,
108 occupying a complete byte or bytes on proper boundary,
109- and not volatile or not -fstrict-volatile-bitfields. */
110+ and not -fstrict-volatile-bitfields. If the latter is set,
111+ we unfortunately can't check TREE_THIS_VOLATILE, as a cast
112+ may make a volatile object later. */
113 if (TYPE_SIZE (type) != 0
114 && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
115 && GET_MODE_CLASS (TYPE_MODE (type)) == MODE_INT
116- && !(TREE_THIS_VOLATILE (decl)
117- && flag_strict_volatile_bitfields > 0))
118+ && flag_strict_volatile_bitfields <= 0)
119 {
120 enum machine_mode xmode
121 = mode_for_size_tree (DECL_SIZE (decl), MODE_INT, 1);
122
123=== added file 'gcc/testsuite/c-c++-common/abi-bf.c'
124--- old/gcc/testsuite/c-c++-common/abi-bf.c 1970-01-01 00:00:00 +0000
125+++ new/gcc/testsuite/c-c++-common/abi-bf.c 2010-12-10 15:34:19 +0000
126@@ -0,0 +1,3 @@
127+/* { dg-warning "incompatible" } */
128+/* { dg-do compile } */
129+/* { dg-options "-fstrict-volatile-bitfields -fabi-version=1" } */
130
131=== added file 'gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c'
132--- old/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c 1970-01-01 00:00:00 +0000
133+++ new/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c 2010-12-10 15:34:19 +0000
134@@ -0,0 +1,30 @@
135+/* { dg-require-effective-target arm_eabi } */
136+/* { dg-do compile } */
137+/* { dg-options "-O2" } */
138+/* { dg-final { scan-assembler-times "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
139+/* { dg-final { scan-assembler-times "str\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
140+/* { dg-final { scan-assembler-not "strb" } } */
141+
142+struct thing {
143+ unsigned a: 8;
144+ unsigned b: 8;
145+ unsigned c: 8;
146+ unsigned d: 8;
147+};
148+
149+struct thing2 {
150+ volatile unsigned a: 8;
151+ volatile unsigned b: 8;
152+ volatile unsigned c: 8;
153+ volatile unsigned d: 8;
154+};
155+
156+void test1(volatile struct thing *t)
157+{
158+ t->a = 5;
159+}
160+
161+void test2(struct thing2 *t)
162+{
163+ t->a = 5;
164+}
165
166=== modified file 'gcc/toplev.c'
167--- old/gcc/toplev.c 2010-03-31 01:44:10 +0000
168+++ new/gcc/toplev.c 2010-12-10 15:34:19 +0000
169@@ -1851,6 +1851,13 @@
170 sorry ("Graphite loop optimizations cannot be used");
171 #endif
172
173+ if (flag_strict_volatile_bitfields > 0 && !abi_version_at_least (2))
174+ {
175+ warning (0, "-fstrict-volatile-bitfield disabled; "
176+ "it is incompatible with ABI versions < 2");
177+ flag_strict_volatile_bitfields = 0;
178+ }
179+
180 /* Unrolling all loops implies that standard loop unrolling must also
181 be done. */
182 if (flag_unroll_all_loops)
183
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99449.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99449.patch
new file mode 100644
index 000000000..e6b0fad08
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99449.patch
@@ -0,0 +1,34 @@
12010-12-21 Ulrich Weigand <uweigand@de.ibm.com>
2
3 LP: #617384
4 Backport from mainline:
5
6 gcc/
7 * config/arm/arm.c (require_pic_register): Set INSN_LOCATOR for all
8 instructions injected into the prologue to prologue_locator.
9
10=== modified file 'gcc/config/arm/arm.c'
11--- old/gcc/config/arm/arm.c 2010-12-10 15:34:19 +0000
12+++ new/gcc/config/arm/arm.c 2010-12-21 14:13:38 +0000
13@@ -5080,7 +5080,7 @@
14 }
15 else
16 {
17- rtx seq;
18+ rtx seq, insn;
19
20 if (!cfun->machine->pic_reg)
21 cfun->machine->pic_reg = gen_reg_rtx (Pmode);
22@@ -5097,6 +5097,11 @@
23
24 seq = get_insns ();
25 end_sequence ();
26+
27+ for (insn = seq; insn; insn = NEXT_INSN (insn))
28+ if (INSN_P (insn))
29+ INSN_LOCATOR (insn) = prologue_locator;
30+
31 /* We can be called during expansion of PHI nodes, where
32 we can't yet emit instructions directly in the final
33 insn stream. Queue the insns on the entry edge, they will
34
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99450.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99450.patch
new file mode 100644
index 000000000..49fa07fca
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99450.patch
@@ -0,0 +1,104 @@
1 2010-12-21 Ulrich Weigand <uweigand@de.ibm.com>
2
3 LP: #662324
4 Backport from mainline:
5
6 2010-12-17 Dodji Seketeli <dodji@redhat.com>
7
8 gcc/
9 * dwarf2out.c (gen_type_die_with_usage): Do not try to emit debug
10 info for a redundant typedef that has DECL_ORIGINAL_TYPE set. Use
11 that underlying type instead.
12
13 gcc/testsuite/
14 * g++.dg/debug/dwarf2/self-ref-1.C: New test.
15 * g++.dg/debug/dwarf2/self-ref-2.C: Likewise.
16
17=== modified file 'gcc/dwarf2out.c'
18--- old/gcc/dwarf2out.c 2010-10-04 00:50:43 +0000
19+++ new/gcc/dwarf2out.c 2010-12-21 18:46:10 +0000
20@@ -18993,6 +18993,16 @@
21 if (type == NULL_TREE || type == error_mark_node)
22 return;
23
24+ if (TYPE_NAME (type) != NULL_TREE
25+ && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
26+ && is_redundant_typedef (TYPE_NAME (type))
27+ && DECL_ORIGINAL_TYPE (TYPE_NAME (type)))
28+ /* The DECL of this type is a typedef we don't want to emit debug
29+ info for but we want debug info for its underlying typedef.
30+ This can happen for e.g, the injected-class-name of a C++
31+ type. */
32+ type = DECL_ORIGINAL_TYPE (TYPE_NAME (type));
33+
34 /* If TYPE is a typedef type variant, let's generate debug info
35 for the parent typedef which TYPE is a type of. */
36 if (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
37
38=== added file 'gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C'
39--- old/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C 1970-01-01 00:00:00 +0000
40+++ new/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-1.C 2010-12-21 18:46:10 +0000
41@@ -0,0 +1,28 @@
42+// Origin: PR debug/45088
43+// { dg-do compile }
44+// { dg-options "-g -dA" }
45+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_pointer_type\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_byte_size\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type" 4 } }
46+
47+struct A
48+{
49+ virtual ~A();
50+};
51+
52+struct B : public A
53+{
54+ virtual ~B(){}
55+};
56+
57+struct C : public B
58+{
59+ A* a1;
60+};
61+
62+int
63+main()
64+{
65+ C c;
66+ c.a1 = 0;
67+ return 0;
68+}
69+
70
71=== added file 'gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C'
72--- old/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C 1970-01-01 00:00:00 +0000
73+++ new/gcc/testsuite/g++.dg/debug/dwarf2/self-ref-2.C 2010-12-21 18:46:10 +0000
74@@ -0,0 +1,29 @@
75+// Origin: PR debug/45088
76+// { dg-do compile }
77+// { dg-options "-g -dA" }
78+// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_pointer_type\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_byte_size\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type" 4 } }
79+
80+template<class T>
81+struct A
82+{
83+ virtual ~A();
84+};
85+
86+struct B : public A<int>
87+{
88+ virtual ~B(){}
89+};
90+
91+struct C : public B
92+{
93+ A<int>* a1;
94+};
95+
96+int
97+main()
98+{
99+ C c;
100+ c.a1 = 0;
101+ return 0;
102+}
103+
104
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99451.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99451.patch
new file mode 100644
index 000000000..d87c312d0
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99451.patch
@@ -0,0 +1,45 @@
12010-12-22 Ulrich Weigand <uweigand@de.ibm.com>
2
3 LP: #693425
4 Backport from mainline:
5
6 gcc/
7 * config/spu/spu.md ("mov<mode>"): Use nonimmediate_operand
8 predicate for destination operand.
9 * config/spu/spu.c (spu_expand_mov): If move destination is an
10 invalid subreg, perform move in the subreg's inner mode instead.
11
12=== modified file 'gcc/config/spu/spu.c'
13--- old/gcc/config/spu/spu.c 2010-08-04 09:53:04 +0000
14+++ new/gcc/config/spu/spu.c 2010-12-22 15:20:44 +0000
15@@ -4572,7 +4572,13 @@
16 spu_expand_mov (rtx * ops, enum machine_mode mode)
17 {
18 if (GET_CODE (ops[0]) == SUBREG && !valid_subreg (ops[0]))
19- abort ();
20+ {
21+ /* Perform the move in the destination SUBREG's inner mode. */
22+ ops[0] = SUBREG_REG (ops[0]);
23+ mode = GET_MODE (ops[0]);
24+ ops[1] = gen_lowpart_common (mode, ops[1]);
25+ gcc_assert (ops[1]);
26+ }
27
28 if (GET_CODE (ops[1]) == SUBREG && !valid_subreg (ops[1]))
29 {
30
31=== modified file 'gcc/config/spu/spu.md'
32--- old/gcc/config/spu/spu.md 2009-05-23 01:28:14 +0000
33+++ new/gcc/config/spu/spu.md 2010-12-22 15:20:44 +0000
34@@ -269,8 +269,8 @@
35 ;; mov
36
37 (define_expand "mov<mode>"
38- [(set (match_operand:ALL 0 "spu_nonimm_operand" "=r,r,r,m")
39- (match_operand:ALL 1 "general_operand" "r,i,m,r"))]
40+ [(set (match_operand:ALL 0 "nonimmediate_operand" "")
41+ (match_operand:ALL 1 "general_operand" ""))]
42 ""
43 {
44 if (spu_expand_mov(operands, <MODE>mode))
45
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch
new file mode 100644
index 000000000..6cfc01fef
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99452.patch
@@ -0,0 +1,201 @@
12010-12-14 Sandra Loosemore <sandra@codesourcery.com>
2
3 Backport from mainline:
4
5 2010-12-14 Jakub Jelinek <jakub@redhat.com>
6
7 PR tree-optimization/46909
8
9 gcc/
10 * tree-ssa-ccp.c (and_var_with_comparison_1): Save partial
11 result even in the is_and case, if both partial results
12 are the same, return it.
13 (or_var_with_comparison_1): Use is_or predicate instead of
14 innercode == TRUTH_OR_EXPR test. Save partial result
15 even in the is_or case, if both partial results are the
16 same, return it. In the !is_or case when both partial
17 results are the same, return the partial result instead
18 of boolean_true_node.
19
20 gcc/testsuite/
21 * gcc.c-torture/execute/pr46909-1.c: New test.
22 * gcc.c-torture/execute/pr46909-2.c: New test.
23 * gcc.dg/pr46909.c: New test.
24
25=== added file 'gcc/testsuite/gcc.c-torture/execute/pr46909-1.c'
26--- old/gcc/testsuite/gcc.c-torture/execute/pr46909-1.c 1970-01-01 00:00:00 +0000
27+++ new/gcc/testsuite/gcc.c-torture/execute/pr46909-1.c 2011-01-05 11:27:00 +0000
28@@ -0,0 +1,22 @@
29+/* PR tree-optimization/46909 */
30+
31+extern void abort ();
32+
33+int
34+__attribute__ ((__noinline__))
35+foo (unsigned int x)
36+{
37+ if (! (x == 4 || x == 6) || (x == 2 || x == 6))
38+ return 1;
39+ return -1;
40+}
41+
42+int
43+main ()
44+{
45+ int i;
46+ for (i = -10; i < 10; i++)
47+ if (foo (i) != 1 - 2 * (i == 4))
48+ abort ();
49+ return 0;
50+}
51
52=== added file 'gcc/testsuite/gcc.c-torture/execute/pr46909-2.c'
53--- old/gcc/testsuite/gcc.c-torture/execute/pr46909-2.c 1970-01-01 00:00:00 +0000
54+++ new/gcc/testsuite/gcc.c-torture/execute/pr46909-2.c 2011-01-05 11:27:00 +0000
55@@ -0,0 +1,22 @@
56+/* PR tree-optimization/46909 */
57+
58+extern void abort (void);
59+
60+int
61+__attribute__((noinline))
62+foo (int x)
63+{
64+ if ((x != 0 && x != 13) || x == 5 || x == 20)
65+ return 1;
66+ return -1;
67+}
68+
69+int
70+main (void)
71+{
72+ int i;
73+ for (i = -10; i < 30; i++)
74+ if (foo (i) != 1 - 2 * (i == 0) - 2 * (i == 13))
75+ abort ();
76+ return 0;
77+}
78
79=== added file 'gcc/testsuite/gcc.dg/pr46909.c'
80--- old/gcc/testsuite/gcc.dg/pr46909.c 1970-01-01 00:00:00 +0000
81+++ new/gcc/testsuite/gcc.dg/pr46909.c 2011-01-05 11:27:00 +0000
82@@ -0,0 +1,17 @@
83+/* PR tree-optimization/46909 */
84+/* { dg-do compile } */
85+/* { dg-options "-O2 -fdump-tree-ifcombine" } */
86+
87+extern void abort ();
88+
89+int
90+__attribute__ ((__noinline__))
91+foo (unsigned int x)
92+{
93+ if (! (x == 4 || x == 6) || (x == 2 || x == 6))
94+ return 1;
95+ return -1;
96+}
97+
98+/* { dg-final { scan-tree-dump "optimizing two comparisons to x_\[0-9\]+\\(D\\) != 4" "ifcombine" } } */
99+/* { dg-final { cleanup-tree-dump "ifcombine" } } */
100
101=== modified file 'gcc/tree-ssa-ccp.c'
102--- old/gcc/tree-ssa-ccp.c 2010-09-16 09:15:46 +0000
103+++ new/gcc/tree-ssa-ccp.c 2011-01-05 11:27:00 +0000
104@@ -3508,14 +3508,11 @@
105 /* Handle the OR case, where we are redistributing:
106 (inner1 OR inner2) AND (op2a code2 op2b)
107 => (t OR (inner2 AND (op2a code2 op2b))) */
108- else
109- {
110- if (integer_onep (t))
111- return boolean_true_node;
112- else
113- /* Save partial result for later. */
114- partial = t;
115- }
116+ else if (integer_onep (t))
117+ return boolean_true_node;
118+
119+ /* Save partial result for later. */
120+ partial = t;
121 }
122
123 /* Compute the second partial result, (inner2 AND (op2a code op2b)) */
124@@ -3536,6 +3533,10 @@
125 return inner1;
126 else if (integer_zerop (t))
127 return boolean_false_node;
128+ /* If both are the same, we can apply the identity
129+ (x AND x) == x. */
130+ else if (partial && same_bool_result_p (t, partial))
131+ return t;
132 }
133
134 /* Handle the OR case. where we are redistributing:
135@@ -3945,7 +3946,7 @@
136 => (t OR inner2)
137 If the partial result t is a constant, we win. Otherwise
138 continue on to try reassociating with the other inner test. */
139- if (innercode == TRUTH_OR_EXPR)
140+ if (is_or)
141 {
142 if (integer_onep (t))
143 return boolean_true_node;
144@@ -3956,14 +3957,11 @@
145 /* Handle the AND case, where we are redistributing:
146 (inner1 AND inner2) OR (op2a code2 op2b)
147 => (t AND (inner2 OR (op2a code op2b))) */
148- else
149- {
150- if (integer_zerop (t))
151- return boolean_false_node;
152- else
153- /* Save partial result for later. */
154- partial = t;
155- }
156+ else if (integer_zerop (t))
157+ return boolean_false_node;
158+
159+ /* Save partial result for later. */
160+ partial = t;
161 }
162
163 /* Compute the second partial result, (inner2 OR (op2a code op2b)) */
164@@ -3977,13 +3975,18 @@
165 {
166 /* Handle the OR case, where we are reassociating:
167 (inner1 OR inner2) OR (op2a code2 op2b)
168- => (inner1 OR t) */
169- if (innercode == TRUTH_OR_EXPR)
170+ => (inner1 OR t)
171+ => (t OR partial) */
172+ if (is_or)
173 {
174 if (integer_zerop (t))
175 return inner1;
176 else if (integer_onep (t))
177 return boolean_true_node;
178+ /* If both are the same, we can apply the identity
179+ (x OR x) == x. */
180+ else if (partial && same_bool_result_p (t, partial))
181+ return t;
182 }
183
184 /* Handle the AND case, where we are redistributing:
185@@ -4000,13 +4003,13 @@
186 operand to the redistributed AND expression. The
187 interesting case is when at least one is true.
188 Or, if both are the same, we can apply the identity
189- (x AND x) == true. */
190+ (x AND x) == x. */
191 if (integer_onep (partial))
192 return t;
193 else if (integer_onep (t))
194 return partial;
195 else if (same_bool_result_p (t, partial))
196- return boolean_true_node;
197+ return t;
198 }
199 }
200 }
201
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99453.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99453.patch
new file mode 100644
index 000000000..8eb35325e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99453.patch
@@ -0,0 +1,72 @@
12010-12-17 Bernd Schmidt <bernds@codesourcery.com>
2
3 Issue #10208
4
5 gcc/
6 * config/arm/arm.c (arm_select_cc_mode): Before calling
7 arm_select_dominance_cc_mode for AND or IOR operations, ensure
8 that op is NE or EQ.
9
10 gcc/testsuite/
11 * gcc.c-torture/compile/20101217-1.c: New test.
12
13=== modified file 'gcc/config/arm/arm.c'
14--- old/gcc/config/arm/arm.c 2010-12-21 14:13:38 +0000
15+++ new/gcc/config/arm/arm.c 2011-01-05 11:32:50 +0000
16@@ -10609,12 +10609,14 @@
17
18 /* Alternate canonicalizations of the above. These are somewhat cleaner. */
19 if (GET_CODE (x) == AND
20+ && (op == EQ || op == NE)
21 && COMPARISON_P (XEXP (x, 0))
22 && COMPARISON_P (XEXP (x, 1)))
23 return arm_select_dominance_cc_mode (XEXP (x, 0), XEXP (x, 1),
24 DOM_CC_X_AND_Y);
25
26 if (GET_CODE (x) == IOR
27+ && (op == EQ || op == NE)
28 && COMPARISON_P (XEXP (x, 0))
29 && COMPARISON_P (XEXP (x, 1)))
30 return arm_select_dominance_cc_mode (XEXP (x, 0), XEXP (x, 1),
31
32=== added file 'gcc/testsuite/gcc.c-torture/compile/20101217-1.c'
33--- old/gcc/testsuite/gcc.c-torture/compile/20101217-1.c 1970-01-01 00:00:00 +0000
34+++ new/gcc/testsuite/gcc.c-torture/compile/20101217-1.c 2011-01-05 11:32:50 +0000
35@@ -0,0 +1,36 @@
36+/* Testcase provided by HUAWEI. */
37+#include <stdio.h>
38+int main()
39+{
40+ int cur_k;
41+ int cur_j=0;
42+ int cur_i=28;
43+ unsigned char temp_data[8];
44+ unsigned int Data_Size=20;
45+
46+ for (cur_k=0;cur_j<7;cur_j++,cur_i++) {
47+ if (cur_j%2==0) {
48+ temp_data[cur_k++]=0;
49+ }
50+ if (cur_k==7) {
51+ for (;cur_k>0;cur_k--) {
52+ if (cur_k>2) {
53+ if ((temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) && (temp_data[7-cur_k+1]=='a' || temp_data[7-cur_k+1]=='A' )) {
54+ break;
55+ }
56+ }
57+ if (cur_k==1) {
58+ if (temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) {
59+ break;
60+ }
61+ }
62+ }
63+ if (cur_k==7) {
64+ } else {
65+ if (cur_k>0)
66+ printf("dfjk");
67+ }
68+ }
69+ }
70+return 0;
71+}
72
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99454.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99454.patch
new file mode 100644
index 000000000..8aa06cc51
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99454.patch
@@ -0,0 +1,46 @@
12010-12-18 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from mainline:
4
5 gcc/
6 2010-12-17 Andrew Stubbs <ams@codesourcery.com>
7
8 * config/arm/arm.md (maddhisi4, *maddhidi4): Use the canonical
9 operand order for plus.
10 Drop redundant % from constraints.
11
12=== modified file 'gcc/config/arm/arm.md'
13--- old/gcc/config/arm/arm.md 2010-11-11 11:12:14 +0000
14+++ new/gcc/config/arm/arm.md 2011-01-05 11:42:19 +0000
15@@ -1791,11 +1791,11 @@
16
17 (define_insn "maddhisi4"
18 [(set (match_operand:SI 0 "s_register_operand" "=r")
19- (plus:SI (match_operand:SI 3 "s_register_operand" "r")
20- (mult:SI (sign_extend:SI
21- (match_operand:HI 1 "s_register_operand" "%r"))
22+ (plus:SI (mult:SI (sign_extend:SI
23+ (match_operand:HI 1 "s_register_operand" "r"))
24 (sign_extend:SI
25- (match_operand:HI 2 "s_register_operand" "r")))))]
26+ (match_operand:HI 2 "s_register_operand" "r")))
27+ (match_operand:SI 3 "s_register_operand" "r")))]
28 "TARGET_DSP_MULTIPLY"
29 "smlabb%?\\t%0, %1, %2, %3"
30 [(set_attr "insn" "smlaxy")
31@@ -1805,11 +1805,11 @@
32 (define_insn "*maddhidi4"
33 [(set (match_operand:DI 0 "s_register_operand" "=r")
34 (plus:DI
35- (match_operand:DI 3 "s_register_operand" "0")
36 (mult:DI (sign_extend:DI
37- (match_operand:HI 1 "s_register_operand" "%r"))
38+ (match_operand:HI 1 "s_register_operand" "r"))
39 (sign_extend:DI
40- (match_operand:HI 2 "s_register_operand" "r")))))]
41+ (match_operand:HI 2 "s_register_operand" "r")))
42+ (match_operand:DI 3 "s_register_operand" "0")))]
43 "TARGET_DSP_MULTIPLY"
44 "smlalbb%?\\t%Q0, %R0, %1, %2"
45 [(set_attr "insn" "smlalxy")
46
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch
new file mode 100644
index 000000000..5e8383a7d
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99455.patch
@@ -0,0 +1,65 @@
12010-12-21 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Issue #10201
4
5 Backport from mainline:
6
7 2010-12-16 Chung-Lin Tang <cltang@codesourcery.com>
8
9 PR target/46883
10 gcc/
11 * config/arm/arm.md
12 (zero_extendhisi2 for register input splitter): Change
13 "register_operand" to "s_register_operand".
14 (zero_extendqisi2 for register input splitter): Same.
15
16 gcc/testsuite/
17 * gcc.target/arm/pr46883.c: New testcase.
18
19=== modified file 'gcc/config/arm/arm.md'
20--- old/gcc/config/arm/arm.md 2011-01-05 11:42:19 +0000
21+++ new/gcc/config/arm/arm.md 2011-01-05 11:52:16 +0000
22@@ -4114,8 +4114,8 @@
23 })
24
25 (define_split
26- [(set (match_operand:SI 0 "register_operand" "")
27- (zero_extend:SI (match_operand:HI 1 "register_operand" "")))]
28+ [(set (match_operand:SI 0 "s_register_operand" "")
29+ (zero_extend:SI (match_operand:HI 1 "s_register_operand" "")))]
30 "!TARGET_THUMB2 && !arm_arch6"
31 [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 16)))
32 (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 16)))]
33@@ -4234,8 +4234,8 @@
34 })
35
36 (define_split
37- [(set (match_operand:SI 0 "register_operand" "")
38- (zero_extend:SI (match_operand:QI 1 "register_operand" "")))]
39+ [(set (match_operand:SI 0 "s_register_operand" "")
40+ (zero_extend:SI (match_operand:QI 1 "s_register_operand" "")))]
41 "!arm_arch6"
42 [(set (match_dup 0) (ashift:SI (match_dup 2) (const_int 24)))
43 (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 24)))]
44
45=== added file 'gcc/testsuite/gcc.target/arm/pr46883.c'
46--- old/gcc/testsuite/gcc.target/arm/pr46883.c 1970-01-01 00:00:00 +0000
47+++ new/gcc/testsuite/gcc.target/arm/pr46883.c 2011-01-05 11:52:16 +0000
48@@ -0,0 +1,16 @@
49+/* { dg-do compile } */
50+/* { dg-options "-O1 -march=armv5te" } */
51+
52+void bar (unsigned char *q, unsigned short *data16s, int len)
53+{
54+ int i;
55+
56+ for (i = 0; i < len; i++)
57+ {
58+ q[2 * i] =
59+ (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF)) & 0xFF;
60+ q[2 * i + 1] =
61+ ((unsigned short)
62+ (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF))) >> 8;
63+ }
64+}
65
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99456.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99456.patch
new file mode 100644
index 000000000..35f98d24a
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99456.patch
@@ -0,0 +1,3163 @@
12011-01-03 Bernd Schmidt <bernds@codesourcery.com>
2
3 gcc/
4 * doc/tm.texi (RETURN_ADDR_REGNUM): Document.
5 * doc/md.texi (simple_return): Document pattern.
6 (return): Add a sentence to clarify.
7 * doc/rtl.texi (simple_return): Document.
8 * doc/invoke.texi (Optimize Options): Document -fshrink-wrap.
9 * common.opt (fshrink-wrap): New.
10 * opts.c (decode_options): Set it for -O2 and above.
11 * gengenrtl.c (special_rtx): PC, CC0, RETURN and SIMPLE_RETURN
12 are special.
13 * rtl.h (ANY_RETURN_P): New macro.
14 (global_rtl_index): Add GR_RETURN and GR_SIMPLE_RETURN.
15 (ret_rtx, simple_return_rtx): New macros.
16 * genemit.c (gen_exp): RETURN and SIMPLE_RETURN have unique rtxs.
17 (gen_expand, gen_split): Use ANY_RETURN_P.
18 * rtl.c (copy_rtx): RETURN and SIMPLE_RETURN are shared.
19 * emit-rtl.c (verify_rtx_sharing): Likewise.
20 (skip_consecutive_labels): Return the argument if it is a return rtx.
21 (classify_insn): Handle both kinds of return.
22 (init_emit_regs): Create global rtl for ret_rtx and simple_return_rtx.
23 * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
24 * rtl.def (SIMPLE_RETURN): New.
25 * rtlanal.c (tablejump_p): Check JUMP_LABEL for returns.
26 * final.c (final_scan_insn): Recognize both kinds of return.
27 * reorg.c (function_return_label, function_simple_return_label): New
28 static variables.
29 (end_of_function_label): Remove.
30 (simplejump_or_return_p): New static function.
31 (find_end_label): Add a new arg, KIND. All callers changed.
32 Depending on KIND, look for a label suitable for return or
33 simple_return.
34 (make_return_insns): Make corresponding changes.
35 (get_jump_flags): Check JUMP_LABELs for returns.
36 (follow_jumps): Likewise.
37 (get_branch_condition): Check target for return patterns rather
38 than NULL.
39 (own_thread_p): Likewise for thread.
40 (steal_delay_list_from_target): Check JUMP_LABELs for returns.
41 Use simplejump_or_return_p.
42 (fill_simple_delay_slots): Likewise.
43 (optimize_skip): Likewise.
44 (fill_slots_from_thread): Likewise.
45 (relax_delay_slots): Likewise.
46 (dbr_schedule): Adjust handling of end_of_function_label for the
47 two new variables.
48 * ifcvt.c (find_if_case_1): Take care when redirecting jumps to the
49 exit block.
50 (dead_or_predicable): Change NEW_DEST arg to DEST_EDGE. All callers
51 changed. Ensure that the right label is passed to redirect_jump.
52 * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
53 returnjump_p): Handle SIMPLE_RETURNs.
54 (delete_related_insns): Check JUMP_LABEL for returns.
55 (redirect_target): New static function.
56 (redirect_exp_1): Use it. Handle any kind of return rtx as a label
57 rather than interpreting NULL as a return.
58 (redirect_jump_1): Assert that nlabel is not NULL.
59 (redirect_jump): Likewise.
60 (redirect_jump_2): Handle any kind of return rtx as a label rather
61 than interpreting NULL as a return.
62 * dwarf2out.c (compute_barrier_args_size_1): Check JUMP_LABEL for
63 returns.
64 * function.c (emit_return_into_block): Remove useless declaration.
65 (record_hard_reg_sets, frame_required_for_rtx, gen_return_pattern,
66 requires_stack_frame_p): New static functions.
67 (emit_return_into_block): New arg SIMPLE_P. All callers changed.
68 Generate either kind of return pattern and update the JUMP_LABEL.
69 (thread_prologue_and_epilogue_insns): Implement a form of
70 shrink-wrapping. Ensure JUMP_LABELs for return insns are set.
71 * print-rtl.c (print_rtx): Handle returns in JUMP_LABELs.
72 * cfglayout.c (fixup_reorder_chain): Ensure JUMP_LABELs for returns
73 remain correct.
74 * resource.c (find_dead_or_set_registers): Check JUMP_LABELs for
75 returns.
76 (mark_target_live_regs): Don't pass a return rtx to next_active_insn.
77 * basic-block.h (force_nonfallthru_and_redirect): Declare.
78 * sched-vis.c (print_pattern): Add case for SIMPLE_RETURN.
79 * cfgrtl.c (force_nonfallthru_and_redirect): No longer static. New arg
80 JUMP_LABEL. All callers changed. Use the label when generating
81 return insns.
82
83 * config/i386/i386.md (returns, return_str, return_cond): New
84 code_iterator and corresponding code_attrs.
85 (<return_str>return): Renamed from return and adapted.
86 (<return_str>return_internal): Likewise for return_internal.
87 (<return_str>return_internal_long): Likewise for return_internal_long.
88 (<return_str>return_pop_internal): Likewise for return_pop_internal.
89 (<return_str>return_indirect_internal): Likewise for
90 return_indirect_internal.
91 * config/i386/i386.c (ix86_expand_epilogue): Expand a simple_return as
92 the last insn.
93 (ix86_pad_returns): Handle both kinds of return rtx.
94 * config/arm/arm.c (use_simple_return_p): new function.
95 (is_jump_table): Handle returns in JUMP_LABELs.
96 (output_return_instruction): New arg SIMPLE. All callers changed.
97 Use it to determine which kind of return to generate.
98 (arm_final_prescan_insn): Handle both kinds of return.
99 * config/arm/arm.md (returns, return_str, return_simple_p,
100 return_cond): New code_iterator and corresponding code_attrs.
101 (<return_str>return): Renamed from return and adapted.
102 (arm_<return_str>return): Renamed from arm_return and adapted.
103 (cond_<return_str>return): Renamed from cond_return and adapted.
104 (cond_<return_str>return_inverted): Renamed from cond_return_inverted
105 and adapted.
106 (epilogue): Use ret_rtx instead of gen_rtx_RETURN.
107 * config/arm/thumb2.md (thumb2_<return_str>return): Renamed from
108 thumb2_return and adapted.
109 * config/arm/arm.h (RETURN_ADDR_REGNUM): Define.
110 * config/arm/arm-protos.h (use_simple_return_p): Declare.
111 (output_return_instruction): Adjust declaration.
112 * config/mips/mips.c (mips_expand_epilogue): Generate a simple_return
113 as final insn.
114 * config/mips/mips.md (simple_return): New expander.
115 (*simple_return, simple_return_internal): New patterns.
116 * config/sh/sh.c (barrier_align): Handle return in a JUMP_LABEL.
117 (split_branches): Don't pass a null label to redirect_jump.
118
119 From mainline:
120 * vec.h (FOR_EACH_VEC_ELT, FOR_EACH_VEC_ELT_REVERSE): New macros.
121 * haifa-sched.c (find_fallthru_edge_from): Rename from
122 find_fallthru_edge. All callers changed.
123 * sched-int.h (find_fallthru_edge_from): Rename declaration as well.
124 * basic-block.h (find_fallthru_edge): New inline function.
125
126=== modified file 'gcc/basic-block.h'
127--- old/gcc/basic-block.h 2010-09-01 13:29:58 +0000
128+++ new/gcc/basic-block.h 2011-01-05 12:12:18 +0000
129@@ -884,6 +884,7 @@
130
131 /* In cfgrtl.c */
132 extern basic_block force_nonfallthru (edge);
133+extern basic_block force_nonfallthru_and_redirect (edge, basic_block, rtx);
134 extern rtx block_label (basic_block);
135 extern bool purge_all_dead_edges (void);
136 extern bool purge_dead_edges (basic_block);
137@@ -1004,6 +1005,20 @@
138 return false;
139 }
140
141+/* Return the fallthru edge in EDGES if it exists, NULL otherwise. */
142+static inline edge
143+find_fallthru_edge (VEC(edge,gc) *edges)
144+{
145+ edge e;
146+ edge_iterator ei;
147+
148+ FOR_EACH_EDGE (e, ei, edges)
149+ if (e->flags & EDGE_FALLTHRU)
150+ break;
151+
152+ return e;
153+}
154+
155 /* In cfgloopmanip.c. */
156 extern edge mfb_kj_edge;
157 extern bool mfb_keep_just (edge);
158
159=== modified file 'gcc/cfganal.c'
160--- old/gcc/cfganal.c 2009-11-25 10:55:54 +0000
161+++ new/gcc/cfganal.c 2011-01-05 12:12:18 +0000
162@@ -271,6 +271,37 @@
163 EDGE_SUCC (bb, 0)->flags |= EDGE_CAN_FALLTHRU;
164 EDGE_SUCC (bb, 1)->flags |= EDGE_CAN_FALLTHRU;
165 }
166+ /* dwarf2out expects that a NOTE_INSN_EPILOGUE_BEGIN is always paired
167+ with a return or a sibcall. Ensure that this remains the case if
168+ they are in different basic blocks. */
169+ FOR_EACH_BB (bb)
170+ {
171+ edge e;
172+ edge_iterator ei;
173+ rtx insn, end;
174+
175+ end = BB_END (bb);
176+ FOR_BB_INSNS (bb, insn)
177+ if (GET_CODE (insn) == NOTE
178+ && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG
179+ && !(CALL_P (end) && SIBLING_CALL_P (end))
180+ && !returnjump_p (end))
181+ {
182+ basic_block other_bb = NULL;
183+ FOR_EACH_EDGE (e, ei, bb->succs)
184+ {
185+ if (e->flags & EDGE_FALLTHRU)
186+ other_bb = e->dest;
187+ else
188+ e->flags &= ~EDGE_CAN_FALLTHRU;
189+ }
190+ FOR_EACH_EDGE (e, ei, other_bb->preds)
191+ {
192+ if (!(e->flags & EDGE_FALLTHRU))
193+ e->flags &= ~EDGE_CAN_FALLTHRU;
194+ }
195+ }
196+ }
197 }
198
199 /* Find unreachable blocks. An unreachable block will have 0 in
200
201=== modified file 'gcc/cfglayout.c'
202--- old/gcc/cfglayout.c 2010-05-17 16:30:54 +0000
203+++ new/gcc/cfglayout.c 2011-01-05 12:12:18 +0000
204@@ -766,6 +766,7 @@
205 {
206 edge e_fall, e_taken, e;
207 rtx bb_end_insn;
208+ rtx ret_label = NULL_RTX;
209 basic_block nb;
210 edge_iterator ei;
211
212@@ -785,6 +786,7 @@
213 bb_end_insn = BB_END (bb);
214 if (JUMP_P (bb_end_insn))
215 {
216+ ret_label = JUMP_LABEL (bb_end_insn);
217 if (any_condjump_p (bb_end_insn))
218 {
219 /* This might happen if the conditional jump has side
220@@ -899,7 +901,7 @@
221 }
222
223 /* We got here if we need to add a new jump insn. */
224- nb = force_nonfallthru (e_fall);
225+ nb = force_nonfallthru_and_redirect (e_fall, e_fall->dest, ret_label);
226 if (nb)
227 {
228 nb->il.rtl->visited = 1;
229@@ -1118,24 +1120,30 @@
230 bool
231 cfg_layout_can_duplicate_bb_p (const_basic_block bb)
232 {
233+ rtx insn;
234+
235 /* Do not attempt to duplicate tablejumps, as we need to unshare
236 the dispatch table. This is difficult to do, as the instructions
237 computing jump destination may be hoisted outside the basic block. */
238 if (tablejump_p (BB_END (bb), NULL, NULL))
239 return false;
240
241- /* Do not duplicate blocks containing insns that can't be copied. */
242- if (targetm.cannot_copy_insn_p)
243+ insn = BB_HEAD (bb);
244+ while (1)
245 {
246- rtx insn = BB_HEAD (bb);
247- while (1)
248- {
249- if (INSN_P (insn) && targetm.cannot_copy_insn_p (insn))
250- return false;
251- if (insn == BB_END (bb))
252- break;
253- insn = NEXT_INSN (insn);
254- }
255+ /* Do not duplicate blocks containing insns that can't be copied. */
256+ if (INSN_P (insn) && targetm.cannot_copy_insn_p
257+ && targetm.cannot_copy_insn_p (insn))
258+ return false;
259+ /* dwarf2out expects that these notes are always paired with a
260+ returnjump or sibling call. */
261+ if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG
262+ && !returnjump_p (BB_END (bb))
263+ && (!CALL_P (BB_END (bb)) || !SIBLING_CALL_P (BB_END (bb))))
264+ return false;
265+ if (insn == BB_END (bb))
266+ break;
267+ insn = NEXT_INSN (insn);
268 }
269
270 return true;
271@@ -1167,6 +1175,9 @@
272 || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC)
273 break;
274 copy = emit_copy_of_insn_after (insn, get_last_insn ());
275+ if (JUMP_P (insn) && JUMP_LABEL (insn) != NULL_RTX
276+ && ANY_RETURN_P (JUMP_LABEL (insn)))
277+ JUMP_LABEL (copy) = JUMP_LABEL (insn);
278 maybe_copy_epilogue_insn (insn, copy);
279 break;
280
281
282=== modified file 'gcc/cfgrtl.c'
283--- old/gcc/cfgrtl.c 2010-09-20 21:30:35 +0000
284+++ new/gcc/cfgrtl.c 2011-01-05 12:12:18 +0000
285@@ -1107,10 +1107,13 @@
286 }
287
288 /* Like force_nonfallthru below, but additionally performs redirection
289- Used by redirect_edge_and_branch_force. */
290+ Used by redirect_edge_and_branch_force. JUMP_LABEL is used only
291+ when redirecting to the EXIT_BLOCK, it is either a return or a
292+ simple_return rtx indicating which kind of returnjump to create.
293+ It should be NULL otherwise. */
294
295-static basic_block
296-force_nonfallthru_and_redirect (edge e, basic_block target)
297+basic_block
298+force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
299 {
300 basic_block jump_block, new_bb = NULL, src = e->src;
301 rtx note;
302@@ -1242,11 +1245,25 @@
303 e->flags &= ~EDGE_FALLTHRU;
304 if (target == EXIT_BLOCK_PTR)
305 {
306+ if (jump_label == ret_rtx)
307+ {
308 #ifdef HAVE_return
309- emit_jump_insn_after_setloc (gen_return (), BB_END (jump_block), loc);
310-#else
311- gcc_unreachable ();
312-#endif
313+ emit_jump_insn_after_setloc (gen_return (), BB_END (jump_block),
314+ loc);
315+#else
316+ gcc_unreachable ();
317+#endif
318+ }
319+ else
320+ {
321+ gcc_assert (jump_label == simple_return_rtx);
322+#ifdef HAVE_simple_return
323+ emit_jump_insn_after_setloc (gen_simple_return (),
324+ BB_END (jump_block), loc);
325+#else
326+ gcc_unreachable ();
327+#endif
328+ }
329 }
330 else
331 {
332@@ -1273,7 +1290,7 @@
333 basic_block
334 force_nonfallthru (edge e)
335 {
336- return force_nonfallthru_and_redirect (e, e->dest);
337+ return force_nonfallthru_and_redirect (e, e->dest, NULL_RTX);
338 }
339
340 /* Redirect edge even at the expense of creating new jump insn or
341@@ -1290,7 +1307,7 @@
342 /* In case the edge redirection failed, try to force it to be non-fallthru
343 and redirect newly created simplejump. */
344 df_set_bb_dirty (e->src);
345- return force_nonfallthru_and_redirect (e, target);
346+ return force_nonfallthru_and_redirect (e, target, NULL_RTX);
347 }
348
349 /* The given edge should potentially be a fallthru edge. If that is in
350
351=== modified file 'gcc/common.opt'
352--- old/gcc/common.opt 2010-12-10 15:33:37 +0000
353+++ new/gcc/common.opt 2011-01-05 12:12:18 +0000
354@@ -1147,6 +1147,11 @@
355 Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(1)
356 Show column numbers in diagnostics, when available. Default on
357
358+fshrink-wrap
359+Common Report Var(flag_shrink_wrap) Optimization
360+Emit function prologues only before parts of the function that need it,
361+rather than at the top of the function.
362+
363 fsignaling-nans
364 Common Report Var(flag_signaling_nans) Optimization
365 Disable optimizations observable by IEEE signaling NaNs
366
367=== modified file 'gcc/config/arm/arm-protos.h'
368--- old/gcc/config/arm/arm-protos.h 2010-11-04 10:45:05 +0000
369+++ new/gcc/config/arm/arm-protos.h 2011-01-05 12:12:18 +0000
370@@ -26,6 +26,7 @@
371 extern void arm_override_options (void);
372 extern void arm_optimization_options (int, int);
373 extern int use_return_insn (int, rtx);
374+extern bool use_simple_return_p (void);
375 extern enum reg_class arm_regno_class (int);
376 extern void arm_load_pic_register (unsigned long);
377 extern int arm_volatile_func (void);
378@@ -137,7 +138,7 @@
379 extern const char *output_add_immediate (rtx *);
380 extern const char *arithmetic_instr (rtx, int);
381 extern void output_ascii_pseudo_op (FILE *, const unsigned char *, int);
382-extern const char *output_return_instruction (rtx, int, int);
383+extern const char *output_return_instruction (rtx, bool, bool, bool);
384 extern void arm_poke_function_name (FILE *, const char *);
385 extern void arm_print_operand (FILE *, rtx, int);
386 extern void arm_print_operand_address (FILE *, rtx);
387
388=== modified file 'gcc/config/arm/arm.c'
389--- old/gcc/config/arm/arm.c 2011-01-05 11:32:50 +0000
390+++ new/gcc/config/arm/arm.c 2011-01-05 12:12:18 +0000
391@@ -2163,6 +2163,18 @@
392 return addr;
393 }
394
395+/* Return true if we should try to use a simple_return insn, i.e. perform
396+ shrink-wrapping if possible. This is the case if we need to emit a
397+ prologue, which we can test by looking at the offsets. */
398+bool
399+use_simple_return_p (void)
400+{
401+ arm_stack_offsets *offsets;
402+
403+ offsets = arm_get_frame_offsets ();
404+ return offsets->outgoing_args != 0;
405+}
406+
407 /* Return 1 if it is possible to return using a single instruction.
408 If SIBLING is non-null, this is a test for a return before a sibling
409 call. SIBLING is the call insn, so we can examine its register usage. */
410@@ -11284,6 +11296,7 @@
411
412 if (GET_CODE (insn) == JUMP_INSN
413 && JUMP_LABEL (insn) != NULL
414+ && !ANY_RETURN_P (JUMP_LABEL (insn))
415 && ((table = next_real_insn (JUMP_LABEL (insn)))
416 == next_real_insn (insn))
417 && table != NULL
418@@ -14168,7 +14181,7 @@
419 /* Generate a function exit sequence. If REALLY_RETURN is false, then do
420 everything bar the final return instruction. */
421 const char *
422-output_return_instruction (rtx operand, int really_return, int reverse)
423+output_return_instruction (rtx operand, bool really_return, bool reverse, bool simple)
424 {
425 char conditional[10];
426 char instr[100];
427@@ -14206,10 +14219,15 @@
428
429 sprintf (conditional, "%%?%%%c0", reverse ? 'D' : 'd');
430
431- cfun->machine->return_used_this_function = 1;
432+ if (simple)
433+ live_regs_mask = 0;
434+ else
435+ {
436+ cfun->machine->return_used_this_function = 1;
437
438- offsets = arm_get_frame_offsets ();
439- live_regs_mask = offsets->saved_regs_mask;
440+ offsets = arm_get_frame_offsets ();
441+ live_regs_mask = offsets->saved_regs_mask;
442+ }
443
444 if (live_regs_mask)
445 {
446@@ -17108,6 +17126,7 @@
447
448 /* If we start with a return insn, we only succeed if we find another one. */
449 int seeking_return = 0;
450+ enum rtx_code return_code = UNKNOWN;
451
452 /* START_INSN will hold the insn from where we start looking. This is the
453 first insn after the following code_label if REVERSE is true. */
454@@ -17146,7 +17165,7 @@
455 else
456 return;
457 }
458- else if (GET_CODE (body) == RETURN)
459+ else if (ANY_RETURN_P (body))
460 {
461 start_insn = next_nonnote_insn (start_insn);
462 if (GET_CODE (start_insn) == BARRIER)
463@@ -17157,6 +17176,7 @@
464 {
465 reverse = TRUE;
466 seeking_return = 1;
467+ return_code = GET_CODE (body);
468 }
469 else
470 return;
471@@ -17197,11 +17217,15 @@
472 label = XEXP (XEXP (SET_SRC (body), 2), 0);
473 then_not_else = FALSE;
474 }
475- else if (GET_CODE (XEXP (SET_SRC (body), 1)) == RETURN)
476- seeking_return = 1;
477- else if (GET_CODE (XEXP (SET_SRC (body), 2)) == RETURN)
478+ else if (ANY_RETURN_P (XEXP (SET_SRC (body), 1)))
479+ {
480+ seeking_return = 1;
481+ return_code = GET_CODE (XEXP (SET_SRC (body), 1));
482+ }
483+ else if (ANY_RETURN_P (XEXP (SET_SRC (body), 2)))
484 {
485 seeking_return = 1;
486+ return_code = GET_CODE (XEXP (SET_SRC (body), 2));
487 then_not_else = FALSE;
488 }
489 else
490@@ -17302,8 +17326,7 @@
491 && !use_return_insn (TRUE, NULL)
492 && !optimize_size)
493 fail = TRUE;
494- else if (GET_CODE (scanbody) == RETURN
495- && seeking_return)
496+ else if (GET_CODE (scanbody) == return_code)
497 {
498 arm_ccfsm_state = 2;
499 succeed = TRUE;
500
501=== modified file 'gcc/config/arm/arm.h'
502--- old/gcc/config/arm/arm.h 2010-11-11 11:12:14 +0000
503+++ new/gcc/config/arm/arm.h 2011-01-05 12:12:18 +0000
504@@ -2622,6 +2622,8 @@
505 #define RETURN_ADDR_RTX(COUNT, FRAME) \
506 arm_return_addr (COUNT, FRAME)
507
508+#define RETURN_ADDR_REGNUM LR_REGNUM
509+
510 /* Mask of the bits in the PC that contain the real return address
511 when running in 26-bit mode. */
512 #define RETURN_ADDR_MASK26 (0x03fffffc)
513
514=== modified file 'gcc/config/arm/arm.md'
515--- old/gcc/config/arm/arm.md 2011-01-05 11:52:16 +0000
516+++ new/gcc/config/arm/arm.md 2011-01-05 12:12:18 +0000
517@@ -8882,66 +8882,72 @@
518 [(set_attr "type" "call")]
519 )
520
521-(define_expand "return"
522- [(return)]
523- "TARGET_32BIT && USE_RETURN_INSN (FALSE)"
524+;; Both kinds of return insn.
525+(define_code_iterator returns [return simple_return])
526+(define_code_attr return_str [(return "") (simple_return "simple_")])
527+(define_code_attr return_simple_p [(return "false") (simple_return "true")])
528+(define_code_attr return_cond [(return " && USE_RETURN_INSN (FALSE)")
529+ (simple_return " && use_simple_return_p ()")])
530+
531+(define_expand "<return_str>return"
532+ [(returns)]
533+ "TARGET_32BIT<return_cond>"
534 "")
535
536-;; Often the return insn will be the same as loading from memory, so set attr
537-(define_insn "*arm_return"
538- [(return)]
539- "TARGET_ARM && USE_RETURN_INSN (FALSE)"
540- "*
541- {
542- if (arm_ccfsm_state == 2)
543- {
544- arm_ccfsm_state += 2;
545- return \"\";
546- }
547- return output_return_instruction (const_true_rtx, TRUE, FALSE);
548- }"
549+(define_insn "*arm_<return_str>return"
550+ [(returns)]
551+ "TARGET_ARM<return_cond>"
552+{
553+ if (arm_ccfsm_state == 2)
554+ {
555+ arm_ccfsm_state += 2;
556+ return "";
557+ }
558+ return output_return_instruction (const_true_rtx, true, false,
559+ <return_simple_p>);
560+}
561 [(set_attr "type" "load1")
562 (set_attr "length" "12")
563 (set_attr "predicable" "yes")]
564 )
565
566-(define_insn "*cond_return"
567+(define_insn "*cond_<return_str>return"
568 [(set (pc)
569 (if_then_else (match_operator 0 "arm_comparison_operator"
570 [(match_operand 1 "cc_register" "") (const_int 0)])
571- (return)
572+ (returns)
573 (pc)))]
574- "TARGET_ARM && USE_RETURN_INSN (TRUE)"
575- "*
576- {
577- if (arm_ccfsm_state == 2)
578- {
579- arm_ccfsm_state += 2;
580- return \"\";
581- }
582- return output_return_instruction (operands[0], TRUE, FALSE);
583- }"
584+ "TARGET_ARM<return_cond>"
585+{
586+ if (arm_ccfsm_state == 2)
587+ {
588+ arm_ccfsm_state += 2;
589+ return "";
590+ }
591+ return output_return_instruction (operands[0], true, false,
592+ <return_simple_p>);
593+}
594 [(set_attr "conds" "use")
595 (set_attr "length" "12")
596 (set_attr "type" "load1")]
597 )
598
599-(define_insn "*cond_return_inverted"
600+(define_insn "*cond_<return_str>return_inverted"
601 [(set (pc)
602 (if_then_else (match_operator 0 "arm_comparison_operator"
603 [(match_operand 1 "cc_register" "") (const_int 0)])
604 (pc)
605- (return)))]
606- "TARGET_ARM && USE_RETURN_INSN (TRUE)"
607- "*
608- {
609- if (arm_ccfsm_state == 2)
610- {
611- arm_ccfsm_state += 2;
612- return \"\";
613- }
614- return output_return_instruction (operands[0], TRUE, TRUE);
615- }"
616+ (returns)))]
617+ "TARGET_ARM<return_cond>"
618+{
619+ if (arm_ccfsm_state == 2)
620+ {
621+ arm_ccfsm_state += 2;
622+ return "";
623+ }
624+ return output_return_instruction (operands[0], true, true,
625+ <return_simple_p>);
626+}
627 [(set_attr "conds" "use")
628 (set_attr "length" "12")
629 (set_attr "type" "load1")]
630@@ -10809,8 +10815,7 @@
631 DONE;
632 }
633 emit_jump_insn (gen_rtx_UNSPEC_VOLATILE (VOIDmode,
634- gen_rtvec (1,
635- gen_rtx_RETURN (VOIDmode)),
636+ gen_rtvec (1, ret_rtx),
637 VUNSPEC_EPILOGUE));
638 DONE;
639 "
640@@ -10827,7 +10832,7 @@
641 "TARGET_32BIT"
642 "*
643 if (use_return_insn (FALSE, next_nonnote_insn (insn)))
644- return output_return_instruction (const_true_rtx, FALSE, FALSE);
645+ return output_return_instruction (const_true_rtx, false, false, false);
646 return arm_output_epilogue (next_nonnote_insn (insn));
647 "
648 ;; Length is absolute worst case
649
650=== modified file 'gcc/config/arm/thumb2.md'
651--- old/gcc/config/arm/thumb2.md 2010-09-22 05:54:42 +0000
652+++ new/gcc/config/arm/thumb2.md 2011-01-05 12:12:18 +0000
653@@ -1020,16 +1020,15 @@
654
655 ;; Note: this is not predicable, to avoid issues with linker-generated
656 ;; interworking stubs.
657-(define_insn "*thumb2_return"
658- [(return)]
659- "TARGET_THUMB2 && USE_RETURN_INSN (FALSE)"
660- "*
661- {
662- return output_return_instruction (const_true_rtx, TRUE, FALSE);
663- }"
664+(define_insn "*thumb2_<return_str>return"
665+ [(returns)]
666+ "TARGET_THUMB2<return_cond>"
667+{
668+ return output_return_instruction (const_true_rtx, true, false,
669+ <return_simple_p>);
670+}
671 [(set_attr "type" "load1")
672- (set_attr "length" "12")]
673-)
674+ (set_attr "length" "12")])
675
676 (define_insn_and_split "thumb2_eh_return"
677 [(unspec_volatile [(match_operand:SI 0 "s_register_operand" "r")]
678
679=== modified file 'gcc/config/i386/i386.c'
680--- old/gcc/config/i386/i386.c 2010-11-16 18:05:53 +0000
681+++ new/gcc/config/i386/i386.c 2011-01-05 12:12:18 +0000
682@@ -9308,13 +9308,13 @@
683
684 pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
685 popc, -1, true);
686- emit_jump_insn (gen_return_indirect_internal (ecx));
687+ emit_jump_insn (gen_simple_return_indirect_internal (ecx));
688 }
689 else
690- emit_jump_insn (gen_return_pop_internal (popc));
691+ emit_jump_insn (gen_simple_return_pop_internal (popc));
692 }
693 else
694- emit_jump_insn (gen_return_internal ());
695+ emit_jump_insn (gen_simple_return_internal ());
696
697 /* Restore the state back to the state from the prologue,
698 so that it's correct for the next epilogue. */
699@@ -26596,7 +26596,7 @@
700 rtx prev;
701 bool replace = false;
702
703- if (!JUMP_P (ret) || GET_CODE (PATTERN (ret)) != RETURN
704+ if (!JUMP_P (ret) || !ANY_RETURN_P (PATTERN (ret))
705 || optimize_bb_for_size_p (bb))
706 continue;
707 for (prev = PREV_INSN (ret); prev; prev = PREV_INSN (prev))
708@@ -26626,7 +26626,10 @@
709 }
710 if (replace)
711 {
712- emit_jump_insn_before (gen_return_internal_long (), ret);
713+ if (PATTERN (ret) == ret_rtx)
714+ emit_jump_insn_before (gen_return_internal_long (), ret);
715+ else
716+ emit_jump_insn_before (gen_simple_return_internal_long (), ret);
717 delete_insn (ret);
718 }
719 }
720
721=== modified file 'gcc/config/i386/i386.md'
722--- old/gcc/config/i386/i386.md 2010-11-27 15:24:12 +0000
723+++ new/gcc/config/i386/i386.md 2011-01-05 12:12:18 +0000
724@@ -13797,24 +13797,29 @@
725 ""
726 [(set_attr "length" "0")])
727
728+(define_code_iterator returns [return simple_return])
729+(define_code_attr return_str [(return "") (simple_return "simple_")])
730+(define_code_attr return_cond [(return "ix86_can_use_return_insn_p ()")
731+ (simple_return "")])
732+
733 ;; Insn emitted into the body of a function to return from a function.
734 ;; This is only done if the function's epilogue is known to be simple.
735 ;; See comments for ix86_can_use_return_insn_p in i386.c.
736
737-(define_expand "return"
738- [(return)]
739- "ix86_can_use_return_insn_p ()"
740+(define_expand "<return_str>return"
741+ [(returns)]
742+ "<return_cond>"
743 {
744 if (crtl->args.pops_args)
745 {
746 rtx popc = GEN_INT (crtl->args.pops_args);
747- emit_jump_insn (gen_return_pop_internal (popc));
748+ emit_jump_insn (gen_<return_str>return_pop_internal (popc));
749 DONE;
750 }
751 })
752
753-(define_insn "return_internal"
754- [(return)]
755+(define_insn "<return_str>return_internal"
756+ [(returns)]
757 "reload_completed"
758 "ret"
759 [(set_attr "length" "1")
760@@ -13825,8 +13830,8 @@
761 ;; Used by x86_machine_dependent_reorg to avoid penalty on single byte RET
762 ;; instruction Athlon and K8 have.
763
764-(define_insn "return_internal_long"
765- [(return)
766+(define_insn "<return_str>return_internal_long"
767+ [(returns)
768 (unspec [(const_int 0)] UNSPEC_REP)]
769 "reload_completed"
770 "rep\;ret"
771@@ -13836,8 +13841,8 @@
772 (set_attr "prefix_rep" "1")
773 (set_attr "modrm" "0")])
774
775-(define_insn "return_pop_internal"
776- [(return)
777+(define_insn "<return_str>return_pop_internal"
778+ [(returns)
779 (use (match_operand:SI 0 "const_int_operand" ""))]
780 "reload_completed"
781 "ret\t%0"
782@@ -13846,8 +13851,8 @@
783 (set_attr "length_immediate" "2")
784 (set_attr "modrm" "0")])
785
786-(define_insn "return_indirect_internal"
787- [(return)
788+(define_insn "<return_str>return_indirect_internal"
789+ [(returns)
790 (use (match_operand:SI 0 "register_operand" "r"))]
791 "reload_completed"
792 "jmp\t%A0"
793
794=== modified file 'gcc/config/mips/mips.c'
795--- old/gcc/config/mips/mips.c 2010-11-21 10:38:43 +0000
796+++ new/gcc/config/mips/mips.c 2011-01-05 12:12:18 +0000
797@@ -10497,7 +10497,8 @@
798 regno = GP_REG_FIRST + 7;
799 else
800 regno = RETURN_ADDR_REGNUM;
801- emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
802+ emit_jump_insn (gen_simple_return_internal (gen_rtx_REG (Pmode,
803+ regno)));
804 }
805 }
806
807
808=== modified file 'gcc/config/mips/mips.md'
809--- old/gcc/config/mips/mips.md 2010-04-02 18:54:46 +0000
810+++ new/gcc/config/mips/mips.md 2011-01-05 12:12:18 +0000
811@@ -5815,6 +5815,18 @@
812 [(set_attr "type" "jump")
813 (set_attr "mode" "none")])
814
815+(define_expand "simple_return"
816+ [(simple_return)]
817+ "!mips_can_use_return_insn ()"
818+ { mips_expand_before_return (); })
819+
820+(define_insn "*simple_return"
821+ [(simple_return)]
822+ "!mips_can_use_return_insn ()"
823+ "%*j\t$31%/"
824+ [(set_attr "type" "jump")
825+ (set_attr "mode" "none")])
826+
827 ;; Normal return.
828
829 (define_insn "return_internal"
830@@ -5825,6 +5837,14 @@
831 [(set_attr "type" "jump")
832 (set_attr "mode" "none")])
833
834+(define_insn "simple_return_internal"
835+ [(simple_return)
836+ (use (match_operand 0 "pmode_register_operand" ""))]
837+ ""
838+ "%*j\t%0%/"
839+ [(set_attr "type" "jump")
840+ (set_attr "mode" "none")])
841+
842 ;; Exception return.
843 (define_insn "mips_eret"
844 [(return)
845
846=== modified file 'gcc/config/sh/sh.c'
847--- old/gcc/config/sh/sh.c 2010-12-10 15:34:19 +0000
848+++ new/gcc/config/sh/sh.c 2011-01-05 12:12:18 +0000
849@@ -5252,7 +5252,8 @@
850 }
851 if (prev
852 && JUMP_P (prev)
853- && JUMP_LABEL (prev))
854+ && JUMP_LABEL (prev)
855+ && !ANY_RETURN_P (JUMP_LABEL (prev)))
856 {
857 rtx x;
858 if (jump_to_next
859@@ -5951,7 +5952,7 @@
860 JUMP_LABEL (insn) = far_label;
861 LABEL_NUSES (far_label)++;
862 }
863- redirect_jump (insn, NULL_RTX, 1);
864+ redirect_jump (insn, ret_rtx, 1);
865 far_label = 0;
866 }
867 }
868
869=== modified file 'gcc/df-scan.c'
870--- old/gcc/df-scan.c 2010-11-16 22:17:17 +0000
871+++ new/gcc/df-scan.c 2011-01-05 12:12:18 +0000
872@@ -3296,6 +3296,7 @@
873 }
874
875 case RETURN:
876+ case SIMPLE_RETURN:
877 break;
878
879 case ASM_OPERANDS:
880
881=== modified file 'gcc/doc/invoke.texi'
882--- old/gcc/doc/invoke.texi 2010-11-04 14:29:09 +0000
883+++ new/gcc/doc/invoke.texi 2011-01-05 12:12:18 +0000
884@@ -5750,6 +5750,7 @@
885 -fipa-pure-const @gol
886 -fipa-reference @gol
887 -fmerge-constants
888+-fshrink-wrap @gol
889 -fsplit-wide-types @gol
890 -ftree-builtin-call-dce @gol
891 -ftree-ccp @gol
892@@ -6504,6 +6505,12 @@
893 When pipelining loops during selective scheduling, also pipeline outer loops.
894 This option has no effect until @option{-fsel-sched-pipelining} is turned on.
895
896+@item -fshrink-wrap
897+@opindex fshrink-wrap
898+Emit function prologues only before parts of the function that need it,
899+rather than at the top of the function. This flag is enabled by default at
900+@option{-O} and higher.
901+
902 @item -fcaller-saves
903 @opindex fcaller-saves
904 Enable values to be allocated in registers that will be clobbered by
905
906=== modified file 'gcc/doc/md.texi'
907--- old/gcc/doc/md.texi 2009-12-15 18:36:44 +0000
908+++ new/gcc/doc/md.texi 2011-01-05 12:12:18 +0000
909@@ -4801,7 +4801,19 @@
910 multiple instructions are usually needed to return from a function, but
911 some class of functions only requires one instruction to implement a
912 return. Normally, the applicable functions are those which do not need
913-to save any registers or allocate stack space.
914+to save any registers or allocate stack space, although some targets
915+have instructions that can perform both the epilogue and function return
916+in one instruction.
917+
918+@cindex @code{simple_return} instruction pattern
919+@item @samp{simple_return}
920+Subroutine return instruction. This instruction pattern name should be
921+defined only if a single instruction can do all the work of returning
922+from a function on a path where no epilogue is required. This pattern
923+is very similar to the @code{return} instruction pattern, but it is emitted
924+only by the shrink-wrapping optimization on paths where the function
925+prologue has not been executed, and a function return should occur without
926+any of the effects of the epilogue.
927
928 @findex reload_completed
929 @findex leaf_function_p
930
931=== modified file 'gcc/doc/rtl.texi'
932--- old/gcc/doc/rtl.texi 2010-07-06 19:23:53 +0000
933+++ new/gcc/doc/rtl.texi 2011-01-05 12:12:18 +0000
934@@ -2888,6 +2888,13 @@
935 Note that an insn pattern of @code{(return)} is logically equivalent to
936 @code{(set (pc) (return))}, but the latter form is never used.
937
938+@findex simple_return
939+@item (simple_return)
940+Like @code{(return)}, but truly represents only a function return, while
941+@code{(return)} may represent an insn that also performs other functions
942+of the function epilogue. Like @code{(return)}, this may also occur in
943+conditional jumps.
944+
945 @findex call
946 @item (call @var{function} @var{nargs})
947 Represents a function call. @var{function} is a @code{mem} expression
948@@ -3017,7 +3024,7 @@
949 brackets stand for a vector; the operand of @code{parallel} is a
950 vector of expressions. @var{x0}, @var{x1} and so on are individual
951 side effect expressions---expressions of code @code{set}, @code{call},
952-@code{return}, @code{clobber} or @code{use}.
953+@code{return}, @code{simple_return}, @code{clobber} or @code{use}.
954
955 ``In parallel'' means that first all the values used in the individual
956 side-effects are computed, and second all the actual side-effects are
957@@ -3656,14 +3663,16 @@
958 @table @code
959 @findex PATTERN
960 @item PATTERN (@var{i})
961-An expression for the side effect performed by this insn. This must be
962-one of the following codes: @code{set}, @code{call}, @code{use},
963-@code{clobber}, @code{return}, @code{asm_input}, @code{asm_output},
964-@code{addr_vec}, @code{addr_diff_vec}, @code{trap_if}, @code{unspec},
965-@code{unspec_volatile}, @code{parallel}, @code{cond_exec}, or @code{sequence}. If it is a @code{parallel},
966-each element of the @code{parallel} must be one these codes, except that
967-@code{parallel} expressions cannot be nested and @code{addr_vec} and
968-@code{addr_diff_vec} are not permitted inside a @code{parallel} expression.
969+An expression for the side effect performed by this insn. This must
970+be one of the following codes: @code{set}, @code{call}, @code{use},
971+@code{clobber}, @code{return}, @code{simple_return}, @code{asm_input},
972+@code{asm_output}, @code{addr_vec}, @code{addr_diff_vec},
973+@code{trap_if}, @code{unspec}, @code{unspec_volatile},
974+@code{parallel}, @code{cond_exec}, or @code{sequence}. If it is a
975+@code{parallel}, each element of the @code{parallel} must be one these
976+codes, except that @code{parallel} expressions cannot be nested and
977+@code{addr_vec} and @code{addr_diff_vec} are not permitted inside a
978+@code{parallel} expression.
979
980 @findex INSN_CODE
981 @item INSN_CODE (@var{i})
982
983=== modified file 'gcc/doc/tm.texi'
984--- old/gcc/doc/tm.texi 2010-09-01 13:29:58 +0000
985+++ new/gcc/doc/tm.texi 2011-01-05 12:12:18 +0000
986@@ -3287,6 +3287,12 @@
987 from the frame pointer of the previous stack frame.
988 @end defmac
989
990+@defmac RETURN_ADDR_REGNUM
991+If defined, a C expression whose value is the register number of the return
992+address for the current function. Targets that pass the return address on
993+the stack should not define this macro.
994+@end defmac
995+
996 @defmac INCOMING_RETURN_ADDR_RTX
997 A C expression whose value is RTL representing the location of the
998 incoming return address at the beginning of any function, before the
999
1000=== modified file 'gcc/dwarf2out.c'
1001--- old/gcc/dwarf2out.c 2010-12-21 18:46:10 +0000
1002+++ new/gcc/dwarf2out.c 2011-01-05 12:12:18 +0000
1003@@ -1396,7 +1396,7 @@
1004 {
1005 rtx dest = JUMP_LABEL (insn);
1006
1007- if (dest)
1008+ if (dest && !ANY_RETURN_P (dest))
1009 {
1010 if (barrier_args_size [INSN_UID (dest)] < 0)
1011 {
1012
1013=== modified file 'gcc/emit-rtl.c'
1014--- old/gcc/emit-rtl.c 2010-10-04 00:50:43 +0000
1015+++ new/gcc/emit-rtl.c 2011-01-05 12:12:18 +0000
1016@@ -2432,6 +2432,8 @@
1017 case CODE_LABEL:
1018 case PC:
1019 case CC0:
1020+ case RETURN:
1021+ case SIMPLE_RETURN:
1022 case SCRATCH:
1023 return;
1024 /* SCRATCH must be shared because they represent distinct values. */
1025@@ -3323,14 +3325,17 @@
1026 return insn;
1027 }
1028
1029-/* Return the last label to mark the same position as LABEL. Return null
1030- if LABEL itself is null. */
1031+/* Return the last label to mark the same position as LABEL. Return LABEL
1032+ itself if it is null or any return rtx. */
1033
1034 rtx
1035 skip_consecutive_labels (rtx label)
1036 {
1037 rtx insn;
1038
1039+ if (label && ANY_RETURN_P (label))
1040+ return label;
1041+
1042 for (insn = label; insn != 0 && !INSN_P (insn); insn = NEXT_INSN (insn))
1043 if (LABEL_P (insn))
1044 label = insn;
1045@@ -5209,7 +5214,7 @@
1046 return CODE_LABEL;
1047 if (GET_CODE (x) == CALL)
1048 return CALL_INSN;
1049- if (GET_CODE (x) == RETURN)
1050+ if (GET_CODE (x) == RETURN || GET_CODE (x) == SIMPLE_RETURN)
1051 return JUMP_INSN;
1052 if (GET_CODE (x) == SET)
1053 {
1054@@ -5715,8 +5720,10 @@
1055 init_reg_modes_target ();
1056
1057 /* Assign register numbers to the globally defined register rtx. */
1058- pc_rtx = gen_rtx_PC (VOIDmode);
1059- cc0_rtx = gen_rtx_CC0 (VOIDmode);
1060+ pc_rtx = gen_rtx_fmt_ (PC, VOIDmode);
1061+ ret_rtx = gen_rtx_fmt_ (RETURN, VOIDmode);
1062+ simple_return_rtx = gen_rtx_fmt_ (SIMPLE_RETURN, VOIDmode);
1063+ cc0_rtx = gen_rtx_fmt_ (CC0, VOIDmode);
1064 stack_pointer_rtx = gen_raw_REG (Pmode, STACK_POINTER_REGNUM);
1065 frame_pointer_rtx = gen_raw_REG (Pmode, FRAME_POINTER_REGNUM);
1066 hard_frame_pointer_rtx = gen_raw_REG (Pmode, HARD_FRAME_POINTER_REGNUM);
1067
1068=== modified file 'gcc/final.c'
1069--- old/gcc/final.c 2010-03-26 16:18:51 +0000
1070+++ new/gcc/final.c 2011-01-05 12:12:18 +0000
1071@@ -2428,7 +2428,7 @@
1072 delete_insn (insn);
1073 break;
1074 }
1075- else if (GET_CODE (SET_SRC (body)) == RETURN)
1076+ else if (ANY_RETURN_P (SET_SRC (body)))
1077 /* Replace (set (pc) (return)) with (return). */
1078 PATTERN (insn) = body = SET_SRC (body);
1079
1080
1081=== modified file 'gcc/function.c'
1082--- old/gcc/function.c 2010-08-16 19:18:08 +0000
1083+++ new/gcc/function.c 2011-01-05 12:12:18 +0000
1084@@ -147,9 +147,6 @@
1085 can always export `prologue_epilogue_contains'. */
1086 static void record_insns (rtx, rtx, htab_t *) ATTRIBUTE_UNUSED;
1087 static bool contains (const_rtx, htab_t);
1088-#ifdef HAVE_return
1089-static void emit_return_into_block (basic_block);
1090-#endif
1091 static void prepare_function_start (void);
1092 static void do_clobber_return_reg (rtx, void *);
1093 static void do_use_return_reg (rtx, void *);
1094@@ -4987,35 +4984,189 @@
1095 return 0;
1096 }
1097
1098+#ifdef HAVE_simple_return
1099+/* This collects sets and clobbers of hard registers in a HARD_REG_SET,
1100+ which is pointed to by DATA. */
1101+static void
1102+record_hard_reg_sets (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data)
1103+{
1104+ HARD_REG_SET *pset = (HARD_REG_SET *)data;
1105+ if (REG_P (x) && REGNO (x) < FIRST_PSEUDO_REGISTER)
1106+ {
1107+ int nregs = hard_regno_nregs[REGNO (x)][GET_MODE (x)];
1108+ while (nregs-- > 0)
1109+ SET_HARD_REG_BIT (*pset, REGNO (x) + nregs);
1110+ }
1111+}
1112+
1113+/* A subroutine of requires_stack_frame_p, called via for_each_rtx.
1114+ If any change is made, set CHANGED
1115+ to true. */
1116+
1117+static int
1118+frame_required_for_rtx (rtx *loc, void *data ATTRIBUTE_UNUSED)
1119+{
1120+ rtx x = *loc;
1121+ if (x == stack_pointer_rtx || x == hard_frame_pointer_rtx
1122+ || x == arg_pointer_rtx || x == pic_offset_table_rtx
1123+#ifdef RETURN_ADDR_REGNUM
1124+ || (REG_P (x) && REGNO (x) == RETURN_ADDR_REGNUM)
1125+#endif
1126+ )
1127+ return 1;
1128+ return 0;
1129+}
1130+
1131+static bool
1132+requires_stack_frame_p (rtx insn)
1133+{
1134+ HARD_REG_SET hardregs;
1135+ unsigned regno;
1136+
1137+ if (!INSN_P (insn) || DEBUG_INSN_P (insn))
1138+ return false;
1139+ if (CALL_P (insn))
1140+ return !SIBLING_CALL_P (insn);
1141+ if (for_each_rtx (&PATTERN (insn), frame_required_for_rtx, NULL))
1142+ return true;
1143+ CLEAR_HARD_REG_SET (hardregs);
1144+ note_stores (PATTERN (insn), record_hard_reg_sets, &hardregs);
1145+ AND_COMPL_HARD_REG_SET (hardregs, call_used_reg_set);
1146+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
1147+ if (TEST_HARD_REG_BIT (hardregs, regno)
1148+ && df_regs_ever_live_p (regno))
1149+ return true;
1150+ return false;
1151+}
1152+#endif
1153+
1154 #ifdef HAVE_return
1155-/* Insert gen_return at the end of block BB. This also means updating
1156- block_for_insn appropriately. */
1157+
1158+static rtx
1159+gen_return_pattern (bool simple_p)
1160+{
1161+#ifdef HAVE_simple_return
1162+ return simple_p ? gen_simple_return () : gen_return ();
1163+#else
1164+ gcc_assert (!simple_p);
1165+ return gen_return ();
1166+#endif
1167+}
1168+
1169+/* Insert an appropriate return pattern at the end of block BB. This
1170+ also means updating block_for_insn appropriately. */
1171
1172 static void
1173-emit_return_into_block (basic_block bb)
1174+emit_return_into_block (bool simple_p, basic_block bb)
1175 {
1176- emit_jump_insn_after (gen_return (), BB_END (bb));
1177+ rtx jump;
1178+ jump = emit_jump_insn_after (gen_return_pattern (simple_p), BB_END (bb));
1179+ JUMP_LABEL (jump) = simple_p ? simple_return_rtx : ret_rtx;
1180 }
1181-#endif /* HAVE_return */
1182+#endif
1183
1184 /* Generate the prologue and epilogue RTL if the machine supports it. Thread
1185 this into place with notes indicating where the prologue ends and where
1186- the epilogue begins. Update the basic block information when possible. */
1187+ the epilogue begins. Update the basic block information when possible.
1188+
1189+ Notes on epilogue placement:
1190+ There are several kinds of edges to the exit block:
1191+ * a single fallthru edge from LAST_BB
1192+ * possibly, edges from blocks containing sibcalls
1193+ * possibly, fake edges from infinite loops
1194+
1195+ The epilogue is always emitted on the fallthru edge from the last basic
1196+ block in the function, LAST_BB, into the exit block.
1197+
1198+ If LAST_BB is empty except for a label, it is the target of every
1199+ other basic block in the function that ends in a return. If a
1200+ target has a return or simple_return pattern (possibly with
1201+ conditional variants), these basic blocks can be changed so that a
1202+ return insn is emitted into them, and their target is adjusted to
1203+ the real exit block.
1204+
1205+ Notes on shrink wrapping: We implement a fairly conservative
1206+ version of shrink-wrapping rather than the textbook one. We only
1207+ generate a single prologue and a single epilogue. This is
1208+ sufficient to catch a number of interesting cases involving early
1209+ exits.
1210+
1211+ First, we identify the blocks that require the prologue to occur before
1212+ them. These are the ones that modify a call-saved register, or reference
1213+ any of the stack or frame pointer registers. To simplify things, we then
1214+ mark everything reachable from these blocks as also requiring a prologue.
1215+ This takes care of loops automatically, and avoids the need to examine
1216+ whether MEMs reference the frame, since it is sufficient to check for
1217+ occurrences of the stack or frame pointer.
1218+
1219+ We then compute the set of blocks for which the need for a prologue
1220+ is anticipatable (borrowing terminology from the shrink-wrapping
1221+ description in Muchnick's book). These are the blocks which either
1222+ require a prologue themselves, or those that have only successors
1223+ where the prologue is anticipatable. The prologue needs to be
1224+ inserted on all edges from BB1->BB2 where BB2 is in ANTIC and BB1
1225+ is not. For the moment, we ensure that only one such edge exists.
1226+
1227+ The epilogue is placed as described above, but we make a
1228+ distinction between inserting return and simple_return patterns
1229+ when modifying other blocks that end in a return. Blocks that end
1230+ in a sibcall omit the sibcall_epilogue if the block is not in
1231+ ANTIC. */
1232
1233 static void
1234 thread_prologue_and_epilogue_insns (void)
1235 {
1236 int inserted = 0;
1237+ basic_block last_bb;
1238+ bool last_bb_active;
1239+#ifdef HAVE_simple_return
1240+ bool unconverted_simple_returns = false;
1241+ basic_block simple_return_block = NULL;
1242+#endif
1243+ rtx returnjump ATTRIBUTE_UNUSED;
1244+ rtx seq ATTRIBUTE_UNUSED, epilogue_end ATTRIBUTE_UNUSED;
1245+ rtx prologue_seq ATTRIBUTE_UNUSED, split_prologue_seq ATTRIBUTE_UNUSED;
1246+ edge entry_edge, orig_entry_edge, exit_fallthru_edge;
1247 edge e;
1248-#if defined (HAVE_sibcall_epilogue) || defined (HAVE_epilogue) || defined (HAVE_return) || defined (HAVE_prologue)
1249- rtx seq;
1250-#endif
1251-#if defined (HAVE_epilogue) || defined(HAVE_return)
1252- rtx epilogue_end = NULL_RTX;
1253-#endif
1254 edge_iterator ei;
1255+ bitmap_head bb_flags;
1256+
1257+ df_analyze ();
1258
1259 rtl_profile_for_bb (ENTRY_BLOCK_PTR);
1260+
1261+ epilogue_end = NULL_RTX;
1262+
1263+ /* Can't deal with multiple successors of the entry block at the
1264+ moment. Function should always have at least one entry
1265+ point. */
1266+ gcc_assert (single_succ_p (ENTRY_BLOCK_PTR));
1267+ entry_edge = single_succ_edge (ENTRY_BLOCK_PTR);
1268+ orig_entry_edge = entry_edge;
1269+
1270+ exit_fallthru_edge = find_fallthru_edge (EXIT_BLOCK_PTR->preds);
1271+ if (exit_fallthru_edge != NULL)
1272+ {
1273+ rtx label;
1274+
1275+ last_bb = exit_fallthru_edge->src;
1276+ /* Test whether there are active instructions in the last block. */
1277+ label = BB_END (last_bb);
1278+ while (label && !LABEL_P (label))
1279+ {
1280+ if (active_insn_p (label))
1281+ break;
1282+ label = PREV_INSN (label);
1283+ }
1284+
1285+ last_bb_active = BB_HEAD (last_bb) != label || !LABEL_P (label);
1286+ }
1287+ else
1288+ {
1289+ last_bb = NULL;
1290+ last_bb_active = false;
1291+ }
1292+
1293 #ifdef HAVE_prologue
1294 if (HAVE_prologue)
1295 {
1296@@ -5040,19 +5191,168 @@
1297 emit_insn (gen_blockage ());
1298 #endif
1299
1300- seq = get_insns ();
1301+ prologue_seq = get_insns ();
1302 end_sequence ();
1303 set_insn_locators (seq, prologue_locator);
1304-
1305- /* Can't deal with multiple successors of the entry block
1306- at the moment. Function should always have at least one
1307- entry point. */
1308- gcc_assert (single_succ_p (ENTRY_BLOCK_PTR));
1309-
1310- insert_insn_on_edge (seq, single_succ_edge (ENTRY_BLOCK_PTR));
1311- inserted = 1;
1312- }
1313-#endif
1314+ }
1315+#endif
1316+
1317+ bitmap_initialize (&bb_flags, &bitmap_default_obstack);
1318+
1319+#ifdef HAVE_simple_return
1320+ /* Try to perform a kind of shrink-wrapping, making sure the
1321+ prologue/epilogue is emitted only around those parts of the
1322+ function that require it. */
1323+
1324+ if (flag_shrink_wrap && HAVE_simple_return && !flag_non_call_exceptions
1325+ && HAVE_prologue && !crtl->calls_eh_return)
1326+ {
1327+ HARD_REG_SET prologue_clobbered, live_on_edge;
1328+ rtx p_insn;
1329+ VEC(basic_block, heap) *vec;
1330+ basic_block bb;
1331+ bitmap_head bb_antic_flags;
1332+ bitmap_head bb_on_list;
1333+
1334+ bitmap_initialize (&bb_antic_flags, &bitmap_default_obstack);
1335+ bitmap_initialize (&bb_on_list, &bitmap_default_obstack);
1336+
1337+ vec = VEC_alloc (basic_block, heap, n_basic_blocks);
1338+
1339+ FOR_EACH_BB (bb)
1340+ {
1341+ rtx insn;
1342+ FOR_BB_INSNS (bb, insn)
1343+ {
1344+ if (requires_stack_frame_p (insn))
1345+ {
1346+ bitmap_set_bit (&bb_flags, bb->index);
1347+ VEC_quick_push (basic_block, vec, bb);
1348+ break;
1349+ }
1350+ }
1351+ }
1352+
1353+ /* For every basic block that needs a prologue, mark all blocks
1354+ reachable from it, so as to ensure they are also seen as
1355+ requiring a prologue. */
1356+ while (!VEC_empty (basic_block, vec))
1357+ {
1358+ basic_block tmp_bb = VEC_pop (basic_block, vec);
1359+ edge e;
1360+ edge_iterator ei;
1361+ FOR_EACH_EDGE (e, ei, tmp_bb->succs)
1362+ {
1363+ if (e->dest == EXIT_BLOCK_PTR
1364+ || bitmap_bit_p (&bb_flags, e->dest->index))
1365+ continue;
1366+ bitmap_set_bit (&bb_flags, e->dest->index);
1367+ VEC_quick_push (basic_block, vec, e->dest);
1368+ }
1369+ }
1370+ /* If the last basic block contains only a label, we'll be able
1371+ to convert jumps to it to (potentially conditional) return
1372+ insns later. This means we don't necessarily need a prologue
1373+ for paths reaching it. */
1374+ if (last_bb)
1375+ {
1376+ if (!last_bb_active)
1377+ bitmap_clear_bit (&bb_flags, last_bb->index);
1378+ else if (!bitmap_bit_p (&bb_flags, last_bb->index))
1379+ goto fail_shrinkwrap;
1380+ }
1381+
1382+ /* Now walk backwards from every block that is marked as needing
1383+ a prologue to compute the bb_antic_flags bitmap. */
1384+ bitmap_copy (&bb_antic_flags, &bb_flags);
1385+ FOR_EACH_BB (bb)
1386+ {
1387+ edge e;
1388+ edge_iterator ei;
1389+ if (!bitmap_bit_p (&bb_flags, bb->index))
1390+ continue;
1391+ FOR_EACH_EDGE (e, ei, bb->preds)
1392+ if (!bitmap_bit_p (&bb_antic_flags, e->src->index))
1393+ {
1394+ VEC_quick_push (basic_block, vec, e->src);
1395+ bitmap_set_bit (&bb_on_list, e->src->index);
1396+ }
1397+ }
1398+ while (!VEC_empty (basic_block, vec))
1399+ {
1400+ basic_block tmp_bb = VEC_pop (basic_block, vec);
1401+ edge e;
1402+ edge_iterator ei;
1403+ bool all_set = true;
1404+
1405+ bitmap_clear_bit (&bb_on_list, tmp_bb->index);
1406+ FOR_EACH_EDGE (e, ei, tmp_bb->succs)
1407+ {
1408+ if (!bitmap_bit_p (&bb_antic_flags, e->dest->index))
1409+ {
1410+ all_set = false;
1411+ break;
1412+ }
1413+ }
1414+ if (all_set)
1415+ {
1416+ bitmap_set_bit (&bb_antic_flags, tmp_bb->index);
1417+ FOR_EACH_EDGE (e, ei, tmp_bb->preds)
1418+ if (!bitmap_bit_p (&bb_antic_flags, e->src->index))
1419+ {
1420+ VEC_quick_push (basic_block, vec, e->src);
1421+ bitmap_set_bit (&bb_on_list, e->src->index);
1422+ }
1423+ }
1424+ }
1425+ /* Find exactly one edge that leads to a block in ANTIC from
1426+ a block that isn't. */
1427+ if (!bitmap_bit_p (&bb_antic_flags, entry_edge->dest->index))
1428+ FOR_EACH_BB (bb)
1429+ {
1430+ if (!bitmap_bit_p (&bb_antic_flags, bb->index))
1431+ continue;
1432+ FOR_EACH_EDGE (e, ei, bb->preds)
1433+ if (!bitmap_bit_p (&bb_antic_flags, e->src->index))
1434+ {
1435+ if (entry_edge != orig_entry_edge)
1436+ {
1437+ entry_edge = orig_entry_edge;
1438+ goto fail_shrinkwrap;
1439+ }
1440+ entry_edge = e;
1441+ }
1442+ }
1443+
1444+ /* Test whether the prologue is known to clobber any register
1445+ (other than FP or SP) which are live on the edge. */
1446+ CLEAR_HARD_REG_SET (prologue_clobbered);
1447+ for (p_insn = prologue_seq; p_insn; p_insn = NEXT_INSN (p_insn))
1448+ if (NONDEBUG_INSN_P (p_insn))
1449+ note_stores (PATTERN (p_insn), record_hard_reg_sets,
1450+ &prologue_clobbered);
1451+ CLEAR_HARD_REG_BIT (prologue_clobbered, STACK_POINTER_REGNUM);
1452+ if (frame_pointer_needed)
1453+ CLEAR_HARD_REG_BIT (prologue_clobbered, HARD_FRAME_POINTER_REGNUM);
1454+
1455+ CLEAR_HARD_REG_SET (live_on_edge);
1456+ reg_set_to_hard_reg_set (&live_on_edge,
1457+ df_get_live_in (entry_edge->dest));
1458+ if (hard_reg_set_intersect_p (live_on_edge, prologue_clobbered))
1459+ entry_edge = orig_entry_edge;
1460+
1461+ fail_shrinkwrap:
1462+ bitmap_clear (&bb_antic_flags);
1463+ bitmap_clear (&bb_on_list);
1464+ VEC_free (basic_block, heap, vec);
1465+ }
1466+#endif
1467+
1468+ if (prologue_seq != NULL_RTX)
1469+ {
1470+ insert_insn_on_edge (prologue_seq, entry_edge);
1471+ inserted = true;
1472+ }
1473
1474 /* If the exit block has no non-fake predecessors, we don't need
1475 an epilogue. */
1476@@ -5063,100 +5363,130 @@
1477 goto epilogue_done;
1478
1479 rtl_profile_for_bb (EXIT_BLOCK_PTR);
1480+
1481 #ifdef HAVE_return
1482- if (optimize && HAVE_return)
1483+ /* If we're allowed to generate a simple return instruction, then by
1484+ definition we don't need a full epilogue. If the last basic
1485+ block before the exit block does not contain active instructions,
1486+ examine its predecessors and try to emit (conditional) return
1487+ instructions. */
1488+ if (optimize && !last_bb_active
1489+ && (HAVE_return || entry_edge != orig_entry_edge))
1490 {
1491- /* If we're allowed to generate a simple return instruction,
1492- then by definition we don't need a full epilogue. Examine
1493- the block that falls through to EXIT. If it does not
1494- contain any code, examine its predecessors and try to
1495- emit (conditional) return instructions. */
1496-
1497- basic_block last;
1498+ edge_iterator ei2;
1499+ int i;
1500+ basic_block bb;
1501 rtx label;
1502+ VEC(basic_block,heap) *src_bbs;
1503
1504- FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
1505- if (e->flags & EDGE_FALLTHRU)
1506- break;
1507- if (e == NULL)
1508+ if (exit_fallthru_edge == NULL)
1509 goto epilogue_done;
1510- last = e->src;
1511-
1512- /* Verify that there are no active instructions in the last block. */
1513- label = BB_END (last);
1514- while (label && !LABEL_P (label))
1515+ label = BB_HEAD (last_bb);
1516+
1517+ src_bbs = VEC_alloc (basic_block, heap, EDGE_COUNT (last_bb->preds));
1518+ FOR_EACH_EDGE (e, ei2, last_bb->preds)
1519+ if (e->src != ENTRY_BLOCK_PTR)
1520+ VEC_quick_push (basic_block, src_bbs, e->src);
1521+
1522+ FOR_EACH_VEC_ELT (basic_block, src_bbs, i, bb)
1523 {
1524- if (active_insn_p (label))
1525- break;
1526- label = PREV_INSN (label);
1527+ bool simple_p;
1528+ rtx jump;
1529+ e = find_edge (bb, last_bb);
1530+
1531+ jump = BB_END (bb);
1532+
1533+#ifdef HAVE_simple_return
1534+ simple_p = (entry_edge != orig_entry_edge
1535+ ? !bitmap_bit_p (&bb_flags, bb->index) : false);
1536+#else
1537+ simple_p = false;
1538+#endif
1539+
1540+ if (!simple_p
1541+ && (!HAVE_return || !JUMP_P (jump)
1542+ || JUMP_LABEL (jump) != label))
1543+ continue;
1544+
1545+ /* If we have an unconditional jump, we can replace that
1546+ with a simple return instruction. */
1547+ if (!JUMP_P (jump))
1548+ {
1549+ emit_barrier_after (BB_END (bb));
1550+ emit_return_into_block (simple_p, bb);
1551+ }
1552+ else if (simplejump_p (jump))
1553+ {
1554+ emit_return_into_block (simple_p, bb);
1555+ delete_insn (jump);
1556+ }
1557+ else if (condjump_p (jump) && JUMP_LABEL (jump) != label)
1558+ {
1559+ basic_block new_bb;
1560+ edge new_e;
1561+
1562+ gcc_assert (simple_p);
1563+ new_bb = split_edge (e);
1564+ emit_barrier_after (BB_END (new_bb));
1565+ emit_return_into_block (simple_p, new_bb);
1566+#ifdef HAVE_simple_return
1567+ simple_return_block = new_bb;
1568+#endif
1569+ new_e = single_succ_edge (new_bb);
1570+ redirect_edge_succ (new_e, EXIT_BLOCK_PTR);
1571+
1572+ continue;
1573+ }
1574+ /* If we have a conditional jump branching to the last
1575+ block, we can try to replace that with a conditional
1576+ return instruction. */
1577+ else if (condjump_p (jump))
1578+ {
1579+ rtx dest;
1580+ if (simple_p)
1581+ dest = simple_return_rtx;
1582+ else
1583+ dest = ret_rtx;
1584+ if (! redirect_jump (jump, dest, 0))
1585+ {
1586+#ifdef HAVE_simple_return
1587+ if (simple_p)
1588+ unconverted_simple_returns = true;
1589+#endif
1590+ continue;
1591+ }
1592+
1593+ /* If this block has only one successor, it both jumps
1594+ and falls through to the fallthru block, so we can't
1595+ delete the edge. */
1596+ if (single_succ_p (bb))
1597+ continue;
1598+ }
1599+ else
1600+ {
1601+#ifdef HAVE_simple_return
1602+ if (simple_p)
1603+ unconverted_simple_returns = true;
1604+#endif
1605+ continue;
1606+ }
1607+
1608+ /* Fix up the CFG for the successful change we just made. */
1609+ redirect_edge_succ (e, EXIT_BLOCK_PTR);
1610 }
1611+ VEC_free (basic_block, heap, src_bbs);
1612
1613- if (BB_HEAD (last) == label && LABEL_P (label))
1614+ if (HAVE_return)
1615 {
1616- edge_iterator ei2;
1617-
1618- for (ei2 = ei_start (last->preds); (e = ei_safe_edge (ei2)); )
1619- {
1620- basic_block bb = e->src;
1621- rtx jump;
1622-
1623- if (bb == ENTRY_BLOCK_PTR)
1624- {
1625- ei_next (&ei2);
1626- continue;
1627- }
1628-
1629- jump = BB_END (bb);
1630- if (!JUMP_P (jump) || JUMP_LABEL (jump) != label)
1631- {
1632- ei_next (&ei2);
1633- continue;
1634- }
1635-
1636- /* If we have an unconditional jump, we can replace that
1637- with a simple return instruction. */
1638- if (simplejump_p (jump))
1639- {
1640- emit_return_into_block (bb);
1641- delete_insn (jump);
1642- }
1643-
1644- /* If we have a conditional jump, we can try to replace
1645- that with a conditional return instruction. */
1646- else if (condjump_p (jump))
1647- {
1648- if (! redirect_jump (jump, 0, 0))
1649- {
1650- ei_next (&ei2);
1651- continue;
1652- }
1653-
1654- /* If this block has only one successor, it both jumps
1655- and falls through to the fallthru block, so we can't
1656- delete the edge. */
1657- if (single_succ_p (bb))
1658- {
1659- ei_next (&ei2);
1660- continue;
1661- }
1662- }
1663- else
1664- {
1665- ei_next (&ei2);
1666- continue;
1667- }
1668-
1669- /* Fix up the CFG for the successful change we just made. */
1670- redirect_edge_succ (e, EXIT_BLOCK_PTR);
1671- }
1672-
1673 /* Emit a return insn for the exit fallthru block. Whether
1674 this is still reachable will be determined later. */
1675
1676- emit_barrier_after (BB_END (last));
1677- emit_return_into_block (last);
1678- epilogue_end = BB_END (last);
1679- single_succ_edge (last)->flags &= ~EDGE_FALLTHRU;
1680+ emit_barrier_after (BB_END (last_bb));
1681+ emit_return_into_block (false, last_bb);
1682+ epilogue_end = BB_END (last_bb);
1683+ if (JUMP_P (epilogue_end))
1684+ JUMP_LABEL (epilogue_end) = ret_rtx;
1685+ single_succ_edge (last_bb)->flags &= ~EDGE_FALLTHRU;
1686 goto epilogue_done;
1687 }
1688 }
1689@@ -5193,15 +5523,10 @@
1690 }
1691 #endif
1692
1693- /* Find the edge that falls through to EXIT. Other edges may exist
1694- due to RETURN instructions, but those don't need epilogues.
1695- There really shouldn't be a mixture -- either all should have
1696- been converted or none, however... */
1697+ /* If nothing falls through into the exit block, we don't need an
1698+ epilogue. */
1699
1700- FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
1701- if (e->flags & EDGE_FALLTHRU)
1702- break;
1703- if (e == NULL)
1704+ if (exit_fallthru_edge == NULL)
1705 goto epilogue_done;
1706
1707 #ifdef HAVE_epilogue
1708@@ -5217,25 +5542,38 @@
1709 set_insn_locators (seq, epilogue_locator);
1710
1711 seq = get_insns ();
1712+ returnjump = get_last_insn ();
1713 end_sequence ();
1714
1715- insert_insn_on_edge (seq, e);
1716+ insert_insn_on_edge (seq, exit_fallthru_edge);
1717 inserted = 1;
1718+ if (JUMP_P (returnjump))
1719+ {
1720+ rtx pat = PATTERN (returnjump);
1721+ if (GET_CODE (pat) == PARALLEL)
1722+ pat = XVECEXP (pat, 0, 0);
1723+ if (ANY_RETURN_P (pat))
1724+ JUMP_LABEL (returnjump) = pat;
1725+ else
1726+ JUMP_LABEL (returnjump) = ret_rtx;
1727+ }
1728+ else
1729+ returnjump = NULL_RTX;
1730 }
1731 else
1732 #endif
1733 {
1734 basic_block cur_bb;
1735
1736- if (! next_active_insn (BB_END (e->src)))
1737+ if (! next_active_insn (BB_END (exit_fallthru_edge->src)))
1738 goto epilogue_done;
1739 /* We have a fall-through edge to the exit block, the source is not
1740- at the end of the function, and there will be an assembler epilogue
1741- at the end of the function.
1742- We can't use force_nonfallthru here, because that would try to
1743- use return. Inserting a jump 'by hand' is extremely messy, so
1744+ at the end of the function, and there will be an assembler epilogue
1745+ at the end of the function.
1746+ We can't use force_nonfallthru here, because that would try to
1747+ use return. Inserting a jump 'by hand' is extremely messy, so
1748 we take advantage of cfg_layout_finalize using
1749- fixup_fallthru_exit_predecessor. */
1750+ fixup_fallthru_exit_predecessor. */
1751 cfg_layout_initialize (0);
1752 FOR_EACH_BB (cur_bb)
1753 if (cur_bb->index >= NUM_FIXED_BLOCKS
1754@@ -5244,6 +5582,7 @@
1755 cfg_layout_finalize ();
1756 }
1757 epilogue_done:
1758+
1759 default_rtl_profile ();
1760
1761 if (inserted)
1762@@ -5260,33 +5599,93 @@
1763 }
1764 }
1765
1766+#ifdef HAVE_simple_return
1767+ /* If there were branches to an empty LAST_BB which we tried to
1768+ convert to conditional simple_returns, but couldn't for some
1769+ reason, create a block to hold a simple_return insn and redirect
1770+ those remaining edges. */
1771+ if (unconverted_simple_returns)
1772+ {
1773+ edge_iterator ei2;
1774+ basic_block exit_pred = EXIT_BLOCK_PTR->prev_bb;
1775+
1776+ gcc_assert (entry_edge != orig_entry_edge);
1777+
1778+#ifdef HAVE_epilogue
1779+ if (simple_return_block == NULL && returnjump != NULL_RTX
1780+ && JUMP_LABEL (returnjump) == simple_return_rtx)
1781+ {
1782+ edge e = split_block (exit_fallthru_edge->src,
1783+ PREV_INSN (returnjump));
1784+ simple_return_block = e->dest;
1785+ }
1786+#endif
1787+ if (simple_return_block == NULL)
1788+ {
1789+ basic_block bb;
1790+ rtx start;
1791+
1792+ bb = create_basic_block (NULL, NULL, exit_pred);
1793+ start = emit_jump_insn_after (gen_simple_return (),
1794+ BB_END (bb));
1795+ JUMP_LABEL (start) = simple_return_rtx;
1796+ emit_barrier_after (start);
1797+
1798+ simple_return_block = bb;
1799+ make_edge (bb, EXIT_BLOCK_PTR, 0);
1800+ }
1801+
1802+ restart_scan:
1803+ for (ei2 = ei_start (last_bb->preds); (e = ei_safe_edge (ei2)); )
1804+ {
1805+ basic_block bb = e->src;
1806+
1807+ if (bb != ENTRY_BLOCK_PTR
1808+ && !bitmap_bit_p (&bb_flags, bb->index))
1809+ {
1810+ redirect_edge_and_branch_force (e, simple_return_block);
1811+ goto restart_scan;
1812+ }
1813+ ei_next (&ei2);
1814+
1815+ }
1816+ }
1817+#endif
1818+
1819 #ifdef HAVE_sibcall_epilogue
1820 /* Emit sibling epilogues before any sibling call sites. */
1821 for (ei = ei_start (EXIT_BLOCK_PTR->preds); (e = ei_safe_edge (ei)); )
1822 {
1823 basic_block bb = e->src;
1824 rtx insn = BB_END (bb);
1825+ rtx ep_seq;
1826
1827 if (!CALL_P (insn)
1828- || ! SIBLING_CALL_P (insn))
1829+ || ! SIBLING_CALL_P (insn)
1830+ || (entry_edge != orig_entry_edge
1831+ && !bitmap_bit_p (&bb_flags, bb->index)))
1832 {
1833 ei_next (&ei);
1834 continue;
1835 }
1836
1837- start_sequence ();
1838- emit_note (NOTE_INSN_EPILOGUE_BEG);
1839- emit_insn (gen_sibcall_epilogue ());
1840- seq = get_insns ();
1841- end_sequence ();
1842-
1843- /* Retain a map of the epilogue insns. Used in life analysis to
1844- avoid getting rid of sibcall epilogue insns. Do this before we
1845- actually emit the sequence. */
1846- record_insns (seq, NULL, &epilogue_insn_hash);
1847- set_insn_locators (seq, epilogue_locator);
1848-
1849- emit_insn_before (seq, insn);
1850+ ep_seq = gen_sibcall_epilogue ();
1851+ if (ep_seq)
1852+ {
1853+ start_sequence ();
1854+ emit_note (NOTE_INSN_EPILOGUE_BEG);
1855+ emit_insn (ep_seq);
1856+ seq = get_insns ();
1857+ end_sequence ();
1858+
1859+ /* Retain a map of the epilogue insns. Used in life analysis to
1860+ avoid getting rid of sibcall epilogue insns. Do this before we
1861+ actually emit the sequence. */
1862+ record_insns (seq, NULL, &epilogue_insn_hash);
1863+ set_insn_locators (seq, epilogue_locator);
1864+
1865+ emit_insn_before (seq, insn);
1866+ }
1867 ei_next (&ei);
1868 }
1869 #endif
1870@@ -5311,6 +5710,8 @@
1871 }
1872 #endif
1873
1874+ bitmap_clear (&bb_flags);
1875+
1876 /* Threading the prologue and epilogue changes the artificial refs
1877 in the entry and exit blocks. */
1878 epilogue_completed = 1;
1879
1880=== modified file 'gcc/genemit.c'
1881--- old/gcc/genemit.c 2009-11-27 11:37:06 +0000
1882+++ new/gcc/genemit.c 2011-01-05 12:12:18 +0000
1883@@ -222,6 +222,12 @@
1884 case PC:
1885 printf ("pc_rtx");
1886 return;
1887+ case RETURN:
1888+ printf ("ret_rtx");
1889+ return;
1890+ case SIMPLE_RETURN:
1891+ printf ("simple_return_rtx");
1892+ return;
1893 case CLOBBER:
1894 if (REG_P (XEXP (x, 0)))
1895 {
1896@@ -544,8 +550,8 @@
1897 || (GET_CODE (next) == PARALLEL
1898 && ((GET_CODE (XVECEXP (next, 0, 0)) == SET
1899 && GET_CODE (SET_DEST (XVECEXP (next, 0, 0))) == PC)
1900- || GET_CODE (XVECEXP (next, 0, 0)) == RETURN))
1901- || GET_CODE (next) == RETURN)
1902+ || ANY_RETURN_P (XVECEXP (next, 0, 0))))
1903+ || ANY_RETURN_P (next))
1904 printf (" emit_jump_insn (");
1905 else if ((GET_CODE (next) == SET && GET_CODE (SET_SRC (next)) == CALL)
1906 || GET_CODE (next) == CALL
1907@@ -660,7 +666,7 @@
1908 || (GET_CODE (next) == PARALLEL
1909 && GET_CODE (XVECEXP (next, 0, 0)) == SET
1910 && GET_CODE (SET_DEST (XVECEXP (next, 0, 0))) == PC)
1911- || GET_CODE (next) == RETURN)
1912+ || ANY_RETURN_P (next))
1913 printf (" emit_jump_insn (");
1914 else if ((GET_CODE (next) == SET && GET_CODE (SET_SRC (next)) == CALL)
1915 || GET_CODE (next) == CALL
1916
1917=== modified file 'gcc/gengenrtl.c'
1918--- old/gcc/gengenrtl.c 2007-08-22 23:30:39 +0000
1919+++ new/gcc/gengenrtl.c 2011-01-05 12:12:18 +0000
1920@@ -146,6 +146,10 @@
1921 || strcmp (defs[idx].enumname, "REG") == 0
1922 || strcmp (defs[idx].enumname, "SUBREG") == 0
1923 || strcmp (defs[idx].enumname, "MEM") == 0
1924+ || strcmp (defs[idx].enumname, "PC") == 0
1925+ || strcmp (defs[idx].enumname, "CC0") == 0
1926+ || strcmp (defs[idx].enumname, "RETURN") == 0
1927+ || strcmp (defs[idx].enumname, "SIMPLE_RETURN") == 0
1928 || strcmp (defs[idx].enumname, "CONST_VECTOR") == 0);
1929 }
1930
1931
1932=== modified file 'gcc/haifa-sched.c'
1933--- old/gcc/haifa-sched.c 2010-08-12 08:14:47 +0000
1934+++ new/gcc/haifa-sched.c 2011-01-05 12:12:18 +0000
1935@@ -4231,7 +4231,7 @@
1936 /* Helper function.
1937 Find fallthru edge from PRED. */
1938 edge
1939-find_fallthru_edge (basic_block pred)
1940+find_fallthru_edge_from (basic_block pred)
1941 {
1942 edge e;
1943 edge_iterator ei;
1944@@ -4298,7 +4298,7 @@
1945 edge e;
1946
1947 last = EXIT_BLOCK_PTR->prev_bb;
1948- e = find_fallthru_edge (last);
1949+ e = find_fallthru_edge_from (last);
1950
1951 if (e)
1952 {
1953@@ -5234,6 +5234,11 @@
1954 gcc_assert (/* Usual case. */
1955 (EDGE_COUNT (bb->succs) > 1
1956 && !BARRIER_P (NEXT_INSN (head)))
1957+ /* Special cases, see cfglayout.c:
1958+ fixup_reorder_chain. */
1959+ || (EDGE_COUNT (bb->succs) == 1
1960+ && (!onlyjump_p (head)
1961+ || returnjump_p (head)))
1962 /* Or jump to the next instruction. */
1963 || (EDGE_COUNT (bb->succs) == 1
1964 && (BB_HEAD (EDGE_I (bb->succs, 0)->dest)
1965
1966=== modified file 'gcc/ifcvt.c'
1967--- old/gcc/ifcvt.c 2010-11-26 12:03:32 +0000
1968+++ new/gcc/ifcvt.c 2011-01-05 12:12:18 +0000
1969@@ -105,7 +105,7 @@
1970 static int find_if_case_2 (basic_block, edge, edge);
1971 static int find_memory (rtx *, void *);
1972 static int dead_or_predicable (basic_block, basic_block, basic_block,
1973- basic_block, int);
1974+ edge, int);
1975 static void noce_emit_move_insn (rtx, rtx);
1976 static rtx block_has_only_trap (basic_block);
1977
1978@@ -3791,6 +3791,7 @@
1979 basic_block then_bb = then_edge->dest;
1980 basic_block else_bb = else_edge->dest;
1981 basic_block new_bb;
1982+ rtx else_target = NULL_RTX;
1983 int then_bb_index;
1984
1985 /* If we are partitioning hot/cold basic blocks, we don't want to
1986@@ -3840,9 +3841,16 @@
1987 predictable_edge_p (then_edge)))))
1988 return FALSE;
1989
1990+ if (else_bb == EXIT_BLOCK_PTR)
1991+ {
1992+ rtx jump = BB_END (else_edge->src);
1993+ gcc_assert (JUMP_P (jump));
1994+ else_target = JUMP_LABEL (jump);
1995+ }
1996+
1997 /* Registers set are dead, or are predicable. */
1998 if (! dead_or_predicable (test_bb, then_bb, else_bb,
1999- single_succ (then_bb), 1))
2000+ single_succ_edge (then_bb), 1))
2001 return FALSE;
2002
2003 /* Conversion went ok, including moving the insns and fixing up the
2004@@ -3859,6 +3867,9 @@
2005 redirect_edge_succ (FALLTHRU_EDGE (test_bb), else_bb);
2006 new_bb = 0;
2007 }
2008+ else if (else_bb == EXIT_BLOCK_PTR)
2009+ new_bb = force_nonfallthru_and_redirect (FALLTHRU_EDGE (test_bb),
2010+ else_bb, else_target);
2011 else
2012 new_bb = redirect_edge_and_branch_force (FALLTHRU_EDGE (test_bb),
2013 else_bb);
2014@@ -3957,7 +3968,7 @@
2015 return FALSE;
2016
2017 /* Registers set are dead, or are predicable. */
2018- if (! dead_or_predicable (test_bb, else_bb, then_bb, else_succ->dest, 0))
2019+ if (! dead_or_predicable (test_bb, else_bb, then_bb, else_succ, 0))
2020 return FALSE;
2021
2022 /* Conversion went ok, including moving the insns and fixing up the
2023@@ -3995,12 +4006,34 @@
2024
2025 static int
2026 dead_or_predicable (basic_block test_bb, basic_block merge_bb,
2027- basic_block other_bb, basic_block new_dest, int reversep)
2028+ basic_block other_bb, edge dest_edge, int reversep)
2029 {
2030- rtx head, end, jump, earliest = NULL_RTX, old_dest, new_label = NULL_RTX;
2031+ basic_block new_dest = dest_edge->dest;
2032+ rtx head, end, jump, earliest = NULL_RTX, old_dest;
2033 bitmap merge_set = NULL;
2034 /* Number of pending changes. */
2035 int n_validated_changes = 0;
2036+ rtx new_dest_label;
2037+
2038+ jump = BB_END (dest_edge->src);
2039+ if (JUMP_P (jump))
2040+ {
2041+ new_dest_label = JUMP_LABEL (jump);
2042+ if (new_dest_label == NULL_RTX)
2043+ {
2044+ new_dest_label = PATTERN (jump);
2045+ gcc_assert (ANY_RETURN_P (new_dest_label));
2046+ }
2047+ }
2048+ else if (other_bb != new_dest)
2049+ {
2050+ if (new_dest == EXIT_BLOCK_PTR)
2051+ new_dest_label = ret_rtx;
2052+ else
2053+ new_dest_label = block_label (new_dest);
2054+ }
2055+ else
2056+ new_dest_label = NULL_RTX;
2057
2058 jump = BB_END (test_bb);
2059
2060@@ -4220,10 +4253,9 @@
2061 old_dest = JUMP_LABEL (jump);
2062 if (other_bb != new_dest)
2063 {
2064- new_label = block_label (new_dest);
2065 if (reversep
2066- ? ! invert_jump_1 (jump, new_label)
2067- : ! redirect_jump_1 (jump, new_label))
2068+ ? ! invert_jump_1 (jump, new_dest_label)
2069+ : ! redirect_jump_1 (jump, new_dest_label))
2070 goto cancel;
2071 }
2072
2073@@ -4234,7 +4266,7 @@
2074
2075 if (other_bb != new_dest)
2076 {
2077- redirect_jump_2 (jump, old_dest, new_label, 0, reversep);
2078+ redirect_jump_2 (jump, old_dest, new_dest_label, 0, reversep);
2079
2080 redirect_edge_succ (BRANCH_EDGE (test_bb), new_dest);
2081 if (reversep)
2082
2083=== modified file 'gcc/jump.c'
2084--- old/gcc/jump.c 2010-12-13 10:05:52 +0000
2085+++ new/gcc/jump.c 2011-01-05 12:12:18 +0000
2086@@ -29,7 +29,8 @@
2087 JUMP_LABEL internal field. With this we can detect labels that
2088 become unused because of the deletion of all the jumps that
2089 formerly used them. The JUMP_LABEL info is sometimes looked
2090- at by later passes.
2091+ at by later passes. For return insns, it contains either a
2092+ RETURN or a SIMPLE_RETURN rtx.
2093
2094 The subroutines redirect_jump and invert_jump are used
2095 from other passes as well. */
2096@@ -742,10 +743,10 @@
2097 return (GET_CODE (x) == IF_THEN_ELSE
2098 && ((GET_CODE (XEXP (x, 2)) == PC
2099 && (GET_CODE (XEXP (x, 1)) == LABEL_REF
2100- || GET_CODE (XEXP (x, 1)) == RETURN))
2101+ || ANY_RETURN_P (XEXP (x, 1))))
2102 || (GET_CODE (XEXP (x, 1)) == PC
2103 && (GET_CODE (XEXP (x, 2)) == LABEL_REF
2104- || GET_CODE (XEXP (x, 2)) == RETURN))));
2105+ || ANY_RETURN_P (XEXP (x, 2))))));
2106 }
2107
2108 /* Return nonzero if INSN is a (possibly) conditional jump inside a
2109@@ -774,11 +775,11 @@
2110 return 0;
2111 if (XEXP (SET_SRC (x), 2) == pc_rtx
2112 && (GET_CODE (XEXP (SET_SRC (x), 1)) == LABEL_REF
2113- || GET_CODE (XEXP (SET_SRC (x), 1)) == RETURN))
2114+ || ANY_RETURN_P (XEXP (SET_SRC (x), 1)) == RETURN))
2115 return 1;
2116 if (XEXP (SET_SRC (x), 1) == pc_rtx
2117 && (GET_CODE (XEXP (SET_SRC (x), 2)) == LABEL_REF
2118- || GET_CODE (XEXP (SET_SRC (x), 2)) == RETURN))
2119+ || ANY_RETURN_P (XEXP (SET_SRC (x), 2))))
2120 return 1;
2121 return 0;
2122 }
2123@@ -840,8 +841,9 @@
2124 a = GET_CODE (XEXP (SET_SRC (x), 1));
2125 b = GET_CODE (XEXP (SET_SRC (x), 2));
2126
2127- return ((b == PC && (a == LABEL_REF || a == RETURN))
2128- || (a == PC && (b == LABEL_REF || b == RETURN)));
2129+ return ((b == PC && (a == LABEL_REF || a == RETURN || a == SIMPLE_RETURN))
2130+ || (a == PC
2131+ && (b == LABEL_REF || b == RETURN || b == SIMPLE_RETURN)));
2132 }
2133
2134 /* Return the label of a conditional jump. */
2135@@ -878,6 +880,7 @@
2136 switch (GET_CODE (x))
2137 {
2138 case RETURN:
2139+ case SIMPLE_RETURN:
2140 case EH_RETURN:
2141 return true;
2142
2143@@ -1200,7 +1203,7 @@
2144 /* If deleting a jump, decrement the count of the label,
2145 and delete the label if it is now unused. */
2146
2147- if (JUMP_P (insn) && JUMP_LABEL (insn))
2148+ if (JUMP_P (insn) && JUMP_LABEL (insn) && !ANY_RETURN_P (JUMP_LABEL (insn)))
2149 {
2150 rtx lab = JUMP_LABEL (insn), lab_next;
2151
2152@@ -1331,6 +1334,18 @@
2153 is also an unconditional jump in that case. */
2154 }
2155
2156+/* A helper function for redirect_exp_1; examines its input X and returns
2157+ either a LABEL_REF around a label, or a RETURN if X was NULL. */
2158+static rtx
2159+redirect_target (rtx x)
2160+{
2161+ if (x == NULL_RTX)
2162+ return ret_rtx;
2163+ if (!ANY_RETURN_P (x))
2164+ return gen_rtx_LABEL_REF (Pmode, x);
2165+ return x;
2166+}
2167+
2168 /* Throughout LOC, redirect OLABEL to NLABEL. Treat null OLABEL or
2169 NLABEL as a return. Accrue modifications into the change group. */
2170
2171@@ -1342,37 +1357,19 @@
2172 int i;
2173 const char *fmt;
2174
2175- if (code == LABEL_REF)
2176- {
2177- if (XEXP (x, 0) == olabel)
2178- {
2179- rtx n;
2180- if (nlabel)
2181- n = gen_rtx_LABEL_REF (Pmode, nlabel);
2182- else
2183- n = gen_rtx_RETURN (VOIDmode);
2184-
2185- validate_change (insn, loc, n, 1);
2186- return;
2187- }
2188- }
2189- else if (code == RETURN && olabel == 0)
2190- {
2191- if (nlabel)
2192- x = gen_rtx_LABEL_REF (Pmode, nlabel);
2193- else
2194- x = gen_rtx_RETURN (VOIDmode);
2195- if (loc == &PATTERN (insn))
2196- x = gen_rtx_SET (VOIDmode, pc_rtx, x);
2197- validate_change (insn, loc, x, 1);
2198+ if ((code == LABEL_REF && XEXP (x, 0) == olabel)
2199+ || x == olabel)
2200+ {
2201+ validate_change (insn, loc, redirect_target (nlabel), 1);
2202 return;
2203 }
2204
2205- if (code == SET && nlabel == 0 && SET_DEST (x) == pc_rtx
2206+ if (code == SET && SET_DEST (x) == pc_rtx
2207+ && ANY_RETURN_P (nlabel)
2208 && GET_CODE (SET_SRC (x)) == LABEL_REF
2209 && XEXP (SET_SRC (x), 0) == olabel)
2210 {
2211- validate_change (insn, loc, gen_rtx_RETURN (VOIDmode), 1);
2212+ validate_change (insn, loc, nlabel, 1);
2213 return;
2214 }
2215
2216@@ -1409,6 +1406,7 @@
2217 int ochanges = num_validated_changes ();
2218 rtx *loc, asmop;
2219
2220+ gcc_assert (nlabel);
2221 asmop = extract_asm_operands (PATTERN (jump));
2222 if (asmop)
2223 {
2224@@ -1430,17 +1428,20 @@
2225 jump target label is unused as a result, it and the code following
2226 it may be deleted.
2227
2228- If NLABEL is zero, we are to turn the jump into a (possibly conditional)
2229- RETURN insn.
2230+ Normally, NLABEL will be a label, but it may also be a RETURN or
2231+ SIMPLE_RETURN rtx; in that case we are to turn the jump into a
2232+ (possibly conditional) return insn.
2233
2234 The return value will be 1 if the change was made, 0 if it wasn't
2235- (this can only occur for NLABEL == 0). */
2236+ (this can only occur when trying to produce return insns). */
2237
2238 int
2239 redirect_jump (rtx jump, rtx nlabel, int delete_unused)
2240 {
2241 rtx olabel = JUMP_LABEL (jump);
2242
2243+ gcc_assert (nlabel != NULL_RTX);
2244+
2245 if (nlabel == olabel)
2246 return 1;
2247
2248@@ -1452,7 +1453,7 @@
2249 }
2250
2251 /* Fix up JUMP_LABEL and label ref counts after OLABEL has been replaced with
2252- NLABEL in JUMP.
2253+ NEW_DEST in JUMP.
2254 If DELETE_UNUSED is positive, delete related insn to OLABEL if its ref
2255 count has dropped to zero. */
2256 void
2257@@ -1468,13 +1469,14 @@
2258 about this. */
2259 gcc_assert (delete_unused >= 0);
2260 JUMP_LABEL (jump) = nlabel;
2261- if (nlabel)
2262+ if (nlabel && !ANY_RETURN_P (nlabel))
2263 ++LABEL_NUSES (nlabel);
2264
2265 /* Update labels in any REG_EQUAL note. */
2266 if ((note = find_reg_note (jump, REG_EQUAL, NULL_RTX)) != NULL_RTX)
2267 {
2268- if (!nlabel || (invert && !invert_exp_1 (XEXP (note, 0), jump)))
2269+ if (ANY_RETURN_P (nlabel)
2270+ || (invert && !invert_exp_1 (XEXP (note, 0), jump)))
2271 remove_note (jump, note);
2272 else
2273 {
2274@@ -1483,7 +1485,8 @@
2275 }
2276 }
2277
2278- if (olabel && --LABEL_NUSES (olabel) == 0 && delete_unused > 0
2279+ if (olabel && !ANY_RETURN_P (olabel)
2280+ && --LABEL_NUSES (olabel) == 0 && delete_unused > 0
2281 /* Undefined labels will remain outside the insn stream. */
2282 && INSN_UID (olabel))
2283 delete_related_insns (olabel);
2284
2285=== modified file 'gcc/opts.c'
2286--- old/gcc/opts.c 2010-12-10 15:33:37 +0000
2287+++ new/gcc/opts.c 2011-01-05 12:12:18 +0000
2288@@ -908,6 +908,7 @@
2289 flag_ipa_cp = opt2;
2290 flag_ipa_sra = opt2;
2291 flag_ee = opt2;
2292+ flag_shrink_wrap = opt2;
2293
2294 /* Track fields in field-sensitive alias analysis. */
2295 set_param_value ("max-fields-for-field-sensitive",
2296
2297=== modified file 'gcc/print-rtl.c'
2298--- old/gcc/print-rtl.c 2010-03-26 16:18:51 +0000
2299+++ new/gcc/print-rtl.c 2011-01-05 12:12:18 +0000
2300@@ -308,9 +308,16 @@
2301 }
2302 }
2303 else if (i == 8 && JUMP_P (in_rtx) && JUMP_LABEL (in_rtx) != NULL)
2304- /* Output the JUMP_LABEL reference. */
2305- fprintf (outfile, "\n%s%*s -> %d", print_rtx_head, indent * 2, "",
2306- INSN_UID (JUMP_LABEL (in_rtx)));
2307+ {
2308+ /* Output the JUMP_LABEL reference. */
2309+ fprintf (outfile, "\n%s%*s -> ", print_rtx_head, indent * 2, "");
2310+ if (GET_CODE (JUMP_LABEL (in_rtx)) == RETURN)
2311+ fprintf (outfile, "return");
2312+ else if (GET_CODE (JUMP_LABEL (in_rtx)) == SIMPLE_RETURN)
2313+ fprintf (outfile, "simple_return");
2314+ else
2315+ fprintf (outfile, "%d", INSN_UID (JUMP_LABEL (in_rtx)));
2316+ }
2317 else if (i == 0 && GET_CODE (in_rtx) == VALUE)
2318 {
2319 #ifndef GENERATOR_FILE
2320
2321=== modified file 'gcc/reorg.c'
2322--- old/gcc/reorg.c 2010-09-15 22:51:44 +0000
2323+++ new/gcc/reorg.c 2011-01-05 12:12:18 +0000
2324@@ -161,8 +161,11 @@
2325 #define unfilled_slots_next \
2326 ((rtx *) obstack_next_free (&unfilled_slots_obstack))
2327
2328-/* Points to the label before the end of the function. */
2329-static rtx end_of_function_label;
2330+/* Points to the label before the end of the function, or before a
2331+ return insn. */
2332+static rtx function_return_label;
2333+/* Likewise for a simple_return. */
2334+static rtx function_simple_return_label;
2335
2336 /* Mapping between INSN_UID's and position in the code since INSN_UID's do
2337 not always monotonically increase. */
2338@@ -175,7 +178,7 @@
2339 static int resource_conflicts_p (struct resources *, struct resources *);
2340 static int insn_references_resource_p (rtx, struct resources *, bool);
2341 static int insn_sets_resource_p (rtx, struct resources *, bool);
2342-static rtx find_end_label (void);
2343+static rtx find_end_label (rtx);
2344 static rtx emit_delay_sequence (rtx, rtx, int);
2345 static rtx add_to_delay_list (rtx, rtx);
2346 static rtx delete_from_delay_slot (rtx);
2347@@ -220,6 +223,15 @@
2348 static void make_return_insns (rtx);
2349 #endif
2350
2351+/* Return true iff INSN is a simplejump, or any kind of return insn. */
2352+
2353+static bool
2354+simplejump_or_return_p (rtx insn)
2355+{
2356+ return (JUMP_P (insn)
2357+ && (simplejump_p (insn) || ANY_RETURN_P (PATTERN (insn))));
2358+}
2359+
2360 /* Return TRUE if this insn should stop the search for insn to fill delay
2361 slots. LABELS_P indicates that labels should terminate the search.
2362 In all cases, jumps terminate the search. */
2363@@ -335,23 +347,29 @@
2364
2365 ??? There may be a problem with the current implementation. Suppose
2366 we start with a bare RETURN insn and call find_end_label. It may set
2367- end_of_function_label just before the RETURN. Suppose the machinery
2368+ function_return_label just before the RETURN. Suppose the machinery
2369 is able to fill the delay slot of the RETURN insn afterwards. Then
2370- end_of_function_label is no longer valid according to the property
2371+ function_return_label is no longer valid according to the property
2372 described above and find_end_label will still return it unmodified.
2373 Note that this is probably mitigated by the following observation:
2374- once end_of_function_label is made, it is very likely the target of
2375+ once function_return_label is made, it is very likely the target of
2376 a jump, so filling the delay slot of the RETURN will be much more
2377 difficult. */
2378
2379 static rtx
2380-find_end_label (void)
2381+find_end_label (rtx kind)
2382 {
2383 rtx insn;
2384+ rtx *plabel;
2385+
2386+ if (kind == ret_rtx)
2387+ plabel = &function_return_label;
2388+ else
2389+ plabel = &function_simple_return_label;
2390
2391 /* If we found one previously, return it. */
2392- if (end_of_function_label)
2393- return end_of_function_label;
2394+ if (*plabel)
2395+ return *plabel;
2396
2397 /* Otherwise, see if there is a label at the end of the function. If there
2398 is, it must be that RETURN insns aren't needed, so that is our return
2399@@ -366,44 +384,44 @@
2400
2401 /* When a target threads its epilogue we might already have a
2402 suitable return insn. If so put a label before it for the
2403- end_of_function_label. */
2404+ function_return_label. */
2405 if (BARRIER_P (insn)
2406 && JUMP_P (PREV_INSN (insn))
2407- && GET_CODE (PATTERN (PREV_INSN (insn))) == RETURN)
2408+ && PATTERN (PREV_INSN (insn)) == kind)
2409 {
2410 rtx temp = PREV_INSN (PREV_INSN (insn));
2411- end_of_function_label = gen_label_rtx ();
2412- LABEL_NUSES (end_of_function_label) = 0;
2413+ rtx label = gen_label_rtx ();
2414+ LABEL_NUSES (label) = 0;
2415
2416 /* Put the label before an USE insns that may precede the RETURN insn. */
2417 while (GET_CODE (temp) == USE)
2418 temp = PREV_INSN (temp);
2419
2420- emit_label_after (end_of_function_label, temp);
2421+ emit_label_after (label, temp);
2422+ *plabel = label;
2423 }
2424
2425 else if (LABEL_P (insn))
2426- end_of_function_label = insn;
2427+ *plabel = insn;
2428 else
2429 {
2430- end_of_function_label = gen_label_rtx ();
2431- LABEL_NUSES (end_of_function_label) = 0;
2432+ rtx label = gen_label_rtx ();
2433+ LABEL_NUSES (label) = 0;
2434 /* If the basic block reorder pass moves the return insn to
2435 some other place try to locate it again and put our
2436- end_of_function_label there. */
2437- while (insn && ! (JUMP_P (insn)
2438- && (GET_CODE (PATTERN (insn)) == RETURN)))
2439+ function_return_label there. */
2440+ while (insn && ! (JUMP_P (insn) && (PATTERN (insn) == kind)))
2441 insn = PREV_INSN (insn);
2442 if (insn)
2443 {
2444 insn = PREV_INSN (insn);
2445
2446- /* Put the label before an USE insns that may proceed the
2447+ /* Put the label before an USE insns that may precede the
2448 RETURN insn. */
2449 while (GET_CODE (insn) == USE)
2450 insn = PREV_INSN (insn);
2451
2452- emit_label_after (end_of_function_label, insn);
2453+ emit_label_after (label, insn);
2454 }
2455 else
2456 {
2457@@ -413,19 +431,16 @@
2458 && ! HAVE_return
2459 #endif
2460 )
2461- {
2462- /* The RETURN insn has its delay slot filled so we cannot
2463- emit the label just before it. Since we already have
2464- an epilogue and cannot emit a new RETURN, we cannot
2465- emit the label at all. */
2466- end_of_function_label = NULL_RTX;
2467- return end_of_function_label;
2468- }
2469+ /* The RETURN insn has its delay slot filled so we cannot
2470+ emit the label just before it. Since we already have
2471+ an epilogue and cannot emit a new RETURN, we cannot
2472+ emit the label at all. */
2473+ return NULL_RTX;
2474 #endif /* HAVE_epilogue */
2475
2476 /* Otherwise, make a new label and emit a RETURN and BARRIER,
2477 if needed. */
2478- emit_label (end_of_function_label);
2479+ emit_label (label);
2480 #ifdef HAVE_return
2481 /* We don't bother trying to create a return insn if the
2482 epilogue has filled delay-slots; we would have to try and
2483@@ -437,19 +452,21 @@
2484 /* The return we make may have delay slots too. */
2485 rtx insn = gen_return ();
2486 insn = emit_jump_insn (insn);
2487+ JUMP_LABEL (insn) = ret_rtx;
2488 emit_barrier ();
2489 if (num_delay_slots (insn) > 0)
2490 obstack_ptr_grow (&unfilled_slots_obstack, insn);
2491 }
2492 #endif
2493 }
2494+ *plabel = label;
2495 }
2496
2497 /* Show one additional use for this label so it won't go away until
2498 we are done. */
2499- ++LABEL_NUSES (end_of_function_label);
2500+ ++LABEL_NUSES (*plabel);
2501
2502- return end_of_function_label;
2503+ return *plabel;
2504 }
2505
2506 /* Put INSN and LIST together in a SEQUENCE rtx of LENGTH, and replace
2507@@ -797,10 +814,8 @@
2508 if ((next_trial == next_active_insn (JUMP_LABEL (insn))
2509 && ! (next_trial == 0 && crtl->epilogue_delay_list != 0))
2510 || (next_trial != 0
2511- && JUMP_P (next_trial)
2512- && JUMP_LABEL (insn) == JUMP_LABEL (next_trial)
2513- && (simplejump_p (next_trial)
2514- || GET_CODE (PATTERN (next_trial)) == RETURN)))
2515+ && simplejump_or_return_p (next_trial)
2516+ && JUMP_LABEL (insn) == JUMP_LABEL (next_trial)))
2517 {
2518 if (eligible_for_annul_false (insn, 0, trial, flags))
2519 {
2520@@ -819,13 +834,11 @@
2521 branch, thread our jump to the target of that branch. Don't
2522 change this into a RETURN here, because it may not accept what
2523 we have in the delay slot. We'll fix this up later. */
2524- if (next_trial && JUMP_P (next_trial)
2525- && (simplejump_p (next_trial)
2526- || GET_CODE (PATTERN (next_trial)) == RETURN))
2527+ if (next_trial && simplejump_or_return_p (next_trial))
2528 {
2529 rtx target_label = JUMP_LABEL (next_trial);
2530- if (target_label == 0)
2531- target_label = find_end_label ();
2532+ if (ANY_RETURN_P (target_label))
2533+ target_label = find_end_label (target_label);
2534
2535 if (target_label)
2536 {
2537@@ -866,7 +879,7 @@
2538 if (JUMP_P (insn)
2539 && (condjump_p (insn) || condjump_in_parallel_p (insn))
2540 && INSN_UID (insn) <= max_uid
2541- && label != 0
2542+ && label != 0 && !ANY_RETURN_P (label)
2543 && INSN_UID (label) <= max_uid)
2544 flags
2545 = (uid_to_ruid[INSN_UID (label)] > uid_to_ruid[INSN_UID (insn)])
2546@@ -1038,7 +1051,7 @@
2547 pat = XVECEXP (pat, 0, 0);
2548
2549 if (GET_CODE (pat) == RETURN)
2550- return target == 0 ? const_true_rtx : 0;
2551+ return ANY_RETURN_P (target) ? const_true_rtx : 0;
2552
2553 else if (GET_CODE (pat) != SET || SET_DEST (pat) != pc_rtx)
2554 return 0;
2555@@ -1318,7 +1331,11 @@
2556 }
2557
2558 /* Show the place to which we will be branching. */
2559- *pnew_thread = next_active_insn (JUMP_LABEL (XVECEXP (seq, 0, 0)));
2560+ temp = JUMP_LABEL (XVECEXP (seq, 0, 0));
2561+ if (ANY_RETURN_P (temp))
2562+ *pnew_thread = temp;
2563+ else
2564+ *pnew_thread = next_active_insn (temp);
2565
2566 /* Add any new insns to the delay list and update the count of the
2567 number of slots filled. */
2568@@ -1358,8 +1375,7 @@
2569 /* We can't do anything if SEQ's delay insn isn't an
2570 unconditional branch. */
2571
2572- if (! simplejump_p (XVECEXP (seq, 0, 0))
2573- && GET_CODE (PATTERN (XVECEXP (seq, 0, 0))) != RETURN)
2574+ if (! simplejump_or_return_p (XVECEXP (seq, 0, 0)))
2575 return delay_list;
2576
2577 for (i = 1; i < XVECLEN (seq, 0); i++)
2578@@ -1827,7 +1843,7 @@
2579 rtx insn;
2580
2581 /* We don't own the function end. */
2582- if (thread == 0)
2583+ if (ANY_RETURN_P (thread))
2584 return 0;
2585
2586 /* Get the first active insn, or THREAD, if it is an active insn. */
2587@@ -2245,7 +2261,8 @@
2588 && (!JUMP_P (insn)
2589 || ((condjump_p (insn) || condjump_in_parallel_p (insn))
2590 && ! simplejump_p (insn)
2591- && JUMP_LABEL (insn) != 0)))
2592+ && JUMP_LABEL (insn) != 0
2593+ && !ANY_RETURN_P (JUMP_LABEL (insn)))))
2594 {
2595 /* Invariant: If insn is a JUMP_INSN, the insn's jump
2596 label. Otherwise, zero. */
2597@@ -2270,7 +2287,7 @@
2598 target = JUMP_LABEL (insn);
2599 }
2600
2601- if (target == 0)
2602+ if (target == 0 || ANY_RETURN_P (target))
2603 for (trial = next_nonnote_insn (insn); trial; trial = next_trial)
2604 {
2605 next_trial = next_nonnote_insn (trial);
2606@@ -2349,6 +2366,7 @@
2607 && JUMP_P (trial)
2608 && simplejump_p (trial)
2609 && (target == 0 || JUMP_LABEL (trial) == target)
2610+ && !ANY_RETURN_P (JUMP_LABEL (trial))
2611 && (next_trial = next_active_insn (JUMP_LABEL (trial))) != 0
2612 && ! (NONJUMP_INSN_P (next_trial)
2613 && GET_CODE (PATTERN (next_trial)) == SEQUENCE)
2614@@ -2371,7 +2389,7 @@
2615 if (new_label != 0)
2616 new_label = get_label_before (new_label);
2617 else
2618- new_label = find_end_label ();
2619+ new_label = find_end_label (simple_return_rtx);
2620
2621 if (new_label)
2622 {
2623@@ -2503,7 +2521,8 @@
2624
2625 /* Follow any unconditional jump at LABEL;
2626 return the ultimate label reached by any such chain of jumps.
2627- Return null if the chain ultimately leads to a return instruction.
2628+ Return a suitable return rtx if the chain ultimately leads to a
2629+ return instruction.
2630 If LABEL is not followed by a jump, return LABEL.
2631 If the chain loops or we can't find end, return LABEL,
2632 since that tells caller to avoid changing the insn. */
2633@@ -2518,6 +2537,7 @@
2634
2635 for (depth = 0;
2636 (depth < 10
2637+ && !ANY_RETURN_P (value)
2638 && (insn = next_active_insn (value)) != 0
2639 && JUMP_P (insn)
2640 && ((JUMP_LABEL (insn) != 0 && any_uncondjump_p (insn)
2641@@ -2527,18 +2547,22 @@
2642 && BARRIER_P (next));
2643 depth++)
2644 {
2645- rtx tem;
2646+ rtx this_label = JUMP_LABEL (insn);
2647
2648 /* If we have found a cycle, make the insn jump to itself. */
2649- if (JUMP_LABEL (insn) == label)
2650+ if (this_label == label)
2651 return label;
2652
2653- tem = next_active_insn (JUMP_LABEL (insn));
2654- if (tem && (GET_CODE (PATTERN (tem)) == ADDR_VEC
2655+ if (!ANY_RETURN_P (this_label))
2656+ {
2657+ rtx tem = next_active_insn (this_label);
2658+ if (tem
2659+ && (GET_CODE (PATTERN (tem)) == ADDR_VEC
2660 || GET_CODE (PATTERN (tem)) == ADDR_DIFF_VEC))
2661- break;
2662+ break;
2663+ }
2664
2665- value = JUMP_LABEL (insn);
2666+ value = this_label;
2667 }
2668 if (depth == 10)
2669 return label;
2670@@ -2901,6 +2925,7 @@
2671 arithmetic insn after the jump insn and put the arithmetic insn in the
2672 delay slot. If we can't do this, return. */
2673 if (delay_list == 0 && likely && new_thread
2674+ && !ANY_RETURN_P (new_thread)
2675 && NONJUMP_INSN_P (new_thread)
2676 && GET_CODE (PATTERN (new_thread)) != ASM_INPUT
2677 && asm_noperands (PATTERN (new_thread)) < 0)
2678@@ -2985,16 +3010,14 @@
2679
2680 gcc_assert (thread_if_true);
2681
2682- if (new_thread && JUMP_P (new_thread)
2683- && (simplejump_p (new_thread)
2684- || GET_CODE (PATTERN (new_thread)) == RETURN)
2685+ if (new_thread && simplejump_or_return_p (new_thread)
2686 && redirect_with_delay_list_safe_p (insn,
2687 JUMP_LABEL (new_thread),
2688 delay_list))
2689 new_thread = follow_jumps (JUMP_LABEL (new_thread));
2690
2691- if (new_thread == 0)
2692- label = find_end_label ();
2693+ if (ANY_RETURN_P (new_thread))
2694+ label = find_end_label (new_thread);
2695 else if (LABEL_P (new_thread))
2696 label = new_thread;
2697 else
2698@@ -3340,11 +3363,12 @@
2699 group of consecutive labels. */
2700 if (JUMP_P (insn)
2701 && (condjump_p (insn) || condjump_in_parallel_p (insn))
2702- && (target_label = JUMP_LABEL (insn)) != 0)
2703+ && (target_label = JUMP_LABEL (insn)) != 0
2704+ && !ANY_RETURN_P (target_label))
2705 {
2706 target_label = skip_consecutive_labels (follow_jumps (target_label));
2707- if (target_label == 0)
2708- target_label = find_end_label ();
2709+ if (ANY_RETURN_P (target_label))
2710+ target_label = find_end_label (target_label);
2711
2712 if (target_label && next_active_insn (target_label) == next
2713 && ! condjump_in_parallel_p (insn))
2714@@ -3359,9 +3383,8 @@
2715 /* See if this jump conditionally branches around an unconditional
2716 jump. If so, invert this jump and point it to the target of the
2717 second jump. */
2718- if (next && JUMP_P (next)
2719+ if (next && simplejump_or_return_p (next)
2720 && any_condjump_p (insn)
2721- && (simplejump_p (next) || GET_CODE (PATTERN (next)) == RETURN)
2722 && target_label
2723 && next_active_insn (target_label) == next_active_insn (next)
2724 && no_labels_between_p (insn, next))
2725@@ -3403,8 +3426,7 @@
2726 Don't do this if we expect the conditional branch to be true, because
2727 we would then be making the more common case longer. */
2728
2729- if (JUMP_P (insn)
2730- && (simplejump_p (insn) || GET_CODE (PATTERN (insn)) == RETURN)
2731+ if (simplejump_or_return_p (insn)
2732 && (other = prev_active_insn (insn)) != 0
2733 && any_condjump_p (other)
2734 && no_labels_between_p (other, insn)
2735@@ -3445,10 +3467,10 @@
2736 Only do so if optimizing for size since this results in slower, but
2737 smaller code. */
2738 if (optimize_function_for_size_p (cfun)
2739- && GET_CODE (PATTERN (delay_insn)) == RETURN
2740+ && ANY_RETURN_P (PATTERN (delay_insn))
2741 && next
2742 && JUMP_P (next)
2743- && GET_CODE (PATTERN (next)) == RETURN)
2744+ && PATTERN (next) == PATTERN (delay_insn))
2745 {
2746 rtx after;
2747 int i;
2748@@ -3487,14 +3509,16 @@
2749 continue;
2750
2751 target_label = JUMP_LABEL (delay_insn);
2752+ if (target_label && ANY_RETURN_P (target_label))
2753+ continue;
2754
2755 if (target_label)
2756 {
2757 /* If this jump goes to another unconditional jump, thread it, but
2758 don't convert a jump into a RETURN here. */
2759 trial = skip_consecutive_labels (follow_jumps (target_label));
2760- if (trial == 0)
2761- trial = find_end_label ();
2762+ if (ANY_RETURN_P (trial))
2763+ trial = find_end_label (trial);
2764
2765 if (trial && trial != target_label
2766 && redirect_with_delay_slots_safe_p (delay_insn, trial, insn))
2767@@ -3517,7 +3541,7 @@
2768 later incorrectly compute register live/death info. */
2769 rtx tmp = next_active_insn (trial);
2770 if (tmp == 0)
2771- tmp = find_end_label ();
2772+ tmp = find_end_label (simple_return_rtx);
2773
2774 if (tmp)
2775 {
2776@@ -3537,14 +3561,12 @@
2777 delay list and that insn is redundant, thread the jump. */
2778 if (trial && GET_CODE (PATTERN (trial)) == SEQUENCE
2779 && XVECLEN (PATTERN (trial), 0) == 2
2780- && JUMP_P (XVECEXP (PATTERN (trial), 0, 0))
2781- && (simplejump_p (XVECEXP (PATTERN (trial), 0, 0))
2782- || GET_CODE (PATTERN (XVECEXP (PATTERN (trial), 0, 0))) == RETURN)
2783+ && simplejump_or_return_p (XVECEXP (PATTERN (trial), 0, 0))
2784 && redundant_insn (XVECEXP (PATTERN (trial), 0, 1), insn, 0))
2785 {
2786 target_label = JUMP_LABEL (XVECEXP (PATTERN (trial), 0, 0));
2787- if (target_label == 0)
2788- target_label = find_end_label ();
2789+ if (ANY_RETURN_P (target_label))
2790+ target_label = find_end_label (target_label);
2791
2792 if (target_label
2793 && redirect_with_delay_slots_safe_p (delay_insn, target_label,
2794@@ -3622,16 +3644,15 @@
2795 a RETURN here. */
2796 if (! INSN_ANNULLED_BRANCH_P (delay_insn)
2797 && any_condjump_p (delay_insn)
2798- && next && JUMP_P (next)
2799- && (simplejump_p (next) || GET_CODE (PATTERN (next)) == RETURN)
2800+ && next && simplejump_or_return_p (next)
2801 && next_active_insn (target_label) == next_active_insn (next)
2802 && no_labels_between_p (insn, next))
2803 {
2804 rtx label = JUMP_LABEL (next);
2805 rtx old_label = JUMP_LABEL (delay_insn);
2806
2807- if (label == 0)
2808- label = find_end_label ();
2809+ if (ANY_RETURN_P (label))
2810+ label = find_end_label (label);
2811
2812 /* find_end_label can generate a new label. Check this first. */
2813 if (label
2814@@ -3692,7 +3713,8 @@
2815 make_return_insns (rtx first)
2816 {
2817 rtx insn, jump_insn, pat;
2818- rtx real_return_label = end_of_function_label;
2819+ rtx real_return_label = function_return_label;
2820+ rtx real_simple_return_label = function_simple_return_label;
2821 int slots, i;
2822
2823 #ifdef DELAY_SLOTS_FOR_EPILOGUE
2824@@ -3707,18 +3729,25 @@
2825 #endif
2826
2827 /* See if there is a RETURN insn in the function other than the one we
2828- made for END_OF_FUNCTION_LABEL. If so, set up anything we can't change
2829+ made for FUNCTION_RETURN_LABEL. If so, set up anything we can't change
2830 into a RETURN to jump to it. */
2831 for (insn = first; insn; insn = NEXT_INSN (insn))
2832- if (JUMP_P (insn) && GET_CODE (PATTERN (insn)) == RETURN)
2833+ if (JUMP_P (insn) && ANY_RETURN_P (PATTERN (insn)))
2834 {
2835- real_return_label = get_label_before (insn);
2836+ rtx t = get_label_before (insn);
2837+ if (PATTERN (insn) == ret_rtx)
2838+ real_return_label = t;
2839+ else
2840+ real_simple_return_label = t;
2841 break;
2842 }
2843
2844 /* Show an extra usage of REAL_RETURN_LABEL so it won't go away if it
2845- was equal to END_OF_FUNCTION_LABEL. */
2846- LABEL_NUSES (real_return_label)++;
2847+ was equal to FUNCTION_RETURN_LABEL. */
2848+ if (real_return_label)
2849+ LABEL_NUSES (real_return_label)++;
2850+ if (real_simple_return_label)
2851+ LABEL_NUSES (real_simple_return_label)++;
2852
2853 /* Clear the list of insns to fill so we can use it. */
2854 obstack_free (&unfilled_slots_obstack, unfilled_firstobj);
2855@@ -3726,13 +3755,27 @@
2856 for (insn = first; insn; insn = NEXT_INSN (insn))
2857 {
2858 int flags;
2859+ rtx kind, real_label;
2860
2861 /* Only look at filled JUMP_INSNs that go to the end of function
2862 label. */
2863 if (!NONJUMP_INSN_P (insn)
2864 || GET_CODE (PATTERN (insn)) != SEQUENCE
2865- || !JUMP_P (XVECEXP (PATTERN (insn), 0, 0))
2866- || JUMP_LABEL (XVECEXP (PATTERN (insn), 0, 0)) != end_of_function_label)
2867+ || !JUMP_P (XVECEXP (PATTERN (insn), 0, 0)))
2868+ continue;
2869+
2870+ if (JUMP_LABEL (XVECEXP (PATTERN (insn), 0, 0)) == function_return_label)
2871+ {
2872+ kind = ret_rtx;
2873+ real_label = real_return_label;
2874+ }
2875+ else if (JUMP_LABEL (XVECEXP (PATTERN (insn), 0, 0))
2876+ == function_simple_return_label)
2877+ {
2878+ kind = simple_return_rtx;
2879+ real_label = real_simple_return_label;
2880+ }
2881+ else
2882 continue;
2883
2884 pat = PATTERN (insn);
2885@@ -3740,14 +3783,12 @@
2886
2887 /* If we can't make the jump into a RETURN, try to redirect it to the best
2888 RETURN and go on to the next insn. */
2889- if (! reorg_redirect_jump (jump_insn, NULL_RTX))
2890+ if (! reorg_redirect_jump (jump_insn, kind))
2891 {
2892 /* Make sure redirecting the jump will not invalidate the delay
2893 slot insns. */
2894- if (redirect_with_delay_slots_safe_p (jump_insn,
2895- real_return_label,
2896- insn))
2897- reorg_redirect_jump (jump_insn, real_return_label);
2898+ if (redirect_with_delay_slots_safe_p (jump_insn, real_label, insn))
2899+ reorg_redirect_jump (jump_insn, real_label);
2900 continue;
2901 }
2902
2903@@ -3787,7 +3828,7 @@
2904 RETURN, delete the SEQUENCE and output the individual insns,
2905 followed by the RETURN. Then set things up so we try to find
2906 insns for its delay slots, if it needs some. */
2907- if (GET_CODE (PATTERN (jump_insn)) == RETURN)
2908+ if (ANY_RETURN_P (PATTERN (jump_insn)))
2909 {
2910 rtx prev = PREV_INSN (insn);
2911
2912@@ -3804,13 +3845,16 @@
2913 else
2914 /* It is probably more efficient to keep this with its current
2915 delay slot as a branch to a RETURN. */
2916- reorg_redirect_jump (jump_insn, real_return_label);
2917+ reorg_redirect_jump (jump_insn, real_label);
2918 }
2919
2920 /* Now delete REAL_RETURN_LABEL if we never used it. Then try to fill any
2921 new delay slots we have created. */
2922- if (--LABEL_NUSES (real_return_label) == 0)
2923+ if (real_return_label != NULL_RTX && --LABEL_NUSES (real_return_label) == 0)
2924 delete_related_insns (real_return_label);
2925+ if (real_simple_return_label != NULL_RTX
2926+ && --LABEL_NUSES (real_simple_return_label) == 0)
2927+ delete_related_insns (real_simple_return_label);
2928
2929 fill_simple_delay_slots (1);
2930 fill_simple_delay_slots (0);
2931@@ -3878,7 +3922,7 @@
2932 init_resource_info (epilogue_insn);
2933
2934 /* Show we haven't computed an end-of-function label yet. */
2935- end_of_function_label = 0;
2936+ function_return_label = function_simple_return_label = NULL_RTX;
2937
2938 /* Initialize the statistics for this function. */
2939 memset (num_insns_needing_delays, 0, sizeof num_insns_needing_delays);
2940@@ -3900,11 +3944,23 @@
2941 /* If we made an end of function label, indicate that it is now
2942 safe to delete it by undoing our prior adjustment to LABEL_NUSES.
2943 If it is now unused, delete it. */
2944- if (end_of_function_label && --LABEL_NUSES (end_of_function_label) == 0)
2945- delete_related_insns (end_of_function_label);
2946+ if (function_return_label && --LABEL_NUSES (function_return_label) == 0)
2947+ delete_related_insns (function_return_label);
2948+ if (function_simple_return_label
2949+ && --LABEL_NUSES (function_simple_return_label) == 0)
2950+ delete_related_insns (function_simple_return_label);
2951
2952+#if defined HAVE_return || defined HAVE_simple_return
2953+ if (
2954 #ifdef HAVE_return
2955- if (HAVE_return && end_of_function_label != 0)
2956+ (HAVE_return && function_return_label != 0)
2957+#else
2958+ 0
2959+#endif
2960+#ifdef HAVE_simple_return
2961+ || (HAVE_simple_return && function_simple_return_label != 0)
2962+#endif
2963+ )
2964 make_return_insns (first);
2965 #endif
2966
2967
2968=== modified file 'gcc/resource.c'
2969--- old/gcc/resource.c 2009-11-25 10:55:54 +0000
2970+++ new/gcc/resource.c 2011-01-05 12:12:18 +0000
2971@@ -495,6 +495,8 @@
2972 || GET_CODE (PATTERN (this_jump_insn)) == RETURN)
2973 {
2974 next = JUMP_LABEL (this_jump_insn);
2975+ if (next && ANY_RETURN_P (next))
2976+ next = NULL_RTX;
2977 if (jump_insn == 0)
2978 {
2979 jump_insn = insn;
2980@@ -562,9 +564,10 @@
2981 AND_COMPL_HARD_REG_SET (scratch, needed.regs);
2982 AND_COMPL_HARD_REG_SET (fallthrough_res.regs, scratch);
2983
2984- find_dead_or_set_registers (JUMP_LABEL (this_jump_insn),
2985- &target_res, 0, jump_count,
2986- target_set, needed);
2987+ if (!ANY_RETURN_P (JUMP_LABEL (this_jump_insn)))
2988+ find_dead_or_set_registers (JUMP_LABEL (this_jump_insn),
2989+ &target_res, 0, jump_count,
2990+ target_set, needed);
2991 find_dead_or_set_registers (next,
2992 &fallthrough_res, 0, jump_count,
2993 set, needed);
2994@@ -1097,6 +1100,8 @@
2995 struct resources new_resources;
2996 rtx stop_insn = next_active_insn (jump_insn);
2997
2998+ if (jump_target && ANY_RETURN_P (jump_target))
2999+ jump_target = NULL_RTX;
3000 mark_target_live_regs (insns, next_active_insn (jump_target),
3001 &new_resources);
3002 CLEAR_RESOURCE (&set);
3003
3004=== modified file 'gcc/rtl.c'
3005--- old/gcc/rtl.c 2010-12-13 10:05:52 +0000
3006+++ new/gcc/rtl.c 2011-01-05 12:12:18 +0000
3007@@ -256,6 +256,8 @@
3008 case CODE_LABEL:
3009 case PC:
3010 case CC0:
3011+ case RETURN:
3012+ case SIMPLE_RETURN:
3013 case SCRATCH:
3014 /* SCRATCH must be shared because they represent distinct values. */
3015 return orig;
3016
3017=== modified file 'gcc/rtl.def'
3018--- old/gcc/rtl.def 2010-04-02 18:54:46 +0000
3019+++ new/gcc/rtl.def 2011-01-05 12:12:18 +0000
3020@@ -296,6 +296,10 @@
3021
3022 DEF_RTL_EXPR(RETURN, "return", "", RTX_EXTRA)
3023
3024+/* A plain return, to be used on paths that are reached without going
3025+ through the function prologue. */
3026+DEF_RTL_EXPR(SIMPLE_RETURN, "simple_return", "", RTX_EXTRA)
3027+
3028 /* Special for EH return from subroutine. */
3029
3030 DEF_RTL_EXPR(EH_RETURN, "eh_return", "", RTX_EXTRA)
3031
3032=== modified file 'gcc/rtl.h'
3033--- old/gcc/rtl.h 2010-11-16 22:17:17 +0000
3034+++ new/gcc/rtl.h 2011-01-05 12:12:18 +0000
3035@@ -411,6 +411,10 @@
3036 (JUMP_P (INSN) && (GET_CODE (PATTERN (INSN)) == ADDR_VEC || \
3037 GET_CODE (PATTERN (INSN)) == ADDR_DIFF_VEC))
3038
3039+/* Predicate yielding nonzero iff X is a return or simple_preturn. */
3040+#define ANY_RETURN_P(X) \
3041+ (GET_CODE (X) == RETURN || GET_CODE (X) == SIMPLE_RETURN)
3042+
3043 /* 1 if X is a unary operator. */
3044
3045 #define UNARY_P(X) \
3046@@ -1998,6 +2002,8 @@
3047 {
3048 GR_PC,
3049 GR_CC0,
3050+ GR_RETURN,
3051+ GR_SIMPLE_RETURN,
3052 GR_STACK_POINTER,
3053 GR_FRAME_POINTER,
3054 /* For register elimination to work properly these hard_frame_pointer_rtx,
3055@@ -2032,6 +2038,8 @@
3056
3057 /* Standard pieces of rtx, to be substituted directly into things. */
3058 #define pc_rtx (global_rtl[GR_PC])
3059+#define ret_rtx (global_rtl[GR_RETURN])
3060+#define simple_return_rtx (global_rtl[GR_SIMPLE_RETURN])
3061 #define cc0_rtx (global_rtl[GR_CC0])
3062
3063 /* All references to certain hard regs, except those created
3064
3065=== modified file 'gcc/rtlanal.c'
3066--- old/gcc/rtlanal.c 2010-11-16 22:17:17 +0000
3067+++ new/gcc/rtlanal.c 2011-01-05 12:12:18 +0000
3068@@ -2673,6 +2673,7 @@
3069
3070 if (JUMP_P (insn)
3071 && (label = JUMP_LABEL (insn)) != NULL_RTX
3072+ && !ANY_RETURN_P (label)
3073 && (table = next_active_insn (label)) != NULL_RTX
3074 && JUMP_TABLE_DATA_P (table))
3075 {
3076
3077=== modified file 'gcc/sched-int.h'
3078--- old/gcc/sched-int.h 2010-06-02 16:31:39 +0000
3079+++ new/gcc/sched-int.h 2011-01-05 12:12:18 +0000
3080@@ -199,7 +199,7 @@
3081
3082 extern void ebb_compute_jump_reg_dependencies (rtx, regset, regset, regset);
3083
3084-extern edge find_fallthru_edge (basic_block);
3085+extern edge find_fallthru_edge_from (basic_block);
3086
3087 extern void (* sched_init_only_bb) (basic_block, basic_block);
3088 extern basic_block (* sched_split_block) (basic_block, rtx);
3089
3090=== modified file 'gcc/sched-vis.c'
3091--- old/gcc/sched-vis.c 2009-11-25 10:55:54 +0000
3092+++ new/gcc/sched-vis.c 2011-01-05 12:12:18 +0000
3093@@ -549,6 +549,9 @@
3094 case RETURN:
3095 sprintf (buf, "return");
3096 break;
3097+ case SIMPLE_RETURN:
3098+ sprintf (buf, "simple_return");
3099+ break;
3100 case CALL:
3101 print_exp (buf, x, verbose);
3102 break;
3103
3104=== modified file 'gcc/sel-sched-ir.c'
3105--- old/gcc/sel-sched-ir.c 2010-08-31 11:52:01 +0000
3106+++ new/gcc/sel-sched-ir.c 2011-01-05 12:12:18 +0000
3107@@ -686,7 +686,7 @@
3108
3109 /* Find fallthrough edge. */
3110 gcc_assert (BLOCK_FOR_INSN (insn)->prev_bb);
3111- candidate = find_fallthru_edge (BLOCK_FOR_INSN (insn)->prev_bb);
3112+ candidate = find_fallthru_edge_from (BLOCK_FOR_INSN (insn)->prev_bb);
3113
3114 if (!candidate
3115 || (candidate->src != BLOCK_FOR_INSN (last_scheduled_insn)
3116
3117=== modified file 'gcc/sel-sched.c'
3118--- old/gcc/sel-sched.c 2010-11-12 15:47:38 +0000
3119+++ new/gcc/sel-sched.c 2011-01-05 12:12:18 +0000
3120@@ -617,8 +617,8 @@
3121 if (bb == BLOCK_FOR_INSN (succ))
3122 return true;
3123
3124- if (find_fallthru_edge (bb))
3125- bb = find_fallthru_edge (bb)->dest;
3126+ if (find_fallthru_edge_from (bb))
3127+ bb = find_fallthru_edge_from (bb)->dest;
3128 else
3129 return false;
3130
3131@@ -4911,7 +4911,7 @@
3132 next = PREV_INSN (insn);
3133 BND_TO (bnd) = insn;
3134
3135- ft_edge = find_fallthru_edge (block_from);
3136+ ft_edge = find_fallthru_edge_from (block_from);
3137 block_next = ft_edge->dest;
3138 /* There must be a fallthrough block (or where should go
3139 control flow in case of false jump predicate otherwise?). */
3140
3141=== modified file 'gcc/vec.h'
3142--- old/gcc/vec.h 2010-01-09 14:46:25 +0000
3143+++ new/gcc/vec.h 2011-01-05 12:12:18 +0000
3144@@ -188,6 +188,18 @@
3145
3146 #define VEC_iterate(T,V,I,P) (VEC_OP(T,base,iterate)(VEC_BASE(V),I,&(P)))
3147
3148+/* Convenience macro for forward iteration. */
3149+
3150+#define FOR_EACH_VEC_ELT(T, V, I, P) \
3151+ for (I = 0; VEC_iterate (T, (V), (I), (P)); ++(I))
3152+
3153+/* Convenience macro for reverse iteration. */
3154+
3155+#define FOR_EACH_VEC_ELT_REVERSE(T,V,I,P) \
3156+ for (I = VEC_length (T, (V)) - 1; \
3157+ VEC_iterate (T, (V), (I), (P)); \
3158+ (I)--)
3159+
3160 /* Allocate new vector.
3161 VEC(T,A) *VEC_T_A_alloc(int reserve);
3162
3163
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99457.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99457.patch
new file mode 100644
index 000000000..47b897d5e
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99457.patch
@@ -0,0 +1,4236 @@
12010-12-03 Yao Qi <yao@codesourcery.com>
2
3 * config/arm/arm-ldmstm.ml: Rewrite ldm/stm RTL patterns to fix
4 regressions.
5 * config/arm/ldmstm.md: Regenreate.
6
72010-12-03 Yao Qi <yao@codesourcery.com>
8
9 Backport from FSF mainline:
10
11 2010-08-02 Bernd Schmidt <bernds@codesourcery.com>
12
13 PR target/40457
14 * config/arm/arm.h (arm_regs_in_sequence): Declare.
15 * config/arm/arm-protos.h (emit_ldm_seq, emit_stm_seq,
16 load_multiple_sequence, store_multiple_sequence): Delete
17 declarations.
18 (arm_gen_load_multiple, arm_gen_store_multiple): Adjust
19 declarations.
20 * config/arm/ldmstm.md: New file.
21 * config/arm/arm.c (arm_regs_in_sequence): New array.
22 (load_multiple_sequence): Now static. New args SAVED_ORDER,
23 CHECK_REGS. All callers changed.
24 If SAVED_ORDER is nonnull, copy the computed order into it.
25 If CHECK_REGS is false, don't sort REGS. Handle Thumb mode.
26 (store_multiple_sequence): Now static. New args NOPS_TOTAL,
27 SAVED_ORDER, REG_RTXS and CHECK_REGS. All callers changed.
28 If SAVED_ORDER is nonnull, copy the computed order into it.
29 If CHECK_REGS is false, don't sort REGS. Set up REG_RTXS just
30 like REGS. Handle Thumb mode.
31 (arm_gen_load_multiple_1): New function, broken out of
32 arm_gen_load_multiple.
33 (arm_gen_store_multiple_1): New function, broken out of
34 arm_gen_store_multiple.
35 (arm_gen_multiple_op): New function, with code from
36 arm_gen_load_multiple and arm_gen_store_multiple moved here.
37 (arm_gen_load_multiple, arm_gen_store_multiple): Now just
38 wrappers around arm_gen_multiple_op. Remove argument UP, all callers
39 changed.
40 (gen_ldm_seq, gen_stm_seq, gen_const_stm_seq): New functions.
41 * config/arm/predicates.md (commutative_binary_operator): New.
42 (load_multiple_operation, store_multiple_operation): Handle more
43 variants of these patterns with different starting offsets. Handle
44 Thumb-1.
45 * config/arm/arm.md: Include "ldmstm.md".
46 (ldmsi_postinc4, ldmsi_postinc4_thumb1, ldmsi_postinc3, ldmsi_postinc2,
47 ldmsi4, ldmsi3, ldmsi2, stmsi_postinc4, stmsi_postinc4_thumb1,
48 stmsi_postinc3, stmsi_postinc2, stmsi4, stmsi3, stmsi2 and related
49 peepholes): Delete.
50 * config/arm/ldmstm.md: New file.
51 * config/arm/arm-ldmstm.ml: New file.
52
53 * config/arm/arm.c (arm_rtx_costs_1): Remove second clause from the
54 if statement which adds extra costs to frame-related expressions.
55
56 2010-05-06 Bernd Schmidt <bernds@codesourcery.com>
57
58 * config/arm/arm.h (MAX_LDM_STM_OPS): New macro.
59 * config/arm/arm.c (multiple_operation_profitable_p,
60 compute_offset_order): New static functions.
61 (load_multiple_sequence, store_multiple_sequence): Use them.
62 Replace constant 4 with MAX_LDM_STM_OPS. Compute order[0] from
63 memory offsets, not register numbers.
64 (emit_ldm_seq, emit_stm_seq): Replace constant 4 with MAX_LDM_STM_OPS.
65
66 2010-04-16 Bernd Schmidt <bernds@codesourcery.com>
67
68 * recog.h (struct recog_data): New field is_operator.
69 (struct insn_operand_data): New field is_operator.
70 * recog.c (extract_insn): Set recog_data.is_operator.
71 * genoutput.c (output_operand_data): Emit code to set the
72 is_operator field.
73 * reload.c (find_reloads): Use it rather than testing for an
74 empty constraint string.
75
76=== added file 'gcc/config/arm/arm-ldmstm.ml'
77--- old/gcc/config/arm/arm-ldmstm.ml 1970-01-01 00:00:00 +0000
78+++ new/gcc/config/arm/arm-ldmstm.ml 2010-11-16 13:08:47 +0000
79@@ -0,0 +1,333 @@
80+(* Auto-generate ARM ldm/stm patterns
81+ Copyright (C) 2010 Free Software Foundation, Inc.
82+ Contributed by CodeSourcery.
83+
84+ This file is part of GCC.
85+
86+ GCC is free software; you can redistribute it and/or modify it under
87+ the terms of the GNU General Public License as published by the Free
88+ Software Foundation; either version 3, or (at your option) any later
89+ version.
90+
91+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
92+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
93+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
94+ for more details.
95+
96+ You should have received a copy of the GNU General Public License
97+ along with GCC; see the file COPYING3. If not see
98+ <http://www.gnu.org/licenses/>.
99+
100+ This is an O'Caml program. The O'Caml compiler is available from:
101+
102+ http://caml.inria.fr/
103+
104+ Or from your favourite OS's friendly packaging system. Tested with version
105+ 3.09.2, though other versions will probably work too.
106+
107+ Run with:
108+ ocaml arm-ldmstm.ml >/path/to/gcc/config/arm/ldmstm.ml
109+*)
110+
111+type amode = IA | IB | DA | DB
112+
113+type optype = IN | OUT | INOUT
114+
115+let rec string_of_addrmode addrmode =
116+ match addrmode with
117+ IA -> "ia" | IB -> "ib" | DA -> "da" | DB -> "db"
118+
119+let rec initial_offset addrmode nregs =
120+ match addrmode with
121+ IA -> 0
122+ | IB -> 4
123+ | DA -> -4 * nregs + 4
124+ | DB -> -4 * nregs
125+
126+let rec final_offset addrmode nregs =
127+ match addrmode with
128+ IA -> nregs * 4
129+ | IB -> nregs * 4
130+ | DA -> -4 * nregs
131+ | DB -> -4 * nregs
132+
133+let constr thumb =
134+ if thumb then "l" else "rk"
135+
136+let inout_constr op_type =
137+ match op_type with
138+ OUT -> "="
139+ | INOUT -> "+&"
140+ | IN -> ""
141+
142+let destreg nregs first op_type thumb =
143+ if not first then
144+ Printf.sprintf "(match_dup %d)" (nregs)
145+ else
146+ Printf.sprintf ("(match_operand:SI %d \"s_register_operand\" \"%s%s\")")
147+ (nregs) (inout_constr op_type) (constr thumb)
148+
149+let write_ldm_set thumb nregs offset opnr first =
150+ let indent = " " in
151+ Printf.printf "%s" (if first then " [" else indent);
152+ Printf.printf "(set (match_operand:SI %d \"arm_hard_register_operand\" \"\")\n" opnr;
153+ Printf.printf "%s (mem:SI " indent;
154+ begin if offset != 0 then Printf.printf "(plus:SI " end;
155+ Printf.printf "%s" (destreg nregs first IN thumb);
156+ begin if offset != 0 then Printf.printf "\n%s (const_int %d))" indent offset end;
157+ Printf.printf "))"
158+
159+let write_stm_set thumb nregs offset opnr first =
160+ let indent = " " in
161+ Printf.printf "%s" (if first then " [" else indent);
162+ Printf.printf "(set (mem:SI ";
163+ begin if offset != 0 then Printf.printf "(plus:SI " end;
164+ Printf.printf "%s" (destreg nregs first IN thumb);
165+ begin if offset != 0 then Printf.printf " (const_int %d))" offset end;
166+ Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_register_operand\" \"\"))" indent opnr
167+
168+let write_ldm_peep_set extra_indent nregs opnr first =
169+ let indent = " " ^ extra_indent in
170+ Printf.printf "%s" (if first then extra_indent ^ " [" else indent);
171+ Printf.printf "(set (match_operand:SI %d \"s_register_operand\" \"\")\n" opnr;
172+ Printf.printf "%s (match_operand:SI %d \"memory_operand\" \"\"))" indent (nregs + opnr)
173+
174+let write_stm_peep_set extra_indent nregs opnr first =
175+ let indent = " " ^ extra_indent in
176+ Printf.printf "%s" (if first then extra_indent ^ " [" else indent);
177+ Printf.printf "(set (match_operand:SI %d \"memory_operand\" \"\")\n" (nregs + opnr);
178+ Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\"))" indent opnr
179+
180+let write_any_load optype nregs opnr first =
181+ let indent = " " in
182+ Printf.printf "%s" (if first then " [" else indent);
183+ Printf.printf "(set (match_operand:SI %d \"s_register_operand\" \"\")\n" opnr;
184+ Printf.printf "%s (match_operand:SI %d \"%s\" \"\"))" indent (nregs * 2 + opnr) optype
185+
186+let write_const_store nregs opnr first =
187+ let indent = " " in
188+ Printf.printf "%s(set (match_operand:SI %d \"memory_operand\" \"\")\n" indent (nregs + opnr);
189+ Printf.printf "%s (match_dup %d))" indent opnr
190+
191+let write_const_stm_peep_set nregs opnr first =
192+ write_any_load "const_int_operand" nregs opnr first;
193+ Printf.printf "\n";
194+ write_const_store nregs opnr false
195+
196+
197+let rec write_pat_sets func opnr offset first n_left =
198+ func offset opnr first;
199+ begin
200+ if n_left > 1 then begin
201+ Printf.printf "\n";
202+ write_pat_sets func (opnr + 1) (offset + 4) false (n_left - 1);
203+ end else
204+ Printf.printf "]"
205+ end
206+
207+let rec write_peep_sets func opnr first n_left =
208+ func opnr first;
209+ begin
210+ if n_left > 1 then begin
211+ Printf.printf "\n";
212+ write_peep_sets func (opnr + 1) false (n_left - 1);
213+ end
214+ end
215+
216+let can_thumb addrmode update is_store =
217+ match addrmode, update, is_store with
218+ (* Thumb1 mode only supports IA with update. However, for LDMIA,
219+ if the address register also appears in the list of loaded
220+ registers, the loaded value is stored, hence the RTL pattern
221+ to describe such an insn does not have an update. We check
222+ in the match_parallel predicate that the condition described
223+ above is met. *)
224+ IA, _, false -> true
225+ | IA, true, true -> true
226+ | _ -> false
227+
228+let target addrmode thumb =
229+ match addrmode, thumb with
230+ IA, true -> "TARGET_THUMB1"
231+ | IA, false -> "TARGET_32BIT"
232+ | DB, false -> "TARGET_32BIT"
233+ | _, false -> "TARGET_ARM"
234+
235+let write_pattern_1 name ls addrmode nregs write_set_fn update thumb =
236+ let astr = string_of_addrmode addrmode in
237+ Printf.printf "(define_insn \"*%s%s%d_%s%s\"\n"
238+ (if thumb then "thumb_" else "") name nregs astr
239+ (if update then "_update" else "");
240+ Printf.printf " [(match_parallel 0 \"%s_multiple_operation\"\n" ls;
241+ begin
242+ if update then begin
243+ Printf.printf " [(set %s\n (plus:SI "
244+ (destreg 1 true OUT thumb); (*destreg 2 true IN thumb*)
245+ Printf.printf "(match_operand:SI 2 \"s_register_operand\" \"1\")";
246+ Printf.printf " (const_int %d)))\n"
247+ (final_offset addrmode nregs)
248+ end
249+ end;
250+ write_pat_sets
251+ (write_set_fn thumb (if update then 2 else 1)) (if update then 3 else 2)
252+ (initial_offset addrmode nregs)
253+ (not update) nregs;
254+ Printf.printf ")]\n \"%s && XVECLEN (operands[0], 0) == %d\"\n"
255+ (target addrmode thumb)
256+ (if update then nregs + 1 else nregs);
257+ Printf.printf " \"%s%%(%s%%)\\t%%%d%s, {"
258+ name astr (1) (if update then "!" else "");
259+ for n = 1 to nregs; do
260+ Printf.printf "%%%d%s" (n+(if update then 2 else 1)) (if n < nregs then ", " else "")
261+ done;
262+ Printf.printf "}\"\n";
263+ Printf.printf " [(set_attr \"type\" \"%s%d\")" ls nregs;
264+ begin if not thumb then
265+ Printf.printf "\n (set_attr \"predicable\" \"yes\")";
266+ end;
267+ Printf.printf "])\n\n"
268+
269+let write_ldm_pattern addrmode nregs update =
270+ write_pattern_1 "ldm" "load" addrmode nregs write_ldm_set update false;
271+ begin if can_thumb addrmode update false then
272+ write_pattern_1 "ldm" "load" addrmode nregs write_ldm_set update true;
273+ end
274+
275+let write_stm_pattern addrmode nregs update =
276+ write_pattern_1 "stm" "store" addrmode nregs write_stm_set update false;
277+ begin if can_thumb addrmode update true then
278+ write_pattern_1 "stm" "store" addrmode nregs write_stm_set update true;
279+ end
280+
281+let write_ldm_commutative_peephole thumb =
282+ let nregs = 2 in
283+ Printf.printf "(define_peephole2\n";
284+ write_peep_sets (write_ldm_peep_set "" nregs) 0 true nregs;
285+ let indent = " " in
286+ if thumb then begin
287+ Printf.printf "\n%s(set (match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2);
288+ Printf.printf "%s (match_operator:SI %d \"commutative_binary_operator\"\n" indent (nregs * 2 + 1);
289+ Printf.printf "%s [(match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2 + 2);
290+ Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\")]))]\n" indent (nregs * 2 + 3)
291+ end else begin
292+ Printf.printf "\n%s(parallel\n" indent;
293+ Printf.printf "%s [(set (match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2);
294+ Printf.printf "%s (match_operator:SI %d \"commutative_binary_operator\"\n" indent (nregs * 2 + 1);
295+ Printf.printf "%s [(match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2 + 2);
296+ Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\")]))\n" indent (nregs * 2 + 3);
297+ Printf.printf "%s (clobber (reg:CC CC_REGNUM))])]\n" indent
298+ end;
299+ Printf.printf " \"(((operands[%d] == operands[0] && operands[%d] == operands[1])\n" (nregs * 2 + 2) (nregs * 2 + 3);
300+ Printf.printf " || (operands[%d] == operands[0] && operands[%d] == operands[1]))\n" (nregs * 2 + 3) (nregs * 2 + 2);
301+ Printf.printf " && peep2_reg_dead_p (%d, operands[0]) && peep2_reg_dead_p (%d, operands[1]))\"\n" (nregs + 1) (nregs + 1);
302+ begin
303+ if thumb then
304+ Printf.printf " [(set (match_dup %d) (match_op_dup %d [(match_dup %d) (match_dup %d)]))]\n"
305+ (nregs * 2) (nregs * 2 + 1) (nregs * 2 + 2) (nregs * 2 + 3)
306+ else begin
307+ Printf.printf " [(parallel\n";
308+ Printf.printf " [(set (match_dup %d) (match_op_dup %d [(match_dup %d) (match_dup %d)]))\n"
309+ (nregs * 2) (nregs * 2 + 1) (nregs * 2 + 2) (nregs * 2 + 3);
310+ Printf.printf " (clobber (reg:CC CC_REGNUM))])]\n"
311+ end
312+ end;
313+ Printf.printf "{\n if (!gen_ldm_seq (operands, %d, true))\n FAIL;\n" nregs;
314+ Printf.printf "})\n\n"
315+
316+let write_ldm_peephole nregs =
317+ Printf.printf "(define_peephole2\n";
318+ write_peep_sets (write_ldm_peep_set "" nregs) 0 true nregs;
319+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
320+ Printf.printf " if (gen_ldm_seq (operands, %d, false))\n DONE;\n else\n FAIL;\n})\n\n" nregs
321+
322+let write_ldm_peephole_b nregs =
323+ if nregs > 2 then begin
324+ Printf.printf "(define_peephole2\n";
325+ write_ldm_peep_set "" nregs 0 true;
326+ Printf.printf "\n (parallel\n";
327+ write_peep_sets (write_ldm_peep_set " " nregs) 1 true (nregs - 1);
328+ Printf.printf "])]\n \"\"\n [(const_int 0)]\n{\n";
329+ Printf.printf " if (gen_ldm_seq (operands, %d, false))\n DONE;\n else\n FAIL;\n})\n\n" nregs
330+ end
331+
332+let write_stm_peephole nregs =
333+ Printf.printf "(define_peephole2\n";
334+ write_peep_sets (write_stm_peep_set "" nregs) 0 true nregs;
335+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
336+ Printf.printf " if (gen_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
337+
338+let write_stm_peephole_b nregs =
339+ if nregs > 2 then begin
340+ Printf.printf "(define_peephole2\n";
341+ write_stm_peep_set "" nregs 0 true;
342+ Printf.printf "\n (parallel\n";
343+ write_peep_sets (write_stm_peep_set "" nregs) 1 true (nregs - 1);
344+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
345+ Printf.printf " if (gen_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
346+ end
347+
348+let write_const_stm_peephole_a nregs =
349+ Printf.printf "(define_peephole2\n";
350+ write_peep_sets (write_const_stm_peep_set nregs) 0 true nregs;
351+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
352+ Printf.printf " if (gen_const_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
353+
354+let write_const_stm_peephole_b nregs =
355+ Printf.printf "(define_peephole2\n";
356+ write_peep_sets (write_any_load "const_int_operand" nregs) 0 true nregs;
357+ Printf.printf "\n";
358+ write_peep_sets (write_const_store nregs) 0 false nregs;
359+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
360+ Printf.printf " if (gen_const_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
361+
362+let patterns () =
363+ let addrmodes = [ IA; IB; DA; DB ] in
364+ let sizes = [ 4; 3; 2] in
365+ List.iter
366+ (fun n ->
367+ List.iter
368+ (fun addrmode ->
369+ write_ldm_pattern addrmode n false;
370+ write_ldm_pattern addrmode n true;
371+ write_stm_pattern addrmode n false;
372+ write_stm_pattern addrmode n true)
373+ addrmodes;
374+ write_ldm_peephole n;
375+ write_ldm_peephole_b n;
376+ write_const_stm_peephole_a n;
377+ write_const_stm_peephole_b n;
378+ write_stm_peephole n;)
379+ sizes;
380+ write_ldm_commutative_peephole false;
381+ write_ldm_commutative_peephole true
382+
383+let print_lines = List.iter (fun s -> Format.printf "%s@\n" s)
384+
385+(* Do it. *)
386+
387+let _ =
388+ print_lines [
389+"/* ARM ldm/stm instruction patterns. This file was automatically generated";
390+" using arm-ldmstm.ml. Please do not edit manually.";
391+"";
392+" Copyright (C) 2010 Free Software Foundation, Inc.";
393+" Contributed by CodeSourcery.";
394+"";
395+" This file is part of GCC.";
396+"";
397+" GCC is free software; you can redistribute it and/or modify it";
398+" under the terms of the GNU General Public License as published";
399+" by the Free Software Foundation; either version 3, or (at your";
400+" option) any later version.";
401+"";
402+" GCC is distributed in the hope that it will be useful, but WITHOUT";
403+" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY";
404+" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public";
405+" License for more details.";
406+"";
407+" You should have received a copy of the GNU General Public License and";
408+" a copy of the GCC Runtime Library Exception along with this program;";
409+" see the files COPYING3 and COPYING.RUNTIME respectively. If not, see";
410+" <http://www.gnu.org/licenses/>. */";
411+""];
412+ patterns ();
413
414=== modified file 'gcc/config/arm/arm-protos.h'
415--- old/gcc/config/arm/arm-protos.h 2011-01-05 12:12:18 +0000
416+++ new/gcc/config/arm/arm-protos.h 2011-01-05 18:20:37 +0000
417@@ -100,14 +100,11 @@
418 extern int label_mentioned_p (rtx);
419 extern RTX_CODE minmax_code (rtx);
420 extern int adjacent_mem_locations (rtx, rtx);
421-extern int load_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
422-extern const char *emit_ldm_seq (rtx *, int);
423-extern int store_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
424-extern const char * emit_stm_seq (rtx *, int);
425-extern rtx arm_gen_load_multiple (int, int, rtx, int, int,
426- rtx, HOST_WIDE_INT *);
427-extern rtx arm_gen_store_multiple (int, int, rtx, int, int,
428- rtx, HOST_WIDE_INT *);
429+extern bool gen_ldm_seq (rtx *, int, bool);
430+extern bool gen_stm_seq (rtx *, int);
431+extern bool gen_const_stm_seq (rtx *, int);
432+extern rtx arm_gen_load_multiple (int *, int, rtx, int, rtx, HOST_WIDE_INT *);
433+extern rtx arm_gen_store_multiple (int *, int, rtx, int, rtx, HOST_WIDE_INT *);
434 extern int arm_gen_movmemqi (rtx *);
435 extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx);
436 extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx,
437
438=== modified file 'gcc/config/arm/arm.c'
439--- old/gcc/config/arm/arm.c 2011-01-05 12:12:18 +0000
440+++ new/gcc/config/arm/arm.c 2011-01-05 18:20:37 +0000
441@@ -753,6 +753,12 @@
442 "hi", "ls", "ge", "lt", "gt", "le", "al", "nv"
443 };
444
445+/* The register numbers in sequence, for passing to arm_gen_load_multiple. */
446+int arm_regs_in_sequence[] =
447+{
448+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
449+};
450+
451 #define ARM_LSL_NAME (TARGET_UNIFIED_ASM ? "lsl" : "asl")
452 #define streq(string1, string2) (strcmp (string1, string2) == 0)
453
454@@ -9680,142 +9686,16 @@
455 return 0;
456 }
457
458-int
459-load_multiple_sequence (rtx *operands, int nops, int *regs, int *base,
460- HOST_WIDE_INT *load_offset)
461-{
462- int unsorted_regs[4];
463- HOST_WIDE_INT unsorted_offsets[4];
464- int order[4];
465- int base_reg = -1;
466- int i;
467-
468- if (low_irq_latency)
469- return 0;
470-
471- /* Can only handle 2, 3, or 4 insns at present,
472- though could be easily extended if required. */
473- gcc_assert (nops >= 2 && nops <= 4);
474-
475- memset (order, 0, 4 * sizeof (int));
476-
477- /* Loop over the operands and check that the memory references are
478- suitable (i.e. immediate offsets from the same base register). At
479- the same time, extract the target register, and the memory
480- offsets. */
481- for (i = 0; i < nops; i++)
482- {
483- rtx reg;
484- rtx offset;
485-
486- /* Convert a subreg of a mem into the mem itself. */
487- if (GET_CODE (operands[nops + i]) == SUBREG)
488- operands[nops + i] = alter_subreg (operands + (nops + i));
489-
490- gcc_assert (GET_CODE (operands[nops + i]) == MEM);
491-
492- /* Don't reorder volatile memory references; it doesn't seem worth
493- looking for the case where the order is ok anyway. */
494- if (MEM_VOLATILE_P (operands[nops + i]))
495- return 0;
496-
497- offset = const0_rtx;
498-
499- if ((GET_CODE (reg = XEXP (operands[nops + i], 0)) == REG
500- || (GET_CODE (reg) == SUBREG
501- && GET_CODE (reg = SUBREG_REG (reg)) == REG))
502- || (GET_CODE (XEXP (operands[nops + i], 0)) == PLUS
503- && ((GET_CODE (reg = XEXP (XEXP (operands[nops + i], 0), 0))
504- == REG)
505- || (GET_CODE (reg) == SUBREG
506- && GET_CODE (reg = SUBREG_REG (reg)) == REG))
507- && (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1))
508- == CONST_INT)))
509- {
510- if (i == 0)
511- {
512- base_reg = REGNO (reg);
513- unsorted_regs[0] = (GET_CODE (operands[i]) == REG
514- ? REGNO (operands[i])
515- : REGNO (SUBREG_REG (operands[i])));
516- order[0] = 0;
517- }
518- else
519- {
520- if (base_reg != (int) REGNO (reg))
521- /* Not addressed from the same base register. */
522- return 0;
523-
524- unsorted_regs[i] = (GET_CODE (operands[i]) == REG
525- ? REGNO (operands[i])
526- : REGNO (SUBREG_REG (operands[i])));
527- if (unsorted_regs[i] < unsorted_regs[order[0]])
528- order[0] = i;
529- }
530-
531- /* If it isn't an integer register, or if it overwrites the
532- base register but isn't the last insn in the list, then
533- we can't do this. */
534- if (unsorted_regs[i] < 0 || unsorted_regs[i] > 14
535- || (i != nops - 1 && unsorted_regs[i] == base_reg))
536- return 0;
537-
538- unsorted_offsets[i] = INTVAL (offset);
539- }
540- else
541- /* Not a suitable memory address. */
542- return 0;
543- }
544-
545- /* All the useful information has now been extracted from the
546- operands into unsorted_regs and unsorted_offsets; additionally,
547- order[0] has been set to the lowest numbered register in the
548- list. Sort the registers into order, and check that the memory
549- offsets are ascending and adjacent. */
550-
551- for (i = 1; i < nops; i++)
552- {
553- int j;
554-
555- order[i] = order[i - 1];
556- for (j = 0; j < nops; j++)
557- if (unsorted_regs[j] > unsorted_regs[order[i - 1]]
558- && (order[i] == order[i - 1]
559- || unsorted_regs[j] < unsorted_regs[order[i]]))
560- order[i] = j;
561-
562- /* Have we found a suitable register? if not, one must be used more
563- than once. */
564- if (order[i] == order[i - 1])
565- return 0;
566-
567- /* Is the memory address adjacent and ascending? */
568- if (unsorted_offsets[order[i]] != unsorted_offsets[order[i - 1]] + 4)
569- return 0;
570- }
571-
572- if (base)
573- {
574- *base = base_reg;
575-
576- for (i = 0; i < nops; i++)
577- regs[i] = unsorted_regs[order[i]];
578-
579- *load_offset = unsorted_offsets[order[0]];
580- }
581-
582- if (unsorted_offsets[order[0]] == 0)
583- return 1; /* ldmia */
584-
585- if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
586- return 2; /* ldmib */
587-
588- if (TARGET_ARM && unsorted_offsets[order[nops - 1]] == 0)
589- return 3; /* ldmda */
590-
591- if (unsorted_offsets[order[nops - 1]] == -4)
592- return 4; /* ldmdb */
593-
594+
595+/* Return true iff it would be profitable to turn a sequence of NOPS loads
596+ or stores (depending on IS_STORE) into a load-multiple or store-multiple
597+ instruction. ADD_OFFSET is nonzero if the base address register needs
598+ to be modified with an add instruction before we can use it. */
599+
600+static bool
601+multiple_operation_profitable_p (bool is_store ATTRIBUTE_UNUSED,
602+ int nops, HOST_WIDE_INT add_offset)
603+ {
604 /* For ARM8,9 & StrongARM, 2 ldr instructions are faster than an ldm
605 if the offset isn't small enough. The reason 2 ldrs are faster
606 is because these ARMs are able to do more than one cache access
607@@ -9845,91 +9725,239 @@
608 We cheat here and test 'arm_ld_sched' which we currently know to
609 only be true for the ARM8, ARM9 and StrongARM. If this ever
610 changes, then the test below needs to be reworked. */
611- if (nops == 2 && arm_ld_sched)
612+ if (nops == 2 && arm_ld_sched && add_offset != 0)
613+ return false;
614+
615+ return true;
616+}
617+
618+/* Subroutine of load_multiple_sequence and store_multiple_sequence.
619+ Given an array of UNSORTED_OFFSETS, of which there are NOPS, compute
620+ an array ORDER which describes the sequence to use when accessing the
621+ offsets that produces an ascending order. In this sequence, each
622+ offset must be larger by exactly 4 than the previous one. ORDER[0]
623+ must have been filled in with the lowest offset by the caller.
624+ If UNSORTED_REGS is nonnull, it is an array of register numbers that
625+ we use to verify that ORDER produces an ascending order of registers.
626+ Return true if it was possible to construct such an order, false if
627+ not. */
628+
629+static bool
630+compute_offset_order (int nops, HOST_WIDE_INT *unsorted_offsets, int *order,
631+ int *unsorted_regs)
632+{
633+ int i;
634+ for (i = 1; i < nops; i++)
635+ {
636+ int j;
637+
638+ order[i] = order[i - 1];
639+ for (j = 0; j < nops; j++)
640+ if (unsorted_offsets[j] == unsorted_offsets[order[i - 1]] + 4)
641+ {
642+ /* We must find exactly one offset that is higher than the
643+ previous one by 4. */
644+ if (order[i] != order[i - 1])
645+ return false;
646+ order[i] = j;
647+ }
648+ if (order[i] == order[i - 1])
649+ return false;
650+ /* The register numbers must be ascending. */
651+ if (unsorted_regs != NULL
652+ && unsorted_regs[order[i]] <= unsorted_regs[order[i - 1]])
653+ return false;
654+ }
655+ return true;
656+}
657+
658+/* Used to determine in a peephole whether a sequence of load
659+ instructions can be changed into a load-multiple instruction.
660+ NOPS is the number of separate load instructions we are examining. The
661+ first NOPS entries in OPERANDS are the destination registers, the
662+ next NOPS entries are memory operands. If this function is
663+ successful, *BASE is set to the common base register of the memory
664+ accesses; *LOAD_OFFSET is set to the first memory location's offset
665+ from that base register.
666+ REGS is an array filled in with the destination register numbers.
667+ SAVED_ORDER (if nonnull), is an array filled in with an order that maps
668+ insn numbers to to an ascending order of stores. If CHECK_REGS is true,
669+ the sequence of registers in REGS matches the loads from ascending memory
670+ locations, and the function verifies that the register numbers are
671+ themselves ascending. If CHECK_REGS is false, the register numbers
672+ are stored in the order they are found in the operands. */
673+static int
674+load_multiple_sequence (rtx *operands, int nops, int *regs, int *saved_order,
675+ int *base, HOST_WIDE_INT *load_offset, bool check_regs)
676+{
677+ int unsorted_regs[MAX_LDM_STM_OPS];
678+ HOST_WIDE_INT unsorted_offsets[MAX_LDM_STM_OPS];
679+ int order[MAX_LDM_STM_OPS];
680+ rtx base_reg_rtx = NULL;
681+ int base_reg = -1;
682+ int i, ldm_case;
683+
684+ if (low_irq_latency)
685 return 0;
686
687- /* Can't do it without setting up the offset, only do this if it takes
688- no more than one insn. */
689- return (const_ok_for_arm (unsorted_offsets[order[0]])
690- || const_ok_for_arm (-unsorted_offsets[order[0]])) ? 5 : 0;
691-}
692-
693-const char *
694-emit_ldm_seq (rtx *operands, int nops)
695-{
696- int regs[4];
697- int base_reg;
698- HOST_WIDE_INT offset;
699- char buf[100];
700- int i;
701-
702- switch (load_multiple_sequence (operands, nops, regs, &base_reg, &offset))
703+ /* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be
704+ easily extended if required. */
705+ gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS);
706+
707+ memset (order, 0, MAX_LDM_STM_OPS * sizeof (int));
708+
709+ /* Loop over the operands and check that the memory references are
710+ suitable (i.e. immediate offsets from the same base register). At
711+ the same time, extract the target register, and the memory
712+ offsets. */
713+ for (i = 0; i < nops; i++)
714 {
715- case 1:
716- strcpy (buf, "ldm%(ia%)\t");
717- break;
718-
719- case 2:
720- strcpy (buf, "ldm%(ib%)\t");
721- break;
722-
723- case 3:
724- strcpy (buf, "ldm%(da%)\t");
725- break;
726-
727- case 4:
728- strcpy (buf, "ldm%(db%)\t");
729- break;
730-
731- case 5:
732- if (offset >= 0)
733- sprintf (buf, "add%%?\t%s%s, %s%s, #%ld", REGISTER_PREFIX,
734- reg_names[regs[0]], REGISTER_PREFIX, reg_names[base_reg],
735- (long) offset);
736+ rtx reg;
737+ rtx offset;
738+
739+ /* Convert a subreg of a mem into the mem itself. */
740+ if (GET_CODE (operands[nops + i]) == SUBREG)
741+ operands[nops + i] = alter_subreg (operands + (nops + i));
742+
743+ gcc_assert (GET_CODE (operands[nops + i]) == MEM);
744+
745+ /* Don't reorder volatile memory references; it doesn't seem worth
746+ looking for the case where the order is ok anyway. */
747+ if (MEM_VOLATILE_P (operands[nops + i]))
748+ return 0;
749+
750+ offset = const0_rtx;
751+
752+ if ((GET_CODE (reg = XEXP (operands[nops + i], 0)) == REG
753+ || (GET_CODE (reg) == SUBREG
754+ && GET_CODE (reg = SUBREG_REG (reg)) == REG))
755+ || (GET_CODE (XEXP (operands[nops + i], 0)) == PLUS
756+ && ((GET_CODE (reg = XEXP (XEXP (operands[nops + i], 0), 0))
757+ == REG)
758+ || (GET_CODE (reg) == SUBREG
759+ && GET_CODE (reg = SUBREG_REG (reg)) == REG))
760+ && (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1))
761+ == CONST_INT)))
762+ {
763+ if (i == 0)
764+ {
765+ base_reg = REGNO (reg);
766+ base_reg_rtx = reg;
767+ if (TARGET_THUMB1 && base_reg > LAST_LO_REGNUM)
768+ return 0;
769+ }
770+ else if (base_reg != (int) REGNO (reg))
771+ /* Not addressed from the same base register. */
772+ return 0;
773+
774+ unsorted_regs[i] = (GET_CODE (operands[i]) == REG
775+ ? REGNO (operands[i])
776+ : REGNO (SUBREG_REG (operands[i])));
777+
778+ /* If it isn't an integer register, or if it overwrites the
779+ base register but isn't the last insn in the list, then
780+ we can't do this. */
781+ if (unsorted_regs[i] < 0
782+ || (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM)
783+ || unsorted_regs[i] > 14
784+ || (i != nops - 1 && unsorted_regs[i] == base_reg))
785+ return 0;
786+
787+ unsorted_offsets[i] = INTVAL (offset);
788+ if (i == 0 || unsorted_offsets[i] < unsorted_offsets[order[0]])
789+ order[0] = i;
790+ }
791 else
792- sprintf (buf, "sub%%?\t%s%s, %s%s, #%ld", REGISTER_PREFIX,
793- reg_names[regs[0]], REGISTER_PREFIX, reg_names[base_reg],
794- (long) -offset);
795- output_asm_insn (buf, operands);
796- base_reg = regs[0];
797- strcpy (buf, "ldm%(ia%)\t");
798- break;
799-
800- default:
801- gcc_unreachable ();
802- }
803-
804- sprintf (buf + strlen (buf), "%s%s, {%s%s", REGISTER_PREFIX,
805- reg_names[base_reg], REGISTER_PREFIX, reg_names[regs[0]]);
806-
807- for (i = 1; i < nops; i++)
808- sprintf (buf + strlen (buf), ", %s%s", REGISTER_PREFIX,
809- reg_names[regs[i]]);
810-
811- strcat (buf, "}\t%@ phole ldm");
812-
813- output_asm_insn (buf, operands);
814- return "";
815+ /* Not a suitable memory address. */
816+ return 0;
817+ }
818+
819+ /* All the useful information has now been extracted from the
820+ operands into unsorted_regs and unsorted_offsets; additionally,
821+ order[0] has been set to the lowest offset in the list. Sort
822+ the offsets into order, verifying that they are adjacent, and
823+ check that the register numbers are ascending. */
824+ if (!compute_offset_order (nops, unsorted_offsets, order,
825+ check_regs ? unsorted_regs : NULL))
826+ return 0;
827+
828+ if (saved_order)
829+ memcpy (saved_order, order, sizeof order);
830+
831+ if (base)
832+ {
833+ *base = base_reg;
834+
835+ for (i = 0; i < nops; i++)
836+ regs[i] = unsorted_regs[check_regs ? order[i] : i];
837+
838+ *load_offset = unsorted_offsets[order[0]];
839+ }
840+
841+ if (TARGET_THUMB1
842+ && !peep2_reg_dead_p (nops, base_reg_rtx))
843+ return 0;
844+
845+ if (unsorted_offsets[order[0]] == 0)
846+ ldm_case = 1; /* ldmia */
847+ else if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
848+ ldm_case = 2; /* ldmib */
849+ else if (TARGET_ARM && unsorted_offsets[order[nops - 1]] == 0)
850+ ldm_case = 3; /* ldmda */
851+ else if (TARGET_32BIT && unsorted_offsets[order[nops - 1]] == -4)
852+ ldm_case = 4; /* ldmdb */
853+ else if (const_ok_for_arm (unsorted_offsets[order[0]])
854+ || const_ok_for_arm (-unsorted_offsets[order[0]]))
855+ ldm_case = 5;
856+ else
857+ return 0;
858+
859+ if (!multiple_operation_profitable_p (false, nops,
860+ ldm_case == 5
861+ ? unsorted_offsets[order[0]] : 0))
862+ return 0;
863+
864+ return ldm_case;
865 }
866
867-int
868-store_multiple_sequence (rtx *operands, int nops, int *regs, int *base,
869- HOST_WIDE_INT * load_offset)
870+/* Used to determine in a peephole whether a sequence of store instructions can
871+ be changed into a store-multiple instruction.
872+ NOPS is the number of separate store instructions we are examining.
873+ NOPS_TOTAL is the total number of instructions recognized by the peephole
874+ pattern.
875+ The first NOPS entries in OPERANDS are the source registers, the next
876+ NOPS entries are memory operands. If this function is successful, *BASE is
877+ set to the common base register of the memory accesses; *LOAD_OFFSET is set
878+ to the first memory location's offset from that base register. REGS is an
879+ array filled in with the source register numbers, REG_RTXS (if nonnull) is
880+ likewise filled with the corresponding rtx's.
881+ SAVED_ORDER (if nonnull), is an array filled in with an order that maps insn
882+ numbers to to an ascending order of stores.
883+ If CHECK_REGS is true, the sequence of registers in *REGS matches the stores
884+ from ascending memory locations, and the function verifies that the register
885+ numbers are themselves ascending. If CHECK_REGS is false, the register
886+ numbers are stored in the order they are found in the operands. */
887+static int
888+store_multiple_sequence (rtx *operands, int nops, int nops_total,
889+ int *regs, rtx *reg_rtxs, int *saved_order, int *base,
890+ HOST_WIDE_INT *load_offset, bool check_regs)
891 {
892- int unsorted_regs[4];
893- HOST_WIDE_INT unsorted_offsets[4];
894- int order[4];
895+ int unsorted_regs[MAX_LDM_STM_OPS];
896+ rtx unsorted_reg_rtxs[MAX_LDM_STM_OPS];
897+ HOST_WIDE_INT unsorted_offsets[MAX_LDM_STM_OPS];
898+ int order[MAX_LDM_STM_OPS];
899 int base_reg = -1;
900- int i;
901+ rtx base_reg_rtx = NULL;
902+ int i, stm_case;
903
904 if (low_irq_latency)
905 return 0;
906
907- /* Can only handle 2, 3, or 4 insns at present, though could be easily
908- extended if required. */
909- gcc_assert (nops >= 2 && nops <= 4);
910+ /* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be
911+ easily extended if required. */
912+ gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS);
913
914- memset (order, 0, 4 * sizeof (int));
915+ memset (order, 0, MAX_LDM_STM_OPS * sizeof (int));
916
917 /* Loop over the operands and check that the memory references are
918 suitable (i.e. immediate offsets from the same base register). At
919@@ -9964,32 +9992,32 @@
920 && (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1))
921 == CONST_INT)))
922 {
923+ unsorted_reg_rtxs[i] = (GET_CODE (operands[i]) == REG
924+ ? operands[i] : SUBREG_REG (operands[i]));
925+ unsorted_regs[i] = REGNO (unsorted_reg_rtxs[i]);
926+
927 if (i == 0)
928 {
929 base_reg = REGNO (reg);
930- unsorted_regs[0] = (GET_CODE (operands[i]) == REG
931- ? REGNO (operands[i])
932- : REGNO (SUBREG_REG (operands[i])));
933- order[0] = 0;
934- }
935- else
936- {
937- if (base_reg != (int) REGNO (reg))
938- /* Not addressed from the same base register. */
939+ base_reg_rtx = reg;
940+ if (TARGET_THUMB1 && base_reg > LAST_LO_REGNUM)
941 return 0;
942-
943- unsorted_regs[i] = (GET_CODE (operands[i]) == REG
944- ? REGNO (operands[i])
945- : REGNO (SUBREG_REG (operands[i])));
946- if (unsorted_regs[i] < unsorted_regs[order[0]])
947- order[0] = i;
948 }
949+ else if (base_reg != (int) REGNO (reg))
950+ /* Not addressed from the same base register. */
951+ return 0;
952
953 /* If it isn't an integer register, then we can't do this. */
954- if (unsorted_regs[i] < 0 || unsorted_regs[i] > 14)
955+ if (unsorted_regs[i] < 0
956+ || (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM)
957+ || (TARGET_THUMB2 && unsorted_regs[i] == base_reg)
958+ || (TARGET_THUMB2 && unsorted_regs[i] == SP_REGNUM)
959+ || unsorted_regs[i] > 14)
960 return 0;
961
962 unsorted_offsets[i] = INTVAL (offset);
963+ if (i == 0 || unsorted_offsets[i] < unsorted_offsets[order[0]])
964+ order[0] = i;
965 }
966 else
967 /* Not a suitable memory address. */
968@@ -9998,111 +10026,65 @@
969
970 /* All the useful information has now been extracted from the
971 operands into unsorted_regs and unsorted_offsets; additionally,
972- order[0] has been set to the lowest numbered register in the
973- list. Sort the registers into order, and check that the memory
974- offsets are ascending and adjacent. */
975-
976- for (i = 1; i < nops; i++)
977- {
978- int j;
979-
980- order[i] = order[i - 1];
981- for (j = 0; j < nops; j++)
982- if (unsorted_regs[j] > unsorted_regs[order[i - 1]]
983- && (order[i] == order[i - 1]
984- || unsorted_regs[j] < unsorted_regs[order[i]]))
985- order[i] = j;
986-
987- /* Have we found a suitable register? if not, one must be used more
988- than once. */
989- if (order[i] == order[i - 1])
990- return 0;
991-
992- /* Is the memory address adjacent and ascending? */
993- if (unsorted_offsets[order[i]] != unsorted_offsets[order[i - 1]] + 4)
994- return 0;
995- }
996+ order[0] has been set to the lowest offset in the list. Sort
997+ the offsets into order, verifying that they are adjacent, and
998+ check that the register numbers are ascending. */
999+ if (!compute_offset_order (nops, unsorted_offsets, order,
1000+ check_regs ? unsorted_regs : NULL))
1001+ return 0;
1002+
1003+ if (saved_order)
1004+ memcpy (saved_order, order, sizeof order);
1005
1006 if (base)
1007 {
1008 *base = base_reg;
1009
1010 for (i = 0; i < nops; i++)
1011- regs[i] = unsorted_regs[order[i]];
1012+ {
1013+ regs[i] = unsorted_regs[check_regs ? order[i] : i];
1014+ if (reg_rtxs)
1015+ reg_rtxs[i] = unsorted_reg_rtxs[check_regs ? order[i] : i];
1016+ }
1017
1018 *load_offset = unsorted_offsets[order[0]];
1019 }
1020
1021+ if (TARGET_THUMB1
1022+ && !peep2_reg_dead_p (nops_total, base_reg_rtx))
1023+ return 0;
1024+
1025 if (unsorted_offsets[order[0]] == 0)
1026- return 1; /* stmia */
1027-
1028- if (unsorted_offsets[order[0]] == 4)
1029- return 2; /* stmib */
1030-
1031- if (unsorted_offsets[order[nops - 1]] == 0)
1032- return 3; /* stmda */
1033-
1034- if (unsorted_offsets[order[nops - 1]] == -4)
1035- return 4; /* stmdb */
1036-
1037- return 0;
1038-}
1039-
1040-const char *
1041-emit_stm_seq (rtx *operands, int nops)
1042-{
1043- int regs[4];
1044- int base_reg;
1045- HOST_WIDE_INT offset;
1046- char buf[100];
1047- int i;
1048-
1049- switch (store_multiple_sequence (operands, nops, regs, &base_reg, &offset))
1050- {
1051- case 1:
1052- strcpy (buf, "stm%(ia%)\t");
1053- break;
1054-
1055- case 2:
1056- strcpy (buf, "stm%(ib%)\t");
1057- break;
1058-
1059- case 3:
1060- strcpy (buf, "stm%(da%)\t");
1061- break;
1062-
1063- case 4:
1064- strcpy (buf, "stm%(db%)\t");
1065- break;
1066-
1067- default:
1068- gcc_unreachable ();
1069- }
1070-
1071- sprintf (buf + strlen (buf), "%s%s, {%s%s", REGISTER_PREFIX,
1072- reg_names[base_reg], REGISTER_PREFIX, reg_names[regs[0]]);
1073-
1074- for (i = 1; i < nops; i++)
1075- sprintf (buf + strlen (buf), ", %s%s", REGISTER_PREFIX,
1076- reg_names[regs[i]]);
1077-
1078- strcat (buf, "}\t%@ phole stm");
1079-
1080- output_asm_insn (buf, operands);
1081- return "";
1082+ stm_case = 1; /* stmia */
1083+ else if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
1084+ stm_case = 2; /* stmib */
1085+ else if (TARGET_ARM && unsorted_offsets[order[nops - 1]] == 0)
1086+ stm_case = 3; /* stmda */
1087+ else if (TARGET_32BIT && unsorted_offsets[order[nops - 1]] == -4)
1088+ stm_case = 4; /* stmdb */
1089+ else
1090+ return 0;
1091+
1092+ if (!multiple_operation_profitable_p (false, nops, 0))
1093+ return 0;
1094+
1095+ return stm_case;
1096 }
1097
1098 /* Routines for use in generating RTL. */
1099
1100-rtx
1101-arm_gen_load_multiple (int base_regno, int count, rtx from, int up,
1102- int write_back, rtx basemem, HOST_WIDE_INT *offsetp)
1103+/* Generate a load-multiple instruction. COUNT is the number of loads in
1104+ the instruction; REGS and MEMS are arrays containing the operands.
1105+ BASEREG is the base register to be used in addressing the memory operands.
1106+ WBACK_OFFSET is nonzero if the instruction should update the base
1107+ register. */
1108+
1109+static rtx
1110+arm_gen_load_multiple_1 (int count, int *regs, rtx *mems, rtx basereg,
1111+ HOST_WIDE_INT wback_offset)
1112 {
1113- HOST_WIDE_INT offset = *offsetp;
1114 int i = 0, j;
1115 rtx result;
1116- int sign = up ? 1 : -1;
1117- rtx mem, addr;
1118
1119 /* XScale has load-store double instructions, but they have stricter
1120 alignment requirements than load-store multiple, so we cannot
1121@@ -10139,18 +10121,10 @@
1122 start_sequence ();
1123
1124 for (i = 0; i < count; i++)
1125- {
1126- addr = plus_constant (from, i * 4 * sign);
1127- mem = adjust_automodify_address (basemem, SImode, addr, offset);
1128- emit_move_insn (gen_rtx_REG (SImode, base_regno + i), mem);
1129- offset += 4 * sign;
1130- }
1131+ emit_move_insn (gen_rtx_REG (SImode, regs[i]), mems[i]);
1132
1133- if (write_back)
1134- {
1135- emit_move_insn (from, plus_constant (from, count * 4 * sign));
1136- *offsetp = offset;
1137- }
1138+ if (wback_offset != 0)
1139+ emit_move_insn (basereg, plus_constant (basereg, wback_offset));
1140
1141 seq = get_insns ();
1142 end_sequence ();
1143@@ -10159,41 +10133,40 @@
1144 }
1145
1146 result = gen_rtx_PARALLEL (VOIDmode,
1147- rtvec_alloc (count + (write_back ? 1 : 0)));
1148- if (write_back)
1149+ rtvec_alloc (count + (wback_offset != 0 ? 1 : 0)));
1150+ if (wback_offset != 0)
1151 {
1152 XVECEXP (result, 0, 0)
1153- = gen_rtx_SET (VOIDmode, from, plus_constant (from, count * 4 * sign));
1154+ = gen_rtx_SET (VOIDmode, basereg,
1155+ plus_constant (basereg, wback_offset));
1156 i = 1;
1157 count++;
1158 }
1159
1160 for (j = 0; i < count; i++, j++)
1161- {
1162- addr = plus_constant (from, j * 4 * sign);
1163- mem = adjust_automodify_address_nv (basemem, SImode, addr, offset);
1164- XVECEXP (result, 0, i)
1165- = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, base_regno + j), mem);
1166- offset += 4 * sign;
1167- }
1168-
1169- if (write_back)
1170- *offsetp = offset;
1171+ XVECEXP (result, 0, i)
1172+ = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, regs[j]), mems[j]);
1173
1174 return result;
1175 }
1176
1177-rtx
1178-arm_gen_store_multiple (int base_regno, int count, rtx to, int up,
1179- int write_back, rtx basemem, HOST_WIDE_INT *offsetp)
1180+/* Generate a store-multiple instruction. COUNT is the number of stores in
1181+ the instruction; REGS and MEMS are arrays containing the operands.
1182+ BASEREG is the base register to be used in addressing the memory operands.
1183+ WBACK_OFFSET is nonzero if the instruction should update the base
1184+ register. */
1185+
1186+static rtx
1187+arm_gen_store_multiple_1 (int count, int *regs, rtx *mems, rtx basereg,
1188+ HOST_WIDE_INT wback_offset)
1189 {
1190- HOST_WIDE_INT offset = *offsetp;
1191 int i = 0, j;
1192 rtx result;
1193- int sign = up ? 1 : -1;
1194- rtx mem, addr;
1195-
1196- /* See arm_gen_load_multiple for discussion of
1197+
1198+ if (GET_CODE (basereg) == PLUS)
1199+ basereg = XEXP (basereg, 0);
1200+
1201+ /* See arm_gen_load_multiple_1 for discussion of
1202 the pros/cons of ldm/stm usage for XScale. */
1203 if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
1204 {
1205@@ -10202,18 +10175,10 @@
1206 start_sequence ();
1207
1208 for (i = 0; i < count; i++)
1209- {
1210- addr = plus_constant (to, i * 4 * sign);
1211- mem = adjust_automodify_address (basemem, SImode, addr, offset);
1212- emit_move_insn (mem, gen_rtx_REG (SImode, base_regno + i));
1213- offset += 4 * sign;
1214- }
1215+ emit_move_insn (mems[i], gen_rtx_REG (SImode, regs[i]));
1216
1217- if (write_back)
1218- {
1219- emit_move_insn (to, plus_constant (to, count * 4 * sign));
1220- *offsetp = offset;
1221- }
1222+ if (wback_offset != 0)
1223+ emit_move_insn (basereg, plus_constant (basereg, wback_offset));
1224
1225 seq = get_insns ();
1226 end_sequence ();
1227@@ -10222,29 +10187,319 @@
1228 }
1229
1230 result = gen_rtx_PARALLEL (VOIDmode,
1231- rtvec_alloc (count + (write_back ? 1 : 0)));
1232- if (write_back)
1233+ rtvec_alloc (count + (wback_offset != 0 ? 1 : 0)));
1234+ if (wback_offset != 0)
1235 {
1236 XVECEXP (result, 0, 0)
1237- = gen_rtx_SET (VOIDmode, to,
1238- plus_constant (to, count * 4 * sign));
1239+ = gen_rtx_SET (VOIDmode, basereg,
1240+ plus_constant (basereg, wback_offset));
1241 i = 1;
1242 count++;
1243 }
1244
1245 for (j = 0; i < count; i++, j++)
1246+ XVECEXP (result, 0, i)
1247+ = gen_rtx_SET (VOIDmode, mems[j], gen_rtx_REG (SImode, regs[j]));
1248+
1249+ return result;
1250+}
1251+
1252+/* Generate either a load-multiple or a store-multiple instruction. This
1253+ function can be used in situations where we can start with a single MEM
1254+ rtx and adjust its address upwards.
1255+ COUNT is the number of operations in the instruction, not counting a
1256+ possible update of the base register. REGS is an array containing the
1257+ register operands.
1258+ BASEREG is the base register to be used in addressing the memory operands,
1259+ which are constructed from BASEMEM.
1260+ WRITE_BACK specifies whether the generated instruction should include an
1261+ update of the base register.
1262+ OFFSETP is used to pass an offset to and from this function; this offset
1263+ is not used when constructing the address (instead BASEMEM should have an
1264+ appropriate offset in its address), it is used only for setting
1265+ MEM_OFFSET. It is updated only if WRITE_BACK is true.*/
1266+
1267+static rtx
1268+arm_gen_multiple_op (bool is_load, int *regs, int count, rtx basereg,
1269+ bool write_back, rtx basemem, HOST_WIDE_INT *offsetp)
1270+{
1271+ rtx mems[MAX_LDM_STM_OPS];
1272+ HOST_WIDE_INT offset = *offsetp;
1273+ int i;
1274+
1275+ gcc_assert (count <= MAX_LDM_STM_OPS);
1276+
1277+ if (GET_CODE (basereg) == PLUS)
1278+ basereg = XEXP (basereg, 0);
1279+
1280+ for (i = 0; i < count; i++)
1281 {
1282- addr = plus_constant (to, j * 4 * sign);
1283- mem = adjust_automodify_address_nv (basemem, SImode, addr, offset);
1284- XVECEXP (result, 0, i)
1285- = gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (SImode, base_regno + j));
1286- offset += 4 * sign;
1287+ rtx addr = plus_constant (basereg, i * 4);
1288+ mems[i] = adjust_automodify_address_nv (basemem, SImode, addr, offset);
1289+ offset += 4;
1290 }
1291
1292 if (write_back)
1293 *offsetp = offset;
1294
1295- return result;
1296+ if (is_load)
1297+ return arm_gen_load_multiple_1 (count, regs, mems, basereg,
1298+ write_back ? 4 * count : 0);
1299+ else
1300+ return arm_gen_store_multiple_1 (count, regs, mems, basereg,
1301+ write_back ? 4 * count : 0);
1302+}
1303+
1304+rtx
1305+arm_gen_load_multiple (int *regs, int count, rtx basereg, int write_back,
1306+ rtx basemem, HOST_WIDE_INT *offsetp)
1307+{
1308+ return arm_gen_multiple_op (TRUE, regs, count, basereg, write_back, basemem,
1309+ offsetp);
1310+}
1311+
1312+rtx
1313+arm_gen_store_multiple (int *regs, int count, rtx basereg, int write_back,
1314+ rtx basemem, HOST_WIDE_INT *offsetp)
1315+{
1316+ return arm_gen_multiple_op (FALSE, regs, count, basereg, write_back, basemem,
1317+ offsetp);
1318+}
1319+
1320+/* Called from a peephole2 expander to turn a sequence of loads into an
1321+ LDM instruction. OPERANDS are the operands found by the peephole matcher;
1322+ NOPS indicates how many separate loads we are trying to combine. SORT_REGS
1323+ is true if we can reorder the registers because they are used commutatively
1324+ subsequently.
1325+ Returns true iff we could generate a new instruction. */
1326+
1327+bool
1328+gen_ldm_seq (rtx *operands, int nops, bool sort_regs)
1329+{
1330+ int regs[MAX_LDM_STM_OPS], mem_order[MAX_LDM_STM_OPS];
1331+ rtx mems[MAX_LDM_STM_OPS];
1332+ int i, j, base_reg;
1333+ rtx base_reg_rtx;
1334+ HOST_WIDE_INT offset;
1335+ int write_back = FALSE;
1336+ int ldm_case;
1337+ rtx addr;
1338+
1339+ ldm_case = load_multiple_sequence (operands, nops, regs, mem_order,
1340+ &base_reg, &offset, !sort_regs);
1341+
1342+ if (ldm_case == 0)
1343+ return false;
1344+
1345+ if (sort_regs)
1346+ for (i = 0; i < nops - 1; i++)
1347+ for (j = i + 1; j < nops; j++)
1348+ if (regs[i] > regs[j])
1349+ {
1350+ int t = regs[i];
1351+ regs[i] = regs[j];
1352+ regs[j] = t;
1353+ }
1354+ base_reg_rtx = gen_rtx_REG (Pmode, base_reg);
1355+
1356+ if (TARGET_THUMB1)
1357+ {
1358+ gcc_assert (peep2_reg_dead_p (nops, base_reg_rtx));
1359+ gcc_assert (ldm_case == 1 || ldm_case == 5);
1360+ write_back = TRUE;
1361+ }
1362+
1363+ if (ldm_case == 5)
1364+ {
1365+ rtx newbase = TARGET_THUMB1 ? base_reg_rtx : gen_rtx_REG (SImode, regs[0]);
1366+ emit_insn (gen_addsi3 (newbase, base_reg_rtx, GEN_INT (offset)));
1367+ offset = 0;
1368+ if (!TARGET_THUMB1)
1369+ {
1370+ base_reg = regs[0];
1371+ base_reg_rtx = newbase;
1372+ }
1373+ }
1374+
1375+ for (i = 0; i < nops; i++)
1376+ {
1377+ addr = plus_constant (base_reg_rtx, offset + i * 4);
1378+ mems[i] = adjust_automodify_address_nv (operands[nops + mem_order[i]],
1379+ SImode, addr, 0);
1380+ }
1381+ emit_insn (arm_gen_load_multiple_1 (nops, regs, mems, base_reg_rtx,
1382+ write_back ? offset + i * 4 : 0));
1383+ return true;
1384+}
1385+
1386+/* Called from a peephole2 expander to turn a sequence of stores into an
1387+ STM instruction. OPERANDS are the operands found by the peephole matcher;
1388+ NOPS indicates how many separate stores we are trying to combine.
1389+ Returns true iff we could generate a new instruction. */
1390+
1391+bool
1392+gen_stm_seq (rtx *operands, int nops)
1393+{
1394+ int i;
1395+ int regs[MAX_LDM_STM_OPS], mem_order[MAX_LDM_STM_OPS];
1396+ rtx mems[MAX_LDM_STM_OPS];
1397+ int base_reg;
1398+ rtx base_reg_rtx;
1399+ HOST_WIDE_INT offset;
1400+ int write_back = FALSE;
1401+ int stm_case;
1402+ rtx addr;
1403+ bool base_reg_dies;
1404+
1405+ stm_case = store_multiple_sequence (operands, nops, nops, regs, NULL,
1406+ mem_order, &base_reg, &offset, true);
1407+
1408+ if (stm_case == 0)
1409+ return false;
1410+
1411+ base_reg_rtx = gen_rtx_REG (Pmode, base_reg);
1412+
1413+ base_reg_dies = peep2_reg_dead_p (nops, base_reg_rtx);
1414+ if (TARGET_THUMB1)
1415+ {
1416+ gcc_assert (base_reg_dies);
1417+ write_back = TRUE;
1418+ }
1419+
1420+ if (stm_case == 5)
1421+ {
1422+ gcc_assert (base_reg_dies);
1423+ emit_insn (gen_addsi3 (base_reg_rtx, base_reg_rtx, GEN_INT (offset)));
1424+ offset = 0;
1425+ }
1426+
1427+ addr = plus_constant (base_reg_rtx, offset);
1428+
1429+ for (i = 0; i < nops; i++)
1430+ {
1431+ addr = plus_constant (base_reg_rtx, offset + i * 4);
1432+ mems[i] = adjust_automodify_address_nv (operands[nops + mem_order[i]],
1433+ SImode, addr, 0);
1434+ }
1435+ emit_insn (arm_gen_store_multiple_1 (nops, regs, mems, base_reg_rtx,
1436+ write_back ? offset + i * 4 : 0));
1437+ return true;
1438+}
1439+
1440+/* Called from a peephole2 expander to turn a sequence of stores that are
1441+ preceded by constant loads into an STM instruction. OPERANDS are the
1442+ operands found by the peephole matcher; NOPS indicates how many
1443+ separate stores we are trying to combine; there are 2 * NOPS
1444+ instructions in the peephole.
1445+ Returns true iff we could generate a new instruction. */
1446+
1447+bool
1448+gen_const_stm_seq (rtx *operands, int nops)
1449+{
1450+ int regs[MAX_LDM_STM_OPS], sorted_regs[MAX_LDM_STM_OPS];
1451+ int reg_order[MAX_LDM_STM_OPS], mem_order[MAX_LDM_STM_OPS];
1452+ rtx reg_rtxs[MAX_LDM_STM_OPS], orig_reg_rtxs[MAX_LDM_STM_OPS];
1453+ rtx mems[MAX_LDM_STM_OPS];
1454+ int base_reg;
1455+ rtx base_reg_rtx;
1456+ HOST_WIDE_INT offset;
1457+ int write_back = FALSE;
1458+ int stm_case;
1459+ rtx addr;
1460+ bool base_reg_dies;
1461+ int i, j;
1462+ HARD_REG_SET allocated;
1463+
1464+ stm_case = store_multiple_sequence (operands, nops, 2 * nops, regs, reg_rtxs,
1465+ mem_order, &base_reg, &offset, false);
1466+
1467+ if (stm_case == 0)
1468+ return false;
1469+
1470+ memcpy (orig_reg_rtxs, reg_rtxs, sizeof orig_reg_rtxs);
1471+
1472+ /* If the same register is used more than once, try to find a free
1473+ register. */
1474+ CLEAR_HARD_REG_SET (allocated);
1475+ for (i = 0; i < nops; i++)
1476+ {
1477+ for (j = i + 1; j < nops; j++)
1478+ if (regs[i] == regs[j])
1479+ {
1480+ rtx t = peep2_find_free_register (0, nops * 2,
1481+ TARGET_THUMB1 ? "l" : "r",
1482+ SImode, &allocated);
1483+ if (t == NULL_RTX)
1484+ return false;
1485+ reg_rtxs[i] = t;
1486+ regs[i] = REGNO (t);
1487+ }
1488+ }
1489+
1490+ /* Compute an ordering that maps the register numbers to an ascending
1491+ sequence. */
1492+ reg_order[0] = 0;
1493+ for (i = 0; i < nops; i++)
1494+ if (regs[i] < regs[reg_order[0]])
1495+ reg_order[0] = i;
1496+
1497+ for (i = 1; i < nops; i++)
1498+ {
1499+ int this_order = reg_order[i - 1];
1500+ for (j = 0; j < nops; j++)
1501+ if (regs[j] > regs[reg_order[i - 1]]
1502+ && (this_order == reg_order[i - 1]
1503+ || regs[j] < regs[this_order]))
1504+ this_order = j;
1505+ reg_order[i] = this_order;
1506+ }
1507+
1508+ /* Ensure that registers that must be live after the instruction end
1509+ up with the correct value. */
1510+ for (i = 0; i < nops; i++)
1511+ {
1512+ int this_order = reg_order[i];
1513+ if ((this_order != mem_order[i]
1514+ || orig_reg_rtxs[this_order] != reg_rtxs[this_order])
1515+ && !peep2_reg_dead_p (nops * 2, orig_reg_rtxs[this_order]))
1516+ return false;
1517+ }
1518+
1519+ /* Load the constants. */
1520+ for (i = 0; i < nops; i++)
1521+ {
1522+ rtx op = operands[2 * nops + mem_order[i]];
1523+ sorted_regs[i] = regs[reg_order[i]];
1524+ emit_move_insn (reg_rtxs[reg_order[i]], op);
1525+ }
1526+
1527+ base_reg_rtx = gen_rtx_REG (Pmode, base_reg);
1528+
1529+ base_reg_dies = peep2_reg_dead_p (nops * 2, base_reg_rtx);
1530+ if (TARGET_THUMB1)
1531+ {
1532+ gcc_assert (base_reg_dies);
1533+ write_back = TRUE;
1534+ }
1535+
1536+ if (stm_case == 5)
1537+ {
1538+ gcc_assert (base_reg_dies);
1539+ emit_insn (gen_addsi3 (base_reg_rtx, base_reg_rtx, GEN_INT (offset)));
1540+ offset = 0;
1541+ }
1542+
1543+ addr = plus_constant (base_reg_rtx, offset);
1544+
1545+ for (i = 0; i < nops; i++)
1546+ {
1547+ addr = plus_constant (base_reg_rtx, offset + i * 4);
1548+ mems[i] = adjust_automodify_address_nv (operands[nops + mem_order[i]],
1549+ SImode, addr, 0);
1550+ }
1551+ emit_insn (arm_gen_store_multiple_1 (nops, sorted_regs, mems, base_reg_rtx,
1552+ write_back ? offset + i * 4 : 0));
1553+ return true;
1554 }
1555
1556 int
1557@@ -10280,20 +10535,21 @@
1558 for (i = 0; in_words_to_go >= 2; i+=4)
1559 {
1560 if (in_words_to_go > 4)
1561- emit_insn (arm_gen_load_multiple (0, 4, src, TRUE, TRUE,
1562- srcbase, &srcoffset));
1563+ emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, 4, src,
1564+ TRUE, srcbase, &srcoffset));
1565 else
1566- emit_insn (arm_gen_load_multiple (0, in_words_to_go, src, TRUE,
1567- FALSE, srcbase, &srcoffset));
1568+ emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, in_words_to_go,
1569+ src, FALSE, srcbase,
1570+ &srcoffset));
1571
1572 if (out_words_to_go)
1573 {
1574 if (out_words_to_go > 4)
1575- emit_insn (arm_gen_store_multiple (0, 4, dst, TRUE, TRUE,
1576- dstbase, &dstoffset));
1577+ emit_insn (arm_gen_store_multiple (arm_regs_in_sequence, 4, dst,
1578+ TRUE, dstbase, &dstoffset));
1579 else if (out_words_to_go != 1)
1580- emit_insn (arm_gen_store_multiple (0, out_words_to_go,
1581- dst, TRUE,
1582+ emit_insn (arm_gen_store_multiple (arm_regs_in_sequence,
1583+ out_words_to_go, dst,
1584 (last_bytes == 0
1585 ? FALSE : TRUE),
1586 dstbase, &dstoffset));
1587
1588=== modified file 'gcc/config/arm/arm.h'
1589--- old/gcc/config/arm/arm.h 2011-01-05 12:12:18 +0000
1590+++ new/gcc/config/arm/arm.h 2011-01-05 18:20:37 +0000
1591@@ -1143,6 +1143,9 @@
1592 ((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \
1593 || (MODE) == CImode || (MODE) == XImode)
1594
1595+/* The register numbers in sequence, for passing to arm_gen_load_multiple. */
1596+extern int arm_regs_in_sequence[];
1597+
1598 /* The order in which register should be allocated. It is good to use ip
1599 since no saving is required (though calls clobber it) and it never contains
1600 function parameters. It is quite good to use lr since other calls may
1601@@ -2823,4 +2826,8 @@
1602 #define NEED_INDICATE_EXEC_STACK 0
1603 #endif
1604
1605+/* The maximum number of parallel loads or stores we support in an ldm/stm
1606+ instruction. */
1607+#define MAX_LDM_STM_OPS 4
1608+
1609 #endif /* ! GCC_ARM_H */
1610
1611=== modified file 'gcc/config/arm/arm.md'
1612--- old/gcc/config/arm/arm.md 2011-01-05 12:12:18 +0000
1613+++ new/gcc/config/arm/arm.md 2011-01-05 18:20:37 +0000
1614@@ -6282,7 +6282,7 @@
1615
1616 ;; load- and store-multiple insns
1617 ;; The arm can load/store any set of registers, provided that they are in
1618-;; ascending order; but that is beyond GCC so stick with what it knows.
1619+;; ascending order, but these expanders assume a contiguous set.
1620
1621 (define_expand "load_multiple"
1622 [(match_par_dup 3 [(set (match_operand:SI 0 "" "")
1623@@ -6303,126 +6303,12 @@
1624 FAIL;
1625
1626 operands[3]
1627- = arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]),
1628+ = arm_gen_load_multiple (arm_regs_in_sequence + REGNO (operands[0]),
1629+ INTVAL (operands[2]),
1630 force_reg (SImode, XEXP (operands[1], 0)),
1631- TRUE, FALSE, operands[1], &offset);
1632+ FALSE, operands[1], &offset);
1633 })
1634
1635-;; Load multiple with write-back
1636-
1637-(define_insn "*ldmsi_postinc4"
1638- [(match_parallel 0 "load_multiple_operation"
1639- [(set (match_operand:SI 1 "s_register_operand" "=r")
1640- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1641- (const_int 16)))
1642- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1643- (mem:SI (match_dup 2)))
1644- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1645- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
1646- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1647- (mem:SI (plus:SI (match_dup 2) (const_int 8))))
1648- (set (match_operand:SI 6 "arm_hard_register_operand" "")
1649- (mem:SI (plus:SI (match_dup 2) (const_int 12))))])]
1650- "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
1651- "ldm%(ia%)\\t%1!, {%3, %4, %5, %6}"
1652- [(set_attr "type" "load4")
1653- (set_attr "predicable" "yes")]
1654-)
1655-
1656-(define_insn "*ldmsi_postinc4_thumb1"
1657- [(match_parallel 0 "load_multiple_operation"
1658- [(set (match_operand:SI 1 "s_register_operand" "=l")
1659- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1660- (const_int 16)))
1661- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1662- (mem:SI (match_dup 2)))
1663- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1664- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
1665- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1666- (mem:SI (plus:SI (match_dup 2) (const_int 8))))
1667- (set (match_operand:SI 6 "arm_hard_register_operand" "")
1668- (mem:SI (plus:SI (match_dup 2) (const_int 12))))])]
1669- "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
1670- "ldmia\\t%1!, {%3, %4, %5, %6}"
1671- [(set_attr "type" "load4")]
1672-)
1673-
1674-(define_insn "*ldmsi_postinc3"
1675- [(match_parallel 0 "load_multiple_operation"
1676- [(set (match_operand:SI 1 "s_register_operand" "=r")
1677- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1678- (const_int 12)))
1679- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1680- (mem:SI (match_dup 2)))
1681- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1682- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
1683- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1684- (mem:SI (plus:SI (match_dup 2) (const_int 8))))])]
1685- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1686- "ldm%(ia%)\\t%1!, {%3, %4, %5}"
1687- [(set_attr "type" "load3")
1688- (set_attr "predicable" "yes")]
1689-)
1690-
1691-(define_insn "*ldmsi_postinc2"
1692- [(match_parallel 0 "load_multiple_operation"
1693- [(set (match_operand:SI 1 "s_register_operand" "=r")
1694- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1695- (const_int 8)))
1696- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1697- (mem:SI (match_dup 2)))
1698- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1699- (mem:SI (plus:SI (match_dup 2) (const_int 4))))])]
1700- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1701- "ldm%(ia%)\\t%1!, {%3, %4}"
1702- [(set_attr "type" "load2")
1703- (set_attr "predicable" "yes")]
1704-)
1705-
1706-;; Ordinary load multiple
1707-
1708-(define_insn "*ldmsi4"
1709- [(match_parallel 0 "load_multiple_operation"
1710- [(set (match_operand:SI 2 "arm_hard_register_operand" "")
1711- (mem:SI (match_operand:SI 1 "s_register_operand" "r")))
1712- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1713- (mem:SI (plus:SI (match_dup 1) (const_int 4))))
1714- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1715- (mem:SI (plus:SI (match_dup 1) (const_int 8))))
1716- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1717- (mem:SI (plus:SI (match_dup 1) (const_int 12))))])]
1718- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1719- "ldm%(ia%)\\t%1, {%2, %3, %4, %5}"
1720- [(set_attr "type" "load4")
1721- (set_attr "predicable" "yes")]
1722-)
1723-
1724-(define_insn "*ldmsi3"
1725- [(match_parallel 0 "load_multiple_operation"
1726- [(set (match_operand:SI 2 "arm_hard_register_operand" "")
1727- (mem:SI (match_operand:SI 1 "s_register_operand" "r")))
1728- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1729- (mem:SI (plus:SI (match_dup 1) (const_int 4))))
1730- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1731- (mem:SI (plus:SI (match_dup 1) (const_int 8))))])]
1732- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1733- "ldm%(ia%)\\t%1, {%2, %3, %4}"
1734- [(set_attr "type" "load3")
1735- (set_attr "predicable" "yes")]
1736-)
1737-
1738-(define_insn "*ldmsi2"
1739- [(match_parallel 0 "load_multiple_operation"
1740- [(set (match_operand:SI 2 "arm_hard_register_operand" "")
1741- (mem:SI (match_operand:SI 1 "s_register_operand" "r")))
1742- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1743- (mem:SI (plus:SI (match_dup 1) (const_int 4))))])]
1744- "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
1745- "ldm%(ia%)\\t%1, {%2, %3}"
1746- [(set_attr "type" "load2")
1747- (set_attr "predicable" "yes")]
1748-)
1749-
1750 (define_expand "store_multiple"
1751 [(match_par_dup 3 [(set (match_operand:SI 0 "" "")
1752 (match_operand:SI 1 "" ""))
1753@@ -6442,125 +6328,12 @@
1754 FAIL;
1755
1756 operands[3]
1757- = arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]),
1758+ = arm_gen_store_multiple (arm_regs_in_sequence + REGNO (operands[1]),
1759+ INTVAL (operands[2]),
1760 force_reg (SImode, XEXP (operands[0], 0)),
1761- TRUE, FALSE, operands[0], &offset);
1762+ FALSE, operands[0], &offset);
1763 })
1764
1765-;; Store multiple with write-back
1766-
1767-(define_insn "*stmsi_postinc4"
1768- [(match_parallel 0 "store_multiple_operation"
1769- [(set (match_operand:SI 1 "s_register_operand" "=r")
1770- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1771- (const_int 16)))
1772- (set (mem:SI (match_dup 2))
1773- (match_operand:SI 3 "arm_hard_register_operand" ""))
1774- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1775- (match_operand:SI 4 "arm_hard_register_operand" ""))
1776- (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
1777- (match_operand:SI 5 "arm_hard_register_operand" ""))
1778- (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
1779- (match_operand:SI 6 "arm_hard_register_operand" ""))])]
1780- "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
1781- "stm%(ia%)\\t%1!, {%3, %4, %5, %6}"
1782- [(set_attr "predicable" "yes")
1783- (set_attr "type" "store4")]
1784-)
1785-
1786-(define_insn "*stmsi_postinc4_thumb1"
1787- [(match_parallel 0 "store_multiple_operation"
1788- [(set (match_operand:SI 1 "s_register_operand" "=l")
1789- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1790- (const_int 16)))
1791- (set (mem:SI (match_dup 2))
1792- (match_operand:SI 3 "arm_hard_register_operand" ""))
1793- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1794- (match_operand:SI 4 "arm_hard_register_operand" ""))
1795- (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
1796- (match_operand:SI 5 "arm_hard_register_operand" ""))
1797- (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
1798- (match_operand:SI 6 "arm_hard_register_operand" ""))])]
1799- "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
1800- "stmia\\t%1!, {%3, %4, %5, %6}"
1801- [(set_attr "type" "store4")]
1802-)
1803-
1804-(define_insn "*stmsi_postinc3"
1805- [(match_parallel 0 "store_multiple_operation"
1806- [(set (match_operand:SI 1 "s_register_operand" "=r")
1807- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1808- (const_int 12)))
1809- (set (mem:SI (match_dup 2))
1810- (match_operand:SI 3 "arm_hard_register_operand" ""))
1811- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1812- (match_operand:SI 4 "arm_hard_register_operand" ""))
1813- (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
1814- (match_operand:SI 5 "arm_hard_register_operand" ""))])]
1815- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1816- "stm%(ia%)\\t%1!, {%3, %4, %5}"
1817- [(set_attr "predicable" "yes")
1818- (set_attr "type" "store3")]
1819-)
1820-
1821-(define_insn "*stmsi_postinc2"
1822- [(match_parallel 0 "store_multiple_operation"
1823- [(set (match_operand:SI 1 "s_register_operand" "=r")
1824- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1825- (const_int 8)))
1826- (set (mem:SI (match_dup 2))
1827- (match_operand:SI 3 "arm_hard_register_operand" ""))
1828- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1829- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
1830- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1831- "stm%(ia%)\\t%1!, {%3, %4}"
1832- [(set_attr "predicable" "yes")
1833- (set_attr "type" "store2")]
1834-)
1835-
1836-;; Ordinary store multiple
1837-
1838-(define_insn "*stmsi4"
1839- [(match_parallel 0 "store_multiple_operation"
1840- [(set (mem:SI (match_operand:SI 1 "s_register_operand" "r"))
1841- (match_operand:SI 2 "arm_hard_register_operand" ""))
1842- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
1843- (match_operand:SI 3 "arm_hard_register_operand" ""))
1844- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
1845- (match_operand:SI 4 "arm_hard_register_operand" ""))
1846- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
1847- (match_operand:SI 5 "arm_hard_register_operand" ""))])]
1848- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1849- "stm%(ia%)\\t%1, {%2, %3, %4, %5}"
1850- [(set_attr "predicable" "yes")
1851- (set_attr "type" "store4")]
1852-)
1853-
1854-(define_insn "*stmsi3"
1855- [(match_parallel 0 "store_multiple_operation"
1856- [(set (mem:SI (match_operand:SI 1 "s_register_operand" "r"))
1857- (match_operand:SI 2 "arm_hard_register_operand" ""))
1858- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
1859- (match_operand:SI 3 "arm_hard_register_operand" ""))
1860- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
1861- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
1862- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1863- "stm%(ia%)\\t%1, {%2, %3, %4}"
1864- [(set_attr "predicable" "yes")
1865- (set_attr "type" "store3")]
1866-)
1867-
1868-(define_insn "*stmsi2"
1869- [(match_parallel 0 "store_multiple_operation"
1870- [(set (mem:SI (match_operand:SI 1 "s_register_operand" "r"))
1871- (match_operand:SI 2 "arm_hard_register_operand" ""))
1872- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
1873- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
1874- "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
1875- "stm%(ia%)\\t%1, {%2, %3}"
1876- [(set_attr "predicable" "yes")
1877- (set_attr "type" "store2")]
1878-)
1879
1880 ;; Move a block of memory if it is word aligned and MORE than 2 words long.
1881 ;; We could let this apply for blocks of less than this, but it clobbers so
1882@@ -9031,8 +8804,8 @@
1883 if (REGNO (reg) == R0_REGNUM)
1884 {
1885 /* On thumb we have to use a write-back instruction. */
1886- emit_insn (arm_gen_store_multiple (R0_REGNUM, 4, addr, TRUE,
1887- TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1888+ emit_insn (arm_gen_store_multiple (arm_regs_in_sequence, 4, addr,
1889+ TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1890 size = TARGET_ARM ? 16 : 0;
1891 }
1892 else
1893@@ -9078,8 +8851,8 @@
1894 if (REGNO (reg) == R0_REGNUM)
1895 {
1896 /* On thumb we have to use a write-back instruction. */
1897- emit_insn (arm_gen_load_multiple (R0_REGNUM, 4, addr, TRUE,
1898- TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1899+ emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, 4, addr,
1900+ TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1901 size = TARGET_ARM ? 16 : 0;
1902 }
1903 else
1904@@ -10672,87 +10445,6 @@
1905 ""
1906 )
1907
1908-; Peepholes to spot possible load- and store-multiples, if the ordering is
1909-; reversed, check that the memory references aren't volatile.
1910-
1911-(define_peephole
1912- [(set (match_operand:SI 0 "s_register_operand" "=rk")
1913- (match_operand:SI 4 "memory_operand" "m"))
1914- (set (match_operand:SI 1 "s_register_operand" "=rk")
1915- (match_operand:SI 5 "memory_operand" "m"))
1916- (set (match_operand:SI 2 "s_register_operand" "=rk")
1917- (match_operand:SI 6 "memory_operand" "m"))
1918- (set (match_operand:SI 3 "s_register_operand" "=rk")
1919- (match_operand:SI 7 "memory_operand" "m"))]
1920- "TARGET_ARM && load_multiple_sequence (operands, 4, NULL, NULL, NULL)"
1921- "*
1922- return emit_ldm_seq (operands, 4);
1923- "
1924-)
1925-
1926-(define_peephole
1927- [(set (match_operand:SI 0 "s_register_operand" "=rk")
1928- (match_operand:SI 3 "memory_operand" "m"))
1929- (set (match_operand:SI 1 "s_register_operand" "=rk")
1930- (match_operand:SI 4 "memory_operand" "m"))
1931- (set (match_operand:SI 2 "s_register_operand" "=rk")
1932- (match_operand:SI 5 "memory_operand" "m"))]
1933- "TARGET_ARM && load_multiple_sequence (operands, 3, NULL, NULL, NULL)"
1934- "*
1935- return emit_ldm_seq (operands, 3);
1936- "
1937-)
1938-
1939-(define_peephole
1940- [(set (match_operand:SI 0 "s_register_operand" "=rk")
1941- (match_operand:SI 2 "memory_operand" "m"))
1942- (set (match_operand:SI 1 "s_register_operand" "=rk")
1943- (match_operand:SI 3 "memory_operand" "m"))]
1944- "TARGET_ARM && load_multiple_sequence (operands, 2, NULL, NULL, NULL)"
1945- "*
1946- return emit_ldm_seq (operands, 2);
1947- "
1948-)
1949-
1950-(define_peephole
1951- [(set (match_operand:SI 4 "memory_operand" "=m")
1952- (match_operand:SI 0 "s_register_operand" "rk"))
1953- (set (match_operand:SI 5 "memory_operand" "=m")
1954- (match_operand:SI 1 "s_register_operand" "rk"))
1955- (set (match_operand:SI 6 "memory_operand" "=m")
1956- (match_operand:SI 2 "s_register_operand" "rk"))
1957- (set (match_operand:SI 7 "memory_operand" "=m")
1958- (match_operand:SI 3 "s_register_operand" "rk"))]
1959- "TARGET_ARM && store_multiple_sequence (operands, 4, NULL, NULL, NULL)"
1960- "*
1961- return emit_stm_seq (operands, 4);
1962- "
1963-)
1964-
1965-(define_peephole
1966- [(set (match_operand:SI 3 "memory_operand" "=m")
1967- (match_operand:SI 0 "s_register_operand" "rk"))
1968- (set (match_operand:SI 4 "memory_operand" "=m")
1969- (match_operand:SI 1 "s_register_operand" "rk"))
1970- (set (match_operand:SI 5 "memory_operand" "=m")
1971- (match_operand:SI 2 "s_register_operand" "rk"))]
1972- "TARGET_ARM && store_multiple_sequence (operands, 3, NULL, NULL, NULL)"
1973- "*
1974- return emit_stm_seq (operands, 3);
1975- "
1976-)
1977-
1978-(define_peephole
1979- [(set (match_operand:SI 2 "memory_operand" "=m")
1980- (match_operand:SI 0 "s_register_operand" "rk"))
1981- (set (match_operand:SI 3 "memory_operand" "=m")
1982- (match_operand:SI 1 "s_register_operand" "rk"))]
1983- "TARGET_ARM && store_multiple_sequence (operands, 2, NULL, NULL, NULL)"
1984- "*
1985- return emit_stm_seq (operands, 2);
1986- "
1987-)
1988-
1989 (define_split
1990 [(set (match_operand:SI 0 "s_register_operand" "")
1991 (and:SI (ge:SI (match_operand:SI 1 "s_register_operand" "")
1992@@ -11559,6 +11251,8 @@
1993 "
1994 )
1995
1996+;; Load the load/store multiple patterns
1997+(include "ldmstm.md")
1998 ;; Load the FPA co-processor patterns
1999 (include "fpa.md")
2000 ;; Load the Maverick co-processor patterns
2001
2002=== added file 'gcc/config/arm/ldmstm.md'
2003--- old/gcc/config/arm/ldmstm.md 1970-01-01 00:00:00 +0000
2004+++ new/gcc/config/arm/ldmstm.md 2010-11-16 13:08:47 +0000
2005@@ -0,0 +1,1191 @@
2006+/* ARM ldm/stm instruction patterns. This file was automatically generated
2007+ using arm-ldmstm.ml. Please do not edit manually.
2008+
2009+ Copyright (C) 2010 Free Software Foundation, Inc.
2010+ Contributed by CodeSourcery.
2011+
2012+ This file is part of GCC.
2013+
2014+ GCC is free software; you can redistribute it and/or modify it
2015+ under the terms of the GNU General Public License as published
2016+ by the Free Software Foundation; either version 3, or (at your
2017+ option) any later version.
2018+
2019+ GCC is distributed in the hope that it will be useful, but WITHOUT
2020+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
2021+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
2022+ License for more details.
2023+
2024+ You should have received a copy of the GNU General Public License and
2025+ a copy of the GCC Runtime Library Exception along with this program;
2026+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
2027+ <http://www.gnu.org/licenses/>. */
2028+
2029+(define_insn "*ldm4_ia"
2030+ [(match_parallel 0 "load_multiple_operation"
2031+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2032+ (mem:SI (match_operand:SI 1 "s_register_operand" "rk")))
2033+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2034+ (mem:SI (plus:SI (match_dup 1)
2035+ (const_int 4))))
2036+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2037+ (mem:SI (plus:SI (match_dup 1)
2038+ (const_int 8))))
2039+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2040+ (mem:SI (plus:SI (match_dup 1)
2041+ (const_int 12))))])]
2042+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2043+ "ldm%(ia%)\t%1, {%2, %3, %4, %5}"
2044+ [(set_attr "type" "load4")
2045+ (set_attr "predicable" "yes")])
2046+
2047+(define_insn "*thumb_ldm4_ia"
2048+ [(match_parallel 0 "load_multiple_operation"
2049+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2050+ (mem:SI (match_operand:SI 1 "s_register_operand" "l")))
2051+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2052+ (mem:SI (plus:SI (match_dup 1)
2053+ (const_int 4))))
2054+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2055+ (mem:SI (plus:SI (match_dup 1)
2056+ (const_int 8))))
2057+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2058+ (mem:SI (plus:SI (match_dup 1)
2059+ (const_int 12))))])]
2060+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
2061+ "ldm%(ia%)\t%1, {%2, %3, %4, %5}"
2062+ [(set_attr "type" "load4")])
2063+
2064+(define_insn "*ldm4_ia_update"
2065+ [(match_parallel 0 "load_multiple_operation"
2066+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2067+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2068+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2069+ (mem:SI (match_dup 2)))
2070+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2071+ (mem:SI (plus:SI (match_dup 2)
2072+ (const_int 4))))
2073+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2074+ (mem:SI (plus:SI (match_dup 2)
2075+ (const_int 8))))
2076+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2077+ (mem:SI (plus:SI (match_dup 2)
2078+ (const_int 12))))])]
2079+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2080+ "ldm%(ia%)\t%1!, {%3, %4, %5, %6}"
2081+ [(set_attr "type" "load4")
2082+ (set_attr "predicable" "yes")])
2083+
2084+(define_insn "*thumb_ldm4_ia_update"
2085+ [(match_parallel 0 "load_multiple_operation"
2086+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2087+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2088+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2089+ (mem:SI (match_dup 2)))
2090+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2091+ (mem:SI (plus:SI (match_dup 2)
2092+ (const_int 4))))
2093+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2094+ (mem:SI (plus:SI (match_dup 2)
2095+ (const_int 8))))
2096+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2097+ (mem:SI (plus:SI (match_dup 2)
2098+ (const_int 12))))])]
2099+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
2100+ "ldm%(ia%)\t%1!, {%3, %4, %5, %6}"
2101+ [(set_attr "type" "load4")])
2102+
2103+(define_insn "*stm4_ia"
2104+ [(match_parallel 0 "store_multiple_operation"
2105+ [(set (mem:SI (match_operand:SI 1 "s_register_operand" "rk"))
2106+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2107+ (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
2108+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2109+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2110+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2111+ (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
2112+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2113+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2114+ "stm%(ia%)\t%1, {%2, %3, %4, %5}"
2115+ [(set_attr "type" "store4")
2116+ (set_attr "predicable" "yes")])
2117+
2118+(define_insn "*stm4_ia_update"
2119+ [(match_parallel 0 "store_multiple_operation"
2120+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2121+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2122+ (set (mem:SI (match_dup 2))
2123+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2124+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2125+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2126+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2127+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2128+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2129+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2130+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2131+ "stm%(ia%)\t%1!, {%3, %4, %5, %6}"
2132+ [(set_attr "type" "store4")
2133+ (set_attr "predicable" "yes")])
2134+
2135+(define_insn "*thumb_stm4_ia_update"
2136+ [(match_parallel 0 "store_multiple_operation"
2137+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2138+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2139+ (set (mem:SI (match_dup 2))
2140+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2141+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2142+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2143+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2144+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2145+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2146+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2147+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
2148+ "stm%(ia%)\t%1!, {%3, %4, %5, %6}"
2149+ [(set_attr "type" "store4")])
2150+
2151+(define_insn "*ldm4_ib"
2152+ [(match_parallel 0 "load_multiple_operation"
2153+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2154+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2155+ (const_int 4))))
2156+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2157+ (mem:SI (plus:SI (match_dup 1)
2158+ (const_int 8))))
2159+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2160+ (mem:SI (plus:SI (match_dup 1)
2161+ (const_int 12))))
2162+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2163+ (mem:SI (plus:SI (match_dup 1)
2164+ (const_int 16))))])]
2165+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2166+ "ldm%(ib%)\t%1, {%2, %3, %4, %5}"
2167+ [(set_attr "type" "load4")
2168+ (set_attr "predicable" "yes")])
2169+
2170+(define_insn "*ldm4_ib_update"
2171+ [(match_parallel 0 "load_multiple_operation"
2172+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2173+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2174+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2175+ (mem:SI (plus:SI (match_dup 2)
2176+ (const_int 4))))
2177+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2178+ (mem:SI (plus:SI (match_dup 2)
2179+ (const_int 8))))
2180+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2181+ (mem:SI (plus:SI (match_dup 2)
2182+ (const_int 12))))
2183+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2184+ (mem:SI (plus:SI (match_dup 2)
2185+ (const_int 16))))])]
2186+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2187+ "ldm%(ib%)\t%1!, {%3, %4, %5, %6}"
2188+ [(set_attr "type" "load4")
2189+ (set_attr "predicable" "yes")])
2190+
2191+(define_insn "*stm4_ib"
2192+ [(match_parallel 0 "store_multiple_operation"
2193+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int 4)))
2194+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2195+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2196+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2197+ (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
2198+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2199+ (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
2200+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2201+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2202+ "stm%(ib%)\t%1, {%2, %3, %4, %5}"
2203+ [(set_attr "type" "store4")
2204+ (set_attr "predicable" "yes")])
2205+
2206+(define_insn "*stm4_ib_update"
2207+ [(match_parallel 0 "store_multiple_operation"
2208+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2209+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2210+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2211+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2212+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2213+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2214+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2215+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2216+ (set (mem:SI (plus:SI (match_dup 2) (const_int 16)))
2217+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2218+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2219+ "stm%(ib%)\t%1!, {%3, %4, %5, %6}"
2220+ [(set_attr "type" "store4")
2221+ (set_attr "predicable" "yes")])
2222+
2223+(define_insn "*ldm4_da"
2224+ [(match_parallel 0 "load_multiple_operation"
2225+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2226+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2227+ (const_int -12))))
2228+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2229+ (mem:SI (plus:SI (match_dup 1)
2230+ (const_int -8))))
2231+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2232+ (mem:SI (plus:SI (match_dup 1)
2233+ (const_int -4))))
2234+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2235+ (mem:SI (match_dup 1)))])]
2236+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2237+ "ldm%(da%)\t%1, {%2, %3, %4, %5}"
2238+ [(set_attr "type" "load4")
2239+ (set_attr "predicable" "yes")])
2240+
2241+(define_insn "*ldm4_da_update"
2242+ [(match_parallel 0 "load_multiple_operation"
2243+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2244+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2245+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2246+ (mem:SI (plus:SI (match_dup 2)
2247+ (const_int -12))))
2248+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2249+ (mem:SI (plus:SI (match_dup 2)
2250+ (const_int -8))))
2251+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2252+ (mem:SI (plus:SI (match_dup 2)
2253+ (const_int -4))))
2254+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2255+ (mem:SI (match_dup 2)))])]
2256+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2257+ "ldm%(da%)\t%1!, {%3, %4, %5, %6}"
2258+ [(set_attr "type" "load4")
2259+ (set_attr "predicable" "yes")])
2260+
2261+(define_insn "*stm4_da"
2262+ [(match_parallel 0 "store_multiple_operation"
2263+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -12)))
2264+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2265+ (set (mem:SI (plus:SI (match_dup 1) (const_int -8)))
2266+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2267+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2268+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2269+ (set (mem:SI (match_dup 1))
2270+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2271+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2272+ "stm%(da%)\t%1, {%2, %3, %4, %5}"
2273+ [(set_attr "type" "store4")
2274+ (set_attr "predicable" "yes")])
2275+
2276+(define_insn "*stm4_da_update"
2277+ [(match_parallel 0 "store_multiple_operation"
2278+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2279+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2280+ (set (mem:SI (plus:SI (match_dup 2) (const_int -12)))
2281+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2282+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2283+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2284+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2285+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2286+ (set (mem:SI (match_dup 2))
2287+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2288+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2289+ "stm%(da%)\t%1!, {%3, %4, %5, %6}"
2290+ [(set_attr "type" "store4")
2291+ (set_attr "predicable" "yes")])
2292+
2293+(define_insn "*ldm4_db"
2294+ [(match_parallel 0 "load_multiple_operation"
2295+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2296+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2297+ (const_int -16))))
2298+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2299+ (mem:SI (plus:SI (match_dup 1)
2300+ (const_int -12))))
2301+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2302+ (mem:SI (plus:SI (match_dup 1)
2303+ (const_int -8))))
2304+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2305+ (mem:SI (plus:SI (match_dup 1)
2306+ (const_int -4))))])]
2307+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2308+ "ldm%(db%)\t%1, {%2, %3, %4, %5}"
2309+ [(set_attr "type" "load4")
2310+ (set_attr "predicable" "yes")])
2311+
2312+(define_insn "*ldm4_db_update"
2313+ [(match_parallel 0 "load_multiple_operation"
2314+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2315+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2316+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2317+ (mem:SI (plus:SI (match_dup 2)
2318+ (const_int -16))))
2319+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2320+ (mem:SI (plus:SI (match_dup 2)
2321+ (const_int -12))))
2322+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2323+ (mem:SI (plus:SI (match_dup 2)
2324+ (const_int -8))))
2325+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2326+ (mem:SI (plus:SI (match_dup 2)
2327+ (const_int -4))))])]
2328+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2329+ "ldm%(db%)\t%1!, {%3, %4, %5, %6}"
2330+ [(set_attr "type" "load4")
2331+ (set_attr "predicable" "yes")])
2332+
2333+(define_insn "*stm4_db"
2334+ [(match_parallel 0 "store_multiple_operation"
2335+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -16)))
2336+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2337+ (set (mem:SI (plus:SI (match_dup 1) (const_int -12)))
2338+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2339+ (set (mem:SI (plus:SI (match_dup 1) (const_int -8)))
2340+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2341+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2342+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2343+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2344+ "stm%(db%)\t%1, {%2, %3, %4, %5}"
2345+ [(set_attr "type" "store4")
2346+ (set_attr "predicable" "yes")])
2347+
2348+(define_insn "*stm4_db_update"
2349+ [(match_parallel 0 "store_multiple_operation"
2350+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2351+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2352+ (set (mem:SI (plus:SI (match_dup 2) (const_int -16)))
2353+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2354+ (set (mem:SI (plus:SI (match_dup 2) (const_int -12)))
2355+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2356+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2357+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2358+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2359+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2360+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2361+ "stm%(db%)\t%1!, {%3, %4, %5, %6}"
2362+ [(set_attr "type" "store4")
2363+ (set_attr "predicable" "yes")])
2364+
2365+(define_peephole2
2366+ [(set (match_operand:SI 0 "s_register_operand" "")
2367+ (match_operand:SI 4 "memory_operand" ""))
2368+ (set (match_operand:SI 1 "s_register_operand" "")
2369+ (match_operand:SI 5 "memory_operand" ""))
2370+ (set (match_operand:SI 2 "s_register_operand" "")
2371+ (match_operand:SI 6 "memory_operand" ""))
2372+ (set (match_operand:SI 3 "s_register_operand" "")
2373+ (match_operand:SI 7 "memory_operand" ""))]
2374+ ""
2375+ [(const_int 0)]
2376+{
2377+ if (gen_ldm_seq (operands, 4, false))
2378+ DONE;
2379+ else
2380+ FAIL;
2381+})
2382+
2383+(define_peephole2
2384+ [(set (match_operand:SI 0 "s_register_operand" "")
2385+ (match_operand:SI 4 "memory_operand" ""))
2386+ (parallel
2387+ [(set (match_operand:SI 1 "s_register_operand" "")
2388+ (match_operand:SI 5 "memory_operand" ""))
2389+ (set (match_operand:SI 2 "s_register_operand" "")
2390+ (match_operand:SI 6 "memory_operand" ""))
2391+ (set (match_operand:SI 3 "s_register_operand" "")
2392+ (match_operand:SI 7 "memory_operand" ""))])]
2393+ ""
2394+ [(const_int 0)]
2395+{
2396+ if (gen_ldm_seq (operands, 4, false))
2397+ DONE;
2398+ else
2399+ FAIL;
2400+})
2401+
2402+(define_peephole2
2403+ [(set (match_operand:SI 0 "s_register_operand" "")
2404+ (match_operand:SI 8 "const_int_operand" ""))
2405+ (set (match_operand:SI 4 "memory_operand" "")
2406+ (match_dup 0))
2407+ (set (match_operand:SI 1 "s_register_operand" "")
2408+ (match_operand:SI 9 "const_int_operand" ""))
2409+ (set (match_operand:SI 5 "memory_operand" "")
2410+ (match_dup 1))
2411+ (set (match_operand:SI 2 "s_register_operand" "")
2412+ (match_operand:SI 10 "const_int_operand" ""))
2413+ (set (match_operand:SI 6 "memory_operand" "")
2414+ (match_dup 2))
2415+ (set (match_operand:SI 3 "s_register_operand" "")
2416+ (match_operand:SI 11 "const_int_operand" ""))
2417+ (set (match_operand:SI 7 "memory_operand" "")
2418+ (match_dup 3))]
2419+ ""
2420+ [(const_int 0)]
2421+{
2422+ if (gen_const_stm_seq (operands, 4))
2423+ DONE;
2424+ else
2425+ FAIL;
2426+})
2427+
2428+(define_peephole2
2429+ [(set (match_operand:SI 0 "s_register_operand" "")
2430+ (match_operand:SI 8 "const_int_operand" ""))
2431+ (set (match_operand:SI 1 "s_register_operand" "")
2432+ (match_operand:SI 9 "const_int_operand" ""))
2433+ (set (match_operand:SI 2 "s_register_operand" "")
2434+ (match_operand:SI 10 "const_int_operand" ""))
2435+ (set (match_operand:SI 3 "s_register_operand" "")
2436+ (match_operand:SI 11 "const_int_operand" ""))
2437+ (set (match_operand:SI 4 "memory_operand" "")
2438+ (match_dup 0))
2439+ (set (match_operand:SI 5 "memory_operand" "")
2440+ (match_dup 1))
2441+ (set (match_operand:SI 6 "memory_operand" "")
2442+ (match_dup 2))
2443+ (set (match_operand:SI 7 "memory_operand" "")
2444+ (match_dup 3))]
2445+ ""
2446+ [(const_int 0)]
2447+{
2448+ if (gen_const_stm_seq (operands, 4))
2449+ DONE;
2450+ else
2451+ FAIL;
2452+})
2453+
2454+(define_peephole2
2455+ [(set (match_operand:SI 4 "memory_operand" "")
2456+ (match_operand:SI 0 "s_register_operand" ""))
2457+ (set (match_operand:SI 5 "memory_operand" "")
2458+ (match_operand:SI 1 "s_register_operand" ""))
2459+ (set (match_operand:SI 6 "memory_operand" "")
2460+ (match_operand:SI 2 "s_register_operand" ""))
2461+ (set (match_operand:SI 7 "memory_operand" "")
2462+ (match_operand:SI 3 "s_register_operand" ""))]
2463+ ""
2464+ [(const_int 0)]
2465+{
2466+ if (gen_stm_seq (operands, 4))
2467+ DONE;
2468+ else
2469+ FAIL;
2470+})
2471+
2472+(define_insn "*ldm3_ia"
2473+ [(match_parallel 0 "load_multiple_operation"
2474+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2475+ (mem:SI (match_operand:SI 1 "s_register_operand" "rk")))
2476+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2477+ (mem:SI (plus:SI (match_dup 1)
2478+ (const_int 4))))
2479+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2480+ (mem:SI (plus:SI (match_dup 1)
2481+ (const_int 8))))])]
2482+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2483+ "ldm%(ia%)\t%1, {%2, %3, %4}"
2484+ [(set_attr "type" "load3")
2485+ (set_attr "predicable" "yes")])
2486+
2487+(define_insn "*thumb_ldm3_ia"
2488+ [(match_parallel 0 "load_multiple_operation"
2489+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2490+ (mem:SI (match_operand:SI 1 "s_register_operand" "l")))
2491+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2492+ (mem:SI (plus:SI (match_dup 1)
2493+ (const_int 4))))
2494+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2495+ (mem:SI (plus:SI (match_dup 1)
2496+ (const_int 8))))])]
2497+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
2498+ "ldm%(ia%)\t%1, {%2, %3, %4}"
2499+ [(set_attr "type" "load3")])
2500+
2501+(define_insn "*ldm3_ia_update"
2502+ [(match_parallel 0 "load_multiple_operation"
2503+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2504+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2505+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2506+ (mem:SI (match_dup 2)))
2507+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2508+ (mem:SI (plus:SI (match_dup 2)
2509+ (const_int 4))))
2510+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2511+ (mem:SI (plus:SI (match_dup 2)
2512+ (const_int 8))))])]
2513+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2514+ "ldm%(ia%)\t%1!, {%3, %4, %5}"
2515+ [(set_attr "type" "load3")
2516+ (set_attr "predicable" "yes")])
2517+
2518+(define_insn "*thumb_ldm3_ia_update"
2519+ [(match_parallel 0 "load_multiple_operation"
2520+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2521+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2522+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2523+ (mem:SI (match_dup 2)))
2524+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2525+ (mem:SI (plus:SI (match_dup 2)
2526+ (const_int 4))))
2527+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2528+ (mem:SI (plus:SI (match_dup 2)
2529+ (const_int 8))))])]
2530+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
2531+ "ldm%(ia%)\t%1!, {%3, %4, %5}"
2532+ [(set_attr "type" "load3")])
2533+
2534+(define_insn "*stm3_ia"
2535+ [(match_parallel 0 "store_multiple_operation"
2536+ [(set (mem:SI (match_operand:SI 1 "s_register_operand" "rk"))
2537+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2538+ (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
2539+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2540+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2541+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2542+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2543+ "stm%(ia%)\t%1, {%2, %3, %4}"
2544+ [(set_attr "type" "store3")
2545+ (set_attr "predicable" "yes")])
2546+
2547+(define_insn "*stm3_ia_update"
2548+ [(match_parallel 0 "store_multiple_operation"
2549+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2550+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2551+ (set (mem:SI (match_dup 2))
2552+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2553+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2554+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2555+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2556+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2557+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2558+ "stm%(ia%)\t%1!, {%3, %4, %5}"
2559+ [(set_attr "type" "store3")
2560+ (set_attr "predicable" "yes")])
2561+
2562+(define_insn "*thumb_stm3_ia_update"
2563+ [(match_parallel 0 "store_multiple_operation"
2564+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2565+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2566+ (set (mem:SI (match_dup 2))
2567+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2568+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2569+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2570+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2571+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2572+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
2573+ "stm%(ia%)\t%1!, {%3, %4, %5}"
2574+ [(set_attr "type" "store3")])
2575+
2576+(define_insn "*ldm3_ib"
2577+ [(match_parallel 0 "load_multiple_operation"
2578+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2579+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2580+ (const_int 4))))
2581+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2582+ (mem:SI (plus:SI (match_dup 1)
2583+ (const_int 8))))
2584+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2585+ (mem:SI (plus:SI (match_dup 1)
2586+ (const_int 12))))])]
2587+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2588+ "ldm%(ib%)\t%1, {%2, %3, %4}"
2589+ [(set_attr "type" "load3")
2590+ (set_attr "predicable" "yes")])
2591+
2592+(define_insn "*ldm3_ib_update"
2593+ [(match_parallel 0 "load_multiple_operation"
2594+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2595+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2596+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2597+ (mem:SI (plus:SI (match_dup 2)
2598+ (const_int 4))))
2599+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2600+ (mem:SI (plus:SI (match_dup 2)
2601+ (const_int 8))))
2602+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2603+ (mem:SI (plus:SI (match_dup 2)
2604+ (const_int 12))))])]
2605+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2606+ "ldm%(ib%)\t%1!, {%3, %4, %5}"
2607+ [(set_attr "type" "load3")
2608+ (set_attr "predicable" "yes")])
2609+
2610+(define_insn "*stm3_ib"
2611+ [(match_parallel 0 "store_multiple_operation"
2612+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int 4)))
2613+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2614+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2615+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2616+ (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
2617+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2618+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2619+ "stm%(ib%)\t%1, {%2, %3, %4}"
2620+ [(set_attr "type" "store3")
2621+ (set_attr "predicable" "yes")])
2622+
2623+(define_insn "*stm3_ib_update"
2624+ [(match_parallel 0 "store_multiple_operation"
2625+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2626+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2627+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2628+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2629+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2630+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2631+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2632+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2633+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2634+ "stm%(ib%)\t%1!, {%3, %4, %5}"
2635+ [(set_attr "type" "store3")
2636+ (set_attr "predicable" "yes")])
2637+
2638+(define_insn "*ldm3_da"
2639+ [(match_parallel 0 "load_multiple_operation"
2640+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2641+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2642+ (const_int -8))))
2643+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2644+ (mem:SI (plus:SI (match_dup 1)
2645+ (const_int -4))))
2646+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2647+ (mem:SI (match_dup 1)))])]
2648+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2649+ "ldm%(da%)\t%1, {%2, %3, %4}"
2650+ [(set_attr "type" "load3")
2651+ (set_attr "predicable" "yes")])
2652+
2653+(define_insn "*ldm3_da_update"
2654+ [(match_parallel 0 "load_multiple_operation"
2655+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2656+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2657+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2658+ (mem:SI (plus:SI (match_dup 2)
2659+ (const_int -8))))
2660+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2661+ (mem:SI (plus:SI (match_dup 2)
2662+ (const_int -4))))
2663+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2664+ (mem:SI (match_dup 2)))])]
2665+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2666+ "ldm%(da%)\t%1!, {%3, %4, %5}"
2667+ [(set_attr "type" "load3")
2668+ (set_attr "predicable" "yes")])
2669+
2670+(define_insn "*stm3_da"
2671+ [(match_parallel 0 "store_multiple_operation"
2672+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -8)))
2673+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2674+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2675+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2676+ (set (mem:SI (match_dup 1))
2677+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2678+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2679+ "stm%(da%)\t%1, {%2, %3, %4}"
2680+ [(set_attr "type" "store3")
2681+ (set_attr "predicable" "yes")])
2682+
2683+(define_insn "*stm3_da_update"
2684+ [(match_parallel 0 "store_multiple_operation"
2685+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2686+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2687+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2688+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2689+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2690+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2691+ (set (mem:SI (match_dup 2))
2692+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2693+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2694+ "stm%(da%)\t%1!, {%3, %4, %5}"
2695+ [(set_attr "type" "store3")
2696+ (set_attr "predicable" "yes")])
2697+
2698+(define_insn "*ldm3_db"
2699+ [(match_parallel 0 "load_multiple_operation"
2700+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2701+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2702+ (const_int -12))))
2703+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2704+ (mem:SI (plus:SI (match_dup 1)
2705+ (const_int -8))))
2706+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2707+ (mem:SI (plus:SI (match_dup 1)
2708+ (const_int -4))))])]
2709+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2710+ "ldm%(db%)\t%1, {%2, %3, %4}"
2711+ [(set_attr "type" "load3")
2712+ (set_attr "predicable" "yes")])
2713+
2714+(define_insn "*ldm3_db_update"
2715+ [(match_parallel 0 "load_multiple_operation"
2716+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2717+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2718+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2719+ (mem:SI (plus:SI (match_dup 2)
2720+ (const_int -12))))
2721+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2722+ (mem:SI (plus:SI (match_dup 2)
2723+ (const_int -8))))
2724+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2725+ (mem:SI (plus:SI (match_dup 2)
2726+ (const_int -4))))])]
2727+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2728+ "ldm%(db%)\t%1!, {%3, %4, %5}"
2729+ [(set_attr "type" "load3")
2730+ (set_attr "predicable" "yes")])
2731+
2732+(define_insn "*stm3_db"
2733+ [(match_parallel 0 "store_multiple_operation"
2734+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -12)))
2735+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2736+ (set (mem:SI (plus:SI (match_dup 1) (const_int -8)))
2737+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2738+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2739+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2740+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2741+ "stm%(db%)\t%1, {%2, %3, %4}"
2742+ [(set_attr "type" "store3")
2743+ (set_attr "predicable" "yes")])
2744+
2745+(define_insn "*stm3_db_update"
2746+ [(match_parallel 0 "store_multiple_operation"
2747+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2748+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2749+ (set (mem:SI (plus:SI (match_dup 2) (const_int -12)))
2750+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2751+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2752+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2753+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2754+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2755+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2756+ "stm%(db%)\t%1!, {%3, %4, %5}"
2757+ [(set_attr "type" "store3")
2758+ (set_attr "predicable" "yes")])
2759+
2760+(define_peephole2
2761+ [(set (match_operand:SI 0 "s_register_operand" "")
2762+ (match_operand:SI 3 "memory_operand" ""))
2763+ (set (match_operand:SI 1 "s_register_operand" "")
2764+ (match_operand:SI 4 "memory_operand" ""))
2765+ (set (match_operand:SI 2 "s_register_operand" "")
2766+ (match_operand:SI 5 "memory_operand" ""))]
2767+ ""
2768+ [(const_int 0)]
2769+{
2770+ if (gen_ldm_seq (operands, 3, false))
2771+ DONE;
2772+ else
2773+ FAIL;
2774+})
2775+
2776+(define_peephole2
2777+ [(set (match_operand:SI 0 "s_register_operand" "")
2778+ (match_operand:SI 3 "memory_operand" ""))
2779+ (parallel
2780+ [(set (match_operand:SI 1 "s_register_operand" "")
2781+ (match_operand:SI 4 "memory_operand" ""))
2782+ (set (match_operand:SI 2 "s_register_operand" "")
2783+ (match_operand:SI 5 "memory_operand" ""))])]
2784+ ""
2785+ [(const_int 0)]
2786+{
2787+ if (gen_ldm_seq (operands, 3, false))
2788+ DONE;
2789+ else
2790+ FAIL;
2791+})
2792+
2793+(define_peephole2
2794+ [(set (match_operand:SI 0 "s_register_operand" "")
2795+ (match_operand:SI 6 "const_int_operand" ""))
2796+ (set (match_operand:SI 3 "memory_operand" "")
2797+ (match_dup 0))
2798+ (set (match_operand:SI 1 "s_register_operand" "")
2799+ (match_operand:SI 7 "const_int_operand" ""))
2800+ (set (match_operand:SI 4 "memory_operand" "")
2801+ (match_dup 1))
2802+ (set (match_operand:SI 2 "s_register_operand" "")
2803+ (match_operand:SI 8 "const_int_operand" ""))
2804+ (set (match_operand:SI 5 "memory_operand" "")
2805+ (match_dup 2))]
2806+ ""
2807+ [(const_int 0)]
2808+{
2809+ if (gen_const_stm_seq (operands, 3))
2810+ DONE;
2811+ else
2812+ FAIL;
2813+})
2814+
2815+(define_peephole2
2816+ [(set (match_operand:SI 0 "s_register_operand" "")
2817+ (match_operand:SI 6 "const_int_operand" ""))
2818+ (set (match_operand:SI 1 "s_register_operand" "")
2819+ (match_operand:SI 7 "const_int_operand" ""))
2820+ (set (match_operand:SI 2 "s_register_operand" "")
2821+ (match_operand:SI 8 "const_int_operand" ""))
2822+ (set (match_operand:SI 3 "memory_operand" "")
2823+ (match_dup 0))
2824+ (set (match_operand:SI 4 "memory_operand" "")
2825+ (match_dup 1))
2826+ (set (match_operand:SI 5 "memory_operand" "")
2827+ (match_dup 2))]
2828+ ""
2829+ [(const_int 0)]
2830+{
2831+ if (gen_const_stm_seq (operands, 3))
2832+ DONE;
2833+ else
2834+ FAIL;
2835+})
2836+
2837+(define_peephole2
2838+ [(set (match_operand:SI 3 "memory_operand" "")
2839+ (match_operand:SI 0 "s_register_operand" ""))
2840+ (set (match_operand:SI 4 "memory_operand" "")
2841+ (match_operand:SI 1 "s_register_operand" ""))
2842+ (set (match_operand:SI 5 "memory_operand" "")
2843+ (match_operand:SI 2 "s_register_operand" ""))]
2844+ ""
2845+ [(const_int 0)]
2846+{
2847+ if (gen_stm_seq (operands, 3))
2848+ DONE;
2849+ else
2850+ FAIL;
2851+})
2852+
2853+(define_insn "*ldm2_ia"
2854+ [(match_parallel 0 "load_multiple_operation"
2855+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2856+ (mem:SI (match_operand:SI 1 "s_register_operand" "rk")))
2857+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2858+ (mem:SI (plus:SI (match_dup 1)
2859+ (const_int 4))))])]
2860+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
2861+ "ldm%(ia%)\t%1, {%2, %3}"
2862+ [(set_attr "type" "load2")
2863+ (set_attr "predicable" "yes")])
2864+
2865+(define_insn "*thumb_ldm2_ia"
2866+ [(match_parallel 0 "load_multiple_operation"
2867+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2868+ (mem:SI (match_operand:SI 1 "s_register_operand" "l")))
2869+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2870+ (mem:SI (plus:SI (match_dup 1)
2871+ (const_int 4))))])]
2872+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2"
2873+ "ldm%(ia%)\t%1, {%2, %3}"
2874+ [(set_attr "type" "load2")])
2875+
2876+(define_insn "*ldm2_ia_update"
2877+ [(match_parallel 0 "load_multiple_operation"
2878+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2879+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2880+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2881+ (mem:SI (match_dup 2)))
2882+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2883+ (mem:SI (plus:SI (match_dup 2)
2884+ (const_int 4))))])]
2885+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2886+ "ldm%(ia%)\t%1!, {%3, %4}"
2887+ [(set_attr "type" "load2")
2888+ (set_attr "predicable" "yes")])
2889+
2890+(define_insn "*thumb_ldm2_ia_update"
2891+ [(match_parallel 0 "load_multiple_operation"
2892+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2893+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2894+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2895+ (mem:SI (match_dup 2)))
2896+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2897+ (mem:SI (plus:SI (match_dup 2)
2898+ (const_int 4))))])]
2899+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
2900+ "ldm%(ia%)\t%1!, {%3, %4}"
2901+ [(set_attr "type" "load2")])
2902+
2903+(define_insn "*stm2_ia"
2904+ [(match_parallel 0 "store_multiple_operation"
2905+ [(set (mem:SI (match_operand:SI 1 "s_register_operand" "rk"))
2906+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2907+ (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
2908+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
2909+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
2910+ "stm%(ia%)\t%1, {%2, %3}"
2911+ [(set_attr "type" "store2")
2912+ (set_attr "predicable" "yes")])
2913+
2914+(define_insn "*stm2_ia_update"
2915+ [(match_parallel 0 "store_multiple_operation"
2916+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2917+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2918+ (set (mem:SI (match_dup 2))
2919+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2920+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2921+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2922+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2923+ "stm%(ia%)\t%1!, {%3, %4}"
2924+ [(set_attr "type" "store2")
2925+ (set_attr "predicable" "yes")])
2926+
2927+(define_insn "*thumb_stm2_ia_update"
2928+ [(match_parallel 0 "store_multiple_operation"
2929+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2930+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2931+ (set (mem:SI (match_dup 2))
2932+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2933+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2934+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2935+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
2936+ "stm%(ia%)\t%1!, {%3, %4}"
2937+ [(set_attr "type" "store2")])
2938+
2939+(define_insn "*ldm2_ib"
2940+ [(match_parallel 0 "load_multiple_operation"
2941+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2942+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2943+ (const_int 4))))
2944+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2945+ (mem:SI (plus:SI (match_dup 1)
2946+ (const_int 8))))])]
2947+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2948+ "ldm%(ib%)\t%1, {%2, %3}"
2949+ [(set_attr "type" "load2")
2950+ (set_attr "predicable" "yes")])
2951+
2952+(define_insn "*ldm2_ib_update"
2953+ [(match_parallel 0 "load_multiple_operation"
2954+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2955+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2956+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2957+ (mem:SI (plus:SI (match_dup 2)
2958+ (const_int 4))))
2959+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2960+ (mem:SI (plus:SI (match_dup 2)
2961+ (const_int 8))))])]
2962+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2963+ "ldm%(ib%)\t%1!, {%3, %4}"
2964+ [(set_attr "type" "load2")
2965+ (set_attr "predicable" "yes")])
2966+
2967+(define_insn "*stm2_ib"
2968+ [(match_parallel 0 "store_multiple_operation"
2969+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int 4)))
2970+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2971+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2972+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
2973+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2974+ "stm%(ib%)\t%1, {%2, %3}"
2975+ [(set_attr "type" "store2")
2976+ (set_attr "predicable" "yes")])
2977+
2978+(define_insn "*stm2_ib_update"
2979+ [(match_parallel 0 "store_multiple_operation"
2980+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2981+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2982+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2983+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2984+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2985+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2986+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2987+ "stm%(ib%)\t%1!, {%3, %4}"
2988+ [(set_attr "type" "store2")
2989+ (set_attr "predicable" "yes")])
2990+
2991+(define_insn "*ldm2_da"
2992+ [(match_parallel 0 "load_multiple_operation"
2993+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2994+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2995+ (const_int -4))))
2996+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2997+ (mem:SI (match_dup 1)))])]
2998+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2999+ "ldm%(da%)\t%1, {%2, %3}"
3000+ [(set_attr "type" "load2")
3001+ (set_attr "predicable" "yes")])
3002+
3003+(define_insn "*ldm2_da_update"
3004+ [(match_parallel 0 "load_multiple_operation"
3005+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
3006+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3007+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
3008+ (mem:SI (plus:SI (match_dup 2)
3009+ (const_int -4))))
3010+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
3011+ (mem:SI (match_dup 2)))])]
3012+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
3013+ "ldm%(da%)\t%1!, {%3, %4}"
3014+ [(set_attr "type" "load2")
3015+ (set_attr "predicable" "yes")])
3016+
3017+(define_insn "*stm2_da"
3018+ [(match_parallel 0 "store_multiple_operation"
3019+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -4)))
3020+ (match_operand:SI 2 "arm_hard_register_operand" ""))
3021+ (set (mem:SI (match_dup 1))
3022+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
3023+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
3024+ "stm%(da%)\t%1, {%2, %3}"
3025+ [(set_attr "type" "store2")
3026+ (set_attr "predicable" "yes")])
3027+
3028+(define_insn "*stm2_da_update"
3029+ [(match_parallel 0 "store_multiple_operation"
3030+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
3031+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3032+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
3033+ (match_operand:SI 3 "arm_hard_register_operand" ""))
3034+ (set (mem:SI (match_dup 2))
3035+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
3036+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
3037+ "stm%(da%)\t%1!, {%3, %4}"
3038+ [(set_attr "type" "store2")
3039+ (set_attr "predicable" "yes")])
3040+
3041+(define_insn "*ldm2_db"
3042+ [(match_parallel 0 "load_multiple_operation"
3043+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
3044+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
3045+ (const_int -8))))
3046+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
3047+ (mem:SI (plus:SI (match_dup 1)
3048+ (const_int -4))))])]
3049+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
3050+ "ldm%(db%)\t%1, {%2, %3}"
3051+ [(set_attr "type" "load2")
3052+ (set_attr "predicable" "yes")])
3053+
3054+(define_insn "*ldm2_db_update"
3055+ [(match_parallel 0 "load_multiple_operation"
3056+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
3057+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3058+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
3059+ (mem:SI (plus:SI (match_dup 2)
3060+ (const_int -8))))
3061+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
3062+ (mem:SI (plus:SI (match_dup 2)
3063+ (const_int -4))))])]
3064+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
3065+ "ldm%(db%)\t%1!, {%3, %4}"
3066+ [(set_attr "type" "load2")
3067+ (set_attr "predicable" "yes")])
3068+
3069+(define_insn "*stm2_db"
3070+ [(match_parallel 0 "store_multiple_operation"
3071+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -8)))
3072+ (match_operand:SI 2 "arm_hard_register_operand" ""))
3073+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
3074+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
3075+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
3076+ "stm%(db%)\t%1, {%2, %3}"
3077+ [(set_attr "type" "store2")
3078+ (set_attr "predicable" "yes")])
3079+
3080+(define_insn "*stm2_db_update"
3081+ [(match_parallel 0 "store_multiple_operation"
3082+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
3083+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3084+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
3085+ (match_operand:SI 3 "arm_hard_register_operand" ""))
3086+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
3087+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
3088+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
3089+ "stm%(db%)\t%1!, {%3, %4}"
3090+ [(set_attr "type" "store2")
3091+ (set_attr "predicable" "yes")])
3092+
3093+(define_peephole2
3094+ [(set (match_operand:SI 0 "s_register_operand" "")
3095+ (match_operand:SI 2 "memory_operand" ""))
3096+ (set (match_operand:SI 1 "s_register_operand" "")
3097+ (match_operand:SI 3 "memory_operand" ""))]
3098+ ""
3099+ [(const_int 0)]
3100+{
3101+ if (gen_ldm_seq (operands, 2, false))
3102+ DONE;
3103+ else
3104+ FAIL;
3105+})
3106+
3107+(define_peephole2
3108+ [(set (match_operand:SI 0 "s_register_operand" "")
3109+ (match_operand:SI 4 "const_int_operand" ""))
3110+ (set (match_operand:SI 2 "memory_operand" "")
3111+ (match_dup 0))
3112+ (set (match_operand:SI 1 "s_register_operand" "")
3113+ (match_operand:SI 5 "const_int_operand" ""))
3114+ (set (match_operand:SI 3 "memory_operand" "")
3115+ (match_dup 1))]
3116+ ""
3117+ [(const_int 0)]
3118+{
3119+ if (gen_const_stm_seq (operands, 2))
3120+ DONE;
3121+ else
3122+ FAIL;
3123+})
3124+
3125+(define_peephole2
3126+ [(set (match_operand:SI 0 "s_register_operand" "")
3127+ (match_operand:SI 4 "const_int_operand" ""))
3128+ (set (match_operand:SI 1 "s_register_operand" "")
3129+ (match_operand:SI 5 "const_int_operand" ""))
3130+ (set (match_operand:SI 2 "memory_operand" "")
3131+ (match_dup 0))
3132+ (set (match_operand:SI 3 "memory_operand" "")
3133+ (match_dup 1))]
3134+ ""
3135+ [(const_int 0)]
3136+{
3137+ if (gen_const_stm_seq (operands, 2))
3138+ DONE;
3139+ else
3140+ FAIL;
3141+})
3142+
3143+(define_peephole2
3144+ [(set (match_operand:SI 2 "memory_operand" "")
3145+ (match_operand:SI 0 "s_register_operand" ""))
3146+ (set (match_operand:SI 3 "memory_operand" "")
3147+ (match_operand:SI 1 "s_register_operand" ""))]
3148+ ""
3149+ [(const_int 0)]
3150+{
3151+ if (gen_stm_seq (operands, 2))
3152+ DONE;
3153+ else
3154+ FAIL;
3155+})
3156+
3157+(define_peephole2
3158+ [(set (match_operand:SI 0 "s_register_operand" "")
3159+ (match_operand:SI 2 "memory_operand" ""))
3160+ (set (match_operand:SI 1 "s_register_operand" "")
3161+ (match_operand:SI 3 "memory_operand" ""))
3162+ (parallel
3163+ [(set (match_operand:SI 4 "s_register_operand" "")
3164+ (match_operator:SI 5 "commutative_binary_operator"
3165+ [(match_operand:SI 6 "s_register_operand" "")
3166+ (match_operand:SI 7 "s_register_operand" "")]))
3167+ (clobber (reg:CC CC_REGNUM))])]
3168+ "(((operands[6] == operands[0] && operands[7] == operands[1])
3169+ || (operands[7] == operands[0] && operands[6] == operands[1]))
3170+ && peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, operands[1]))"
3171+ [(parallel
3172+ [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))
3173+ (clobber (reg:CC CC_REGNUM))])]
3174+{
3175+ if (!gen_ldm_seq (operands, 2, true))
3176+ FAIL;
3177+})
3178+
3179+(define_peephole2
3180+ [(set (match_operand:SI 0 "s_register_operand" "")
3181+ (match_operand:SI 2 "memory_operand" ""))
3182+ (set (match_operand:SI 1 "s_register_operand" "")
3183+ (match_operand:SI 3 "memory_operand" ""))
3184+ (set (match_operand:SI 4 "s_register_operand" "")
3185+ (match_operator:SI 5 "commutative_binary_operator"
3186+ [(match_operand:SI 6 "s_register_operand" "")
3187+ (match_operand:SI 7 "s_register_operand" "")]))]
3188+ "(((operands[6] == operands[0] && operands[7] == operands[1])
3189+ || (operands[7] == operands[0] && operands[6] == operands[1]))
3190+ && peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, operands[1]))"
3191+ [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))]
3192+{
3193+ if (!gen_ldm_seq (operands, 2, true))
3194+ FAIL;
3195+})
3196+
3197
3198=== modified file 'gcc/config/arm/predicates.md'
3199--- old/gcc/config/arm/predicates.md 2010-11-04 10:45:05 +0000
3200+++ new/gcc/config/arm/predicates.md 2010-11-16 12:32:34 +0000
3201@@ -211,6 +211,11 @@
3202 (and (match_code "ior,xor,and")
3203 (match_test "mode == GET_MODE (op)")))
3204
3205+;; True for commutative operators
3206+(define_special_predicate "commutative_binary_operator"
3207+ (and (match_code "ior,xor,and,plus")
3208+ (match_test "mode == GET_MODE (op)")))
3209+
3210 ;; True for shift operators.
3211 (define_special_predicate "shift_operator"
3212 (and (ior (ior (and (match_code "mult")
3213@@ -334,16 +339,20 @@
3214 (match_code "parallel")
3215 {
3216 HOST_WIDE_INT count = XVECLEN (op, 0);
3217- int dest_regno;
3218+ unsigned dest_regno;
3219 rtx src_addr;
3220 HOST_WIDE_INT i = 1, base = 0;
3221+ HOST_WIDE_INT offset = 0;
3222 rtx elt;
3223+ bool addr_reg_loaded = false;
3224+ bool update = false;
3225
3226 if (low_irq_latency)
3227 return false;
3228
3229 if (count <= 1
3230- || GET_CODE (XVECEXP (op, 0, 0)) != SET)
3231+ || GET_CODE (XVECEXP (op, 0, 0)) != SET
3232+ || !REG_P (SET_DEST (XVECEXP (op, 0, 0))))
3233 return false;
3234
3235 /* Check to see if this might be a write-back. */
3236@@ -351,6 +360,7 @@
3237 {
3238 i++;
3239 base = 1;
3240+ update = true;
3241
3242 /* Now check it more carefully. */
3243 if (GET_CODE (SET_DEST (elt)) != REG
3244@@ -369,6 +379,15 @@
3245
3246 dest_regno = REGNO (SET_DEST (XVECEXP (op, 0, i - 1)));
3247 src_addr = XEXP (SET_SRC (XVECEXP (op, 0, i - 1)), 0);
3248+ if (GET_CODE (src_addr) == PLUS)
3249+ {
3250+ if (GET_CODE (XEXP (src_addr, 1)) != CONST_INT)
3251+ return false;
3252+ offset = INTVAL (XEXP (src_addr, 1));
3253+ src_addr = XEXP (src_addr, 0);
3254+ }
3255+ if (!REG_P (src_addr))
3256+ return false;
3257
3258 for (; i < count; i++)
3259 {
3260@@ -377,16 +396,28 @@
3261 if (GET_CODE (elt) != SET
3262 || GET_CODE (SET_DEST (elt)) != REG
3263 || GET_MODE (SET_DEST (elt)) != SImode
3264- || REGNO (SET_DEST (elt)) != (unsigned int)(dest_regno + i - base)
3265+ || REGNO (SET_DEST (elt)) <= dest_regno
3266 || GET_CODE (SET_SRC (elt)) != MEM
3267 || GET_MODE (SET_SRC (elt)) != SImode
3268- || GET_CODE (XEXP (SET_SRC (elt), 0)) != PLUS
3269- || !rtx_equal_p (XEXP (XEXP (SET_SRC (elt), 0), 0), src_addr)
3270- || GET_CODE (XEXP (XEXP (SET_SRC (elt), 0), 1)) != CONST_INT
3271- || INTVAL (XEXP (XEXP (SET_SRC (elt), 0), 1)) != (i - base) * 4)
3272+ || ((GET_CODE (XEXP (SET_SRC (elt), 0)) != PLUS
3273+ || !rtx_equal_p (XEXP (XEXP (SET_SRC (elt), 0), 0), src_addr)
3274+ || GET_CODE (XEXP (XEXP (SET_SRC (elt), 0), 1)) != CONST_INT
3275+ || INTVAL (XEXP (XEXP (SET_SRC (elt), 0), 1)) != offset + (i - base) * 4)
3276+ && (!REG_P (XEXP (SET_SRC (elt), 0))
3277+ || offset + (i - base) * 4 != 0)))
3278 return false;
3279+ dest_regno = REGNO (SET_DEST (elt));
3280+ if (dest_regno == REGNO (src_addr))
3281+ addr_reg_loaded = true;
3282 }
3283-
3284+ /* For Thumb, we only have updating instructions. If the pattern does
3285+ not describe an update, it must be because the address register is
3286+ in the list of loaded registers - on the hardware, this has the effect
3287+ of overriding the update. */
3288+ if (update && addr_reg_loaded)
3289+ return false;
3290+ if (TARGET_THUMB1)
3291+ return update || addr_reg_loaded;
3292 return true;
3293 })
3294
3295@@ -394,9 +425,9 @@
3296 (match_code "parallel")
3297 {
3298 HOST_WIDE_INT count = XVECLEN (op, 0);
3299- int src_regno;
3300+ unsigned src_regno;
3301 rtx dest_addr;
3302- HOST_WIDE_INT i = 1, base = 0;
3303+ HOST_WIDE_INT i = 1, base = 0, offset = 0;
3304 rtx elt;
3305
3306 if (low_irq_latency)
3307@@ -430,6 +461,16 @@
3308 src_regno = REGNO (SET_SRC (XVECEXP (op, 0, i - 1)));
3309 dest_addr = XEXP (SET_DEST (XVECEXP (op, 0, i - 1)), 0);
3310
3311+ if (GET_CODE (dest_addr) == PLUS)
3312+ {
3313+ if (GET_CODE (XEXP (dest_addr, 1)) != CONST_INT)
3314+ return false;
3315+ offset = INTVAL (XEXP (dest_addr, 1));
3316+ dest_addr = XEXP (dest_addr, 0);
3317+ }
3318+ if (!REG_P (dest_addr))
3319+ return false;
3320+
3321 for (; i < count; i++)
3322 {
3323 elt = XVECEXP (op, 0, i);
3324@@ -437,14 +478,17 @@
3325 if (GET_CODE (elt) != SET
3326 || GET_CODE (SET_SRC (elt)) != REG
3327 || GET_MODE (SET_SRC (elt)) != SImode
3328- || REGNO (SET_SRC (elt)) != (unsigned int)(src_regno + i - base)
3329+ || REGNO (SET_SRC (elt)) <= src_regno
3330 || GET_CODE (SET_DEST (elt)) != MEM
3331 || GET_MODE (SET_DEST (elt)) != SImode
3332- || GET_CODE (XEXP (SET_DEST (elt), 0)) != PLUS
3333- || !rtx_equal_p (XEXP (XEXP (SET_DEST (elt), 0), 0), dest_addr)
3334- || GET_CODE (XEXP (XEXP (SET_DEST (elt), 0), 1)) != CONST_INT
3335- || INTVAL (XEXP (XEXP (SET_DEST (elt), 0), 1)) != (i - base) * 4)
3336+ || ((GET_CODE (XEXP (SET_DEST (elt), 0)) != PLUS
3337+ || !rtx_equal_p (XEXP (XEXP (SET_DEST (elt), 0), 0), dest_addr)
3338+ || GET_CODE (XEXP (XEXP (SET_DEST (elt), 0), 1)) != CONST_INT
3339+ || INTVAL (XEXP (XEXP (SET_DEST (elt), 0), 1)) != offset + (i - base) * 4)
3340+ && (!REG_P (XEXP (SET_DEST (elt), 0))
3341+ || offset + (i - base) * 4 != 0)))
3342 return false;
3343+ src_regno = REGNO (SET_SRC (elt));
3344 }
3345
3346 return true;
3347
3348=== modified file 'gcc/config/i386/i386.md'
3349--- old/gcc/config/i386/i386.md 2011-01-05 12:12:18 +0000
3350+++ new/gcc/config/i386/i386.md 2011-01-05 18:20:37 +0000
3351@@ -20023,15 +20023,14 @@
3352 ;; leal (%edx,%eax,4), %eax
3353
3354 (define_peephole2
3355- [(parallel [(set (match_operand 0 "register_operand" "")
3356+ [(match_scratch:SI 5 "r")
3357+ (parallel [(set (match_operand 0 "register_operand" "")
3358 (ashift (match_operand 1 "register_operand" "")
3359 (match_operand 2 "const_int_operand" "")))
3360 (clobber (reg:CC FLAGS_REG))])
3361- (set (match_operand 3 "register_operand")
3362- (match_operand 4 "x86_64_general_operand" ""))
3363- (parallel [(set (match_operand 5 "register_operand" "")
3364- (plus (match_operand 6 "register_operand" "")
3365- (match_operand 7 "register_operand" "")))
3366+ (parallel [(set (match_operand 3 "register_operand" "")
3367+ (plus (match_dup 0)
3368+ (match_operand 4 "x86_64_general_operand" "")))
3369 (clobber (reg:CC FLAGS_REG))])]
3370 "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 3
3371 /* Validate MODE for lea. */
3372@@ -20041,30 +20040,21 @@
3373 || GET_MODE (operands[0]) == SImode
3374 || (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
3375 /* We reorder load and the shift. */
3376- && !rtx_equal_p (operands[1], operands[3])
3377- && !reg_overlap_mentioned_p (operands[0], operands[4])
3378- /* Last PLUS must consist of operand 0 and 3. */
3379- && !rtx_equal_p (operands[0], operands[3])
3380- && (rtx_equal_p (operands[3], operands[6])
3381- || rtx_equal_p (operands[3], operands[7]))
3382- && (rtx_equal_p (operands[0], operands[6])
3383- || rtx_equal_p (operands[0], operands[7]))
3384- /* The intermediate operand 0 must die or be same as output. */
3385- && (rtx_equal_p (operands[0], operands[5])
3386- || peep2_reg_dead_p (3, operands[0]))"
3387- [(set (match_dup 3) (match_dup 4))
3388+ && !reg_overlap_mentioned_p (operands[0], operands[4])"
3389+ [(set (match_dup 5) (match_dup 4))
3390 (set (match_dup 0) (match_dup 1))]
3391 {
3392- enum machine_mode mode = GET_MODE (operands[5]) == DImode ? DImode : SImode;
3393+ enum machine_mode mode = GET_MODE (operands[1]) == DImode ? DImode : SImode;
3394 int scale = 1 << INTVAL (operands[2]);
3395 rtx index = gen_lowpart (Pmode, operands[1]);
3396- rtx base = gen_lowpart (Pmode, operands[3]);
3397- rtx dest = gen_lowpart (mode, operands[5]);
3398+ rtx base = gen_lowpart (Pmode, operands[5]);
3399+ rtx dest = gen_lowpart (mode, operands[3]);
3400
3401 operands[1] = gen_rtx_PLUS (Pmode, base,
3402 gen_rtx_MULT (Pmode, index, GEN_INT (scale)));
3403 if (mode != Pmode)
3404 operands[1] = gen_rtx_SUBREG (mode, operands[1], 0);
3405+ operands[5] = base;
3406 operands[0] = dest;
3407 })
3408
3409
3410=== modified file 'gcc/df-problems.c'
3411--- old/gcc/df-problems.c 2010-11-16 22:17:17 +0000
3412+++ new/gcc/df-problems.c 2010-12-02 13:42:47 +0000
3413@@ -3748,9 +3748,22 @@
3414 for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
3415 {
3416 df_ref def = *def_rec;
3417- /* If the def is to only part of the reg, it does
3418- not kill the other defs that reach here. */
3419- if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
3420+ bitmap_set_bit (defs, DF_REF_REGNO (def));
3421+ }
3422+}
3423+
3424+/* Find the set of real DEFs, which are not clobbers, for INSN. */
3425+
3426+void
3427+df_simulate_find_noclobber_defs (rtx insn, bitmap defs)
3428+{
3429+ df_ref *def_rec;
3430+ unsigned int uid = INSN_UID (insn);
3431+
3432+ for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
3433+ {
3434+ df_ref def = *def_rec;
3435+ if (!(DF_REF_FLAGS (def) & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER)))
3436 bitmap_set_bit (defs, DF_REF_REGNO (def));
3437 }
3438 }
3439@@ -3921,7 +3934,7 @@
3440 {
3441 df_ref def = *def_rec;
3442 if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
3443- bitmap_clear_bit (live, DF_REF_REGNO (def));
3444+ bitmap_set_bit (live, DF_REF_REGNO (def));
3445 }
3446 }
3447
3448@@ -3942,7 +3955,7 @@
3449 while here the scan is performed forwards! So, first assume that the
3450 def is live, and if this is not true REG_UNUSED notes will rectify the
3451 situation. */
3452- df_simulate_find_defs (insn, live);
3453+ df_simulate_find_noclobber_defs (insn, live);
3454
3455 /* Clear all of the registers that go dead. */
3456 for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
3457
3458=== modified file 'gcc/df.h'
3459--- old/gcc/df.h 2010-01-29 12:14:47 +0000
3460+++ new/gcc/df.h 2010-12-02 13:42:47 +0000
3461@@ -978,6 +978,7 @@
3462 extern void df_md_add_problem (void);
3463 extern void df_md_simulate_artificial_defs_at_top (basic_block, bitmap);
3464 extern void df_md_simulate_one_insn (basic_block, rtx, bitmap);
3465+extern void df_simulate_find_noclobber_defs (rtx, bitmap);
3466 extern void df_simulate_find_defs (rtx, bitmap);
3467 extern void df_simulate_defs (rtx, bitmap);
3468 extern void df_simulate_uses (rtx, bitmap);
3469
3470=== modified file 'gcc/fwprop.c'
3471--- old/gcc/fwprop.c 2010-04-02 18:54:46 +0000
3472+++ new/gcc/fwprop.c 2010-11-16 12:32:34 +0000
3473@@ -228,7 +228,10 @@
3474
3475 process_uses (df_get_artificial_uses (bb_index), DF_REF_AT_TOP);
3476 process_defs (df_get_artificial_defs (bb_index), DF_REF_AT_TOP);
3477- df_simulate_initialize_forwards (bb, local_lr);
3478+
3479+ /* We don't call df_simulate_initialize_forwards, as it may overestimate
3480+ the live registers if there are unused artificial defs. We prefer
3481+ liveness to be underestimated. */
3482
3483 FOR_BB_INSNS (bb, insn)
3484 if (INSN_P (insn))
3485
3486=== modified file 'gcc/genoutput.c'
3487--- old/gcc/genoutput.c 2009-04-08 14:00:34 +0000
3488+++ new/gcc/genoutput.c 2010-11-16 12:32:34 +0000
3489@@ -266,6 +266,8 @@
3490
3491 printf (" %d,\n", d->strict_low);
3492
3493+ printf (" %d,\n", d->constraint == NULL ? 1 : 0);
3494+
3495 printf (" %d\n", d->eliminable);
3496
3497 printf(" },\n");
3498
3499=== modified file 'gcc/genrecog.c'
3500--- old/gcc/genrecog.c 2009-06-22 09:29:13 +0000
3501+++ new/gcc/genrecog.c 2010-11-16 12:32:34 +0000
3502@@ -1782,20 +1782,11 @@
3503 int odepth = strlen (oldpos);
3504 int ndepth = strlen (newpos);
3505 int depth;
3506- int old_has_insn, new_has_insn;
3507
3508 /* Pop up as many levels as necessary. */
3509 for (depth = odepth; strncmp (oldpos, newpos, depth) != 0; --depth)
3510 continue;
3511
3512- /* Hunt for the last [A-Z] in both strings. */
3513- for (old_has_insn = odepth - 1; old_has_insn >= 0; --old_has_insn)
3514- if (ISUPPER (oldpos[old_has_insn]))
3515- break;
3516- for (new_has_insn = ndepth - 1; new_has_insn >= 0; --new_has_insn)
3517- if (ISUPPER (newpos[new_has_insn]))
3518- break;
3519-
3520 /* Go down to desired level. */
3521 while (depth < ndepth)
3522 {
3523
3524=== modified file 'gcc/ifcvt.c'
3525--- old/gcc/ifcvt.c 2011-01-05 12:12:18 +0000
3526+++ new/gcc/ifcvt.c 2011-01-05 18:20:37 +0000
3527@@ -4011,6 +4011,7 @@
3528 basic_block new_dest = dest_edge->dest;
3529 rtx head, end, jump, earliest = NULL_RTX, old_dest;
3530 bitmap merge_set = NULL;
3531+ bitmap merge_set_noclobber = NULL;
3532 /* Number of pending changes. */
3533 int n_validated_changes = 0;
3534 rtx new_dest_label;
3535@@ -4169,6 +4170,7 @@
3536 end of the block. */
3537
3538 merge_set = BITMAP_ALLOC (&reg_obstack);
3539+ merge_set_noclobber = BITMAP_ALLOC (&reg_obstack);
3540
3541 /* If we allocated new pseudos (e.g. in the conditional move
3542 expander called from noce_emit_cmove), we must resize the
3543@@ -4187,6 +4189,7 @@
3544 df_ref def = *def_rec;
3545 bitmap_set_bit (merge_set, DF_REF_REGNO (def));
3546 }
3547+ df_simulate_find_noclobber_defs (insn, merge_set_noclobber);
3548 }
3549 }
3550
3551@@ -4197,7 +4200,7 @@
3552 unsigned i;
3553 bitmap_iterator bi;
3554
3555- EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi)
3556+ EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi)
3557 {
3558 if (i < FIRST_PSEUDO_REGISTER
3559 && ! fixed_regs[i]
3560@@ -4233,7 +4236,7 @@
3561 TEST_SET & DF_LIVE_IN (merge_bb)
3562 are empty. */
3563
3564- if (bitmap_intersect_p (merge_set, test_set)
3565+ if (bitmap_intersect_p (merge_set_noclobber, test_set)
3566 || bitmap_intersect_p (merge_set, test_live)
3567 || bitmap_intersect_p (test_set, df_get_live_in (merge_bb)))
3568 intersect = true;
3569@@ -4320,6 +4323,7 @@
3570 remove_reg_equal_equiv_notes_for_regno (i);
3571
3572 BITMAP_FREE (merge_set);
3573+ BITMAP_FREE (merge_set_noclobber);
3574 }
3575
3576 reorder_insns (head, end, PREV_INSN (earliest));
3577@@ -4340,7 +4344,10 @@
3578 cancel_changes (0);
3579 fail:
3580 if (merge_set)
3581- BITMAP_FREE (merge_set);
3582+ {
3583+ BITMAP_FREE (merge_set);
3584+ BITMAP_FREE (merge_set_noclobber);
3585+ }
3586 return FALSE;
3587 }
3588
3589
3590=== modified file 'gcc/recog.c'
3591--- old/gcc/recog.c 2010-08-05 15:28:47 +0000
3592+++ new/gcc/recog.c 2010-11-16 12:32:34 +0000
3593@@ -2082,6 +2082,7 @@
3594 recog_data.operand_loc,
3595 recog_data.constraints,
3596 recog_data.operand_mode, NULL);
3597+ memset (recog_data.is_operator, 0, sizeof recog_data.is_operator);
3598 if (noperands > 0)
3599 {
3600 const char *p = recog_data.constraints[0];
3601@@ -2111,6 +2112,7 @@
3602 for (i = 0; i < noperands; i++)
3603 {
3604 recog_data.constraints[i] = insn_data[icode].operand[i].constraint;
3605+ recog_data.is_operator[i] = insn_data[icode].operand[i].is_operator;
3606 recog_data.operand_mode[i] = insn_data[icode].operand[i].mode;
3607 /* VOIDmode match_operands gets mode from their real operand. */
3608 if (recog_data.operand_mode[i] == VOIDmode)
3609@@ -2909,6 +2911,10 @@
3610
3611 static struct peep2_insn_data peep2_insn_data[MAX_INSNS_PER_PEEP2 + 1];
3612 static int peep2_current;
3613+
3614+static bool peep2_do_rebuild_jump_labels;
3615+static bool peep2_do_cleanup_cfg;
3616+
3617 /* The number of instructions available to match a peep2. */
3618 int peep2_current_count;
3619
3620@@ -2917,6 +2923,16 @@
3621 DF_LIVE_OUT for the block. */
3622 #define PEEP2_EOB pc_rtx
3623
3624+/* Wrap N to fit into the peep2_insn_data buffer. */
3625+
3626+static int
3627+peep2_buf_position (int n)
3628+{
3629+ if (n >= MAX_INSNS_PER_PEEP2 + 1)
3630+ n -= MAX_INSNS_PER_PEEP2 + 1;
3631+ return n;
3632+}
3633+
3634 /* Return the Nth non-note insn after `current', or return NULL_RTX if it
3635 does not exist. Used by the recognizer to find the next insn to match
3636 in a multi-insn pattern. */
3637@@ -2926,9 +2942,7 @@
3638 {
3639 gcc_assert (n <= peep2_current_count);
3640
3641- n += peep2_current;
3642- if (n >= MAX_INSNS_PER_PEEP2 + 1)
3643- n -= MAX_INSNS_PER_PEEP2 + 1;
3644+ n = peep2_buf_position (peep2_current + n);
3645
3646 return peep2_insn_data[n].insn;
3647 }
3648@@ -2941,9 +2955,7 @@
3649 {
3650 gcc_assert (ofs < MAX_INSNS_PER_PEEP2 + 1);
3651
3652- ofs += peep2_current;
3653- if (ofs >= MAX_INSNS_PER_PEEP2 + 1)
3654- ofs -= MAX_INSNS_PER_PEEP2 + 1;
3655+ ofs = peep2_buf_position (peep2_current + ofs);
3656
3657 gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX);
3658
3659@@ -2959,9 +2971,7 @@
3660
3661 gcc_assert (ofs < MAX_INSNS_PER_PEEP2 + 1);
3662
3663- ofs += peep2_current;
3664- if (ofs >= MAX_INSNS_PER_PEEP2 + 1)
3665- ofs -= MAX_INSNS_PER_PEEP2 + 1;
3666+ ofs = peep2_buf_position (peep2_current + ofs);
3667
3668 gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX);
3669
3670@@ -2996,12 +3006,8 @@
3671 gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1);
3672 gcc_assert (to < MAX_INSNS_PER_PEEP2 + 1);
3673
3674- from += peep2_current;
3675- if (from >= MAX_INSNS_PER_PEEP2 + 1)
3676- from -= MAX_INSNS_PER_PEEP2 + 1;
3677- to += peep2_current;
3678- if (to >= MAX_INSNS_PER_PEEP2 + 1)
3679- to -= MAX_INSNS_PER_PEEP2 + 1;
3680+ from = peep2_buf_position (peep2_current + from);
3681+ to = peep2_buf_position (peep2_current + to);
3682
3683 gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
3684 REG_SET_TO_HARD_REG_SET (live, peep2_insn_data[from].live_before);
3685@@ -3010,8 +3016,7 @@
3686 {
3687 HARD_REG_SET this_live;
3688
3689- if (++from >= MAX_INSNS_PER_PEEP2 + 1)
3690- from = 0;
3691+ from = peep2_buf_position (from + 1);
3692 gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
3693 REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before);
3694 IOR_HARD_REG_SET (live, this_live);
3695@@ -3104,19 +3109,234 @@
3696 COPY_REG_SET (peep2_insn_data[MAX_INSNS_PER_PEEP2].live_before, live);
3697 }
3698
3699+/* While scanning basic block BB, we found a match of length MATCH_LEN,
3700+ starting at INSN. Perform the replacement, removing the old insns and
3701+ replacing them with ATTEMPT. Returns the last insn emitted. */
3702+
3703+static rtx
3704+peep2_attempt (basic_block bb, rtx insn, int match_len, rtx attempt)
3705+{
3706+ int i;
3707+ rtx last, note, before_try, x;
3708+ bool was_call = false;
3709+
3710+ /* If we are splitting a CALL_INSN, look for the CALL_INSN
3711+ in SEQ and copy our CALL_INSN_FUNCTION_USAGE and other
3712+ cfg-related call notes. */
3713+ for (i = 0; i <= match_len; ++i)
3714+ {
3715+ int j;
3716+ rtx old_insn, new_insn, note;
3717+
3718+ j = peep2_buf_position (peep2_current + i);
3719+ old_insn = peep2_insn_data[j].insn;
3720+ if (!CALL_P (old_insn))
3721+ continue;
3722+ was_call = true;
3723+
3724+ new_insn = attempt;
3725+ while (new_insn != NULL_RTX)
3726+ {
3727+ if (CALL_P (new_insn))
3728+ break;
3729+ new_insn = NEXT_INSN (new_insn);
3730+ }
3731+
3732+ gcc_assert (new_insn != NULL_RTX);
3733+
3734+ CALL_INSN_FUNCTION_USAGE (new_insn)
3735+ = CALL_INSN_FUNCTION_USAGE (old_insn);
3736+
3737+ for (note = REG_NOTES (old_insn);
3738+ note;
3739+ note = XEXP (note, 1))
3740+ switch (REG_NOTE_KIND (note))
3741+ {
3742+ case REG_NORETURN:
3743+ case REG_SETJMP:
3744+ add_reg_note (new_insn, REG_NOTE_KIND (note),
3745+ XEXP (note, 0));
3746+ break;
3747+ default:
3748+ /* Discard all other reg notes. */
3749+ break;
3750+ }
3751+
3752+ /* Croak if there is another call in the sequence. */
3753+ while (++i <= match_len)
3754+ {
3755+ j = peep2_buf_position (peep2_current + i);
3756+ old_insn = peep2_insn_data[j].insn;
3757+ gcc_assert (!CALL_P (old_insn));
3758+ }
3759+ break;
3760+ }
3761+
3762+ i = peep2_buf_position (peep2_current + match_len);
3763+
3764+ note = find_reg_note (peep2_insn_data[i].insn, REG_EH_REGION, NULL_RTX);
3765+
3766+ /* Replace the old sequence with the new. */
3767+ last = emit_insn_after_setloc (attempt,
3768+ peep2_insn_data[i].insn,
3769+ INSN_LOCATOR (peep2_insn_data[i].insn));
3770+ before_try = PREV_INSN (insn);
3771+ delete_insn_chain (insn, peep2_insn_data[i].insn, false);
3772+
3773+ /* Re-insert the EH_REGION notes. */
3774+ if (note || (was_call && nonlocal_goto_handler_labels))
3775+ {
3776+ edge eh_edge;
3777+ edge_iterator ei;
3778+
3779+ FOR_EACH_EDGE (eh_edge, ei, bb->succs)
3780+ if (eh_edge->flags & (EDGE_EH | EDGE_ABNORMAL_CALL))
3781+ break;
3782+
3783+ if (note)
3784+ copy_reg_eh_region_note_backward (note, last, before_try);
3785+
3786+ if (eh_edge)
3787+ for (x = last; x != before_try; x = PREV_INSN (x))
3788+ if (x != BB_END (bb)
3789+ && (can_throw_internal (x)
3790+ || can_nonlocal_goto (x)))
3791+ {
3792+ edge nfte, nehe;
3793+ int flags;
3794+
3795+ nfte = split_block (bb, x);
3796+ flags = (eh_edge->flags
3797+ & (EDGE_EH | EDGE_ABNORMAL));
3798+ if (CALL_P (x))
3799+ flags |= EDGE_ABNORMAL_CALL;
3800+ nehe = make_edge (nfte->src, eh_edge->dest,
3801+ flags);
3802+
3803+ nehe->probability = eh_edge->probability;
3804+ nfte->probability
3805+ = REG_BR_PROB_BASE - nehe->probability;
3806+
3807+ peep2_do_cleanup_cfg |= purge_dead_edges (nfte->dest);
3808+ bb = nfte->src;
3809+ eh_edge = nehe;
3810+ }
3811+
3812+ /* Converting possibly trapping insn to non-trapping is
3813+ possible. Zap dummy outgoing edges. */
3814+ peep2_do_cleanup_cfg |= purge_dead_edges (bb);
3815+ }
3816+
3817+ /* If we generated a jump instruction, it won't have
3818+ JUMP_LABEL set. Recompute after we're done. */
3819+ for (x = last; x != before_try; x = PREV_INSN (x))
3820+ if (JUMP_P (x))
3821+ {
3822+ peep2_do_rebuild_jump_labels = true;
3823+ break;
3824+ }
3825+
3826+ return last;
3827+}
3828+
3829+/* After performing a replacement in basic block BB, fix up the life
3830+ information in our buffer. LAST is the last of the insns that we
3831+ emitted as a replacement. PREV is the insn before the start of
3832+ the replacement. MATCH_LEN is the number of instructions that were
3833+ matched, and which now need to be replaced in the buffer. */
3834+
3835+static void
3836+peep2_update_life (basic_block bb, int match_len, rtx last, rtx prev)
3837+{
3838+ int i = peep2_buf_position (peep2_current + match_len + 1);
3839+ rtx x;
3840+ regset_head live;
3841+
3842+ INIT_REG_SET (&live);
3843+ COPY_REG_SET (&live, peep2_insn_data[i].live_before);
3844+
3845+ gcc_assert (peep2_current_count >= match_len + 1);
3846+ peep2_current_count -= match_len + 1;
3847+
3848+ x = last;
3849+ do
3850+ {
3851+ if (INSN_P (x))
3852+ {
3853+ df_insn_rescan (x);
3854+ if (peep2_current_count < MAX_INSNS_PER_PEEP2)
3855+ {
3856+ peep2_current_count++;
3857+ if (--i < 0)
3858+ i = MAX_INSNS_PER_PEEP2;
3859+ peep2_insn_data[i].insn = x;
3860+ df_simulate_one_insn_backwards (bb, x, &live);
3861+ COPY_REG_SET (peep2_insn_data[i].live_before, &live);
3862+ }
3863+ }
3864+ x = PREV_INSN (x);
3865+ }
3866+ while (x != prev);
3867+ CLEAR_REG_SET (&live);
3868+
3869+ peep2_current = i;
3870+}
3871+
3872+/* Add INSN, which is in BB, at the end of the peep2 insn buffer if possible.
3873+ Return true if we added it, false otherwise. The caller will try to match
3874+ peepholes against the buffer if we return false; otherwise it will try to
3875+ add more instructions to the buffer. */
3876+
3877+static bool
3878+peep2_fill_buffer (basic_block bb, rtx insn, regset live)
3879+{
3880+ int pos;
3881+
3882+ /* Once we have filled the maximum number of insns the buffer can hold,
3883+ allow the caller to match the insns against peepholes. We wait until
3884+ the buffer is full in case the target has similar peepholes of different
3885+ length; we always want to match the longest if possible. */
3886+ if (peep2_current_count == MAX_INSNS_PER_PEEP2)
3887+ return false;
3888+
3889+ /* If an insn has RTX_FRAME_RELATED_P set, peephole substitution would lose
3890+ the REG_FRAME_RELATED_EXPR that is attached. */
3891+ if (RTX_FRAME_RELATED_P (insn))
3892+ {
3893+ /* Let the buffer drain first. */
3894+ if (peep2_current_count > 0)
3895+ return false;
3896+ /* Step over the insn then return true without adding the insn
3897+ to the buffer; this will cause us to process the next
3898+ insn. */
3899+ df_simulate_one_insn_forwards (bb, insn, live);
3900+ return true;
3901+ }
3902+
3903+ pos = peep2_buf_position (peep2_current + peep2_current_count);
3904+ peep2_insn_data[pos].insn = insn;
3905+ COPY_REG_SET (peep2_insn_data[pos].live_before, live);
3906+ peep2_current_count++;
3907+
3908+ df_simulate_one_insn_forwards (bb, insn, live);
3909+ return true;
3910+}
3911+
3912 /* Perform the peephole2 optimization pass. */
3913
3914 static void
3915 peephole2_optimize (void)
3916 {
3917- rtx insn, prev;
3918+ rtx insn;
3919 bitmap live;
3920 int i;
3921 basic_block bb;
3922- bool do_cleanup_cfg = false;
3923- bool do_rebuild_jump_labels = false;
3924+
3925+ peep2_do_cleanup_cfg = false;
3926+ peep2_do_rebuild_jump_labels = false;
3927
3928 df_set_flags (DF_LR_RUN_DCE);
3929+ df_note_add_problem ();
3930 df_analyze ();
3931
3932 /* Initialize the regsets we're going to use. */
3933@@ -3126,214 +3346,59 @@
3934
3935 FOR_EACH_BB_REVERSE (bb)
3936 {
3937+ bool past_end = false;
3938+ int pos;
3939+
3940 rtl_profile_for_bb (bb);
3941
3942 /* Start up propagation. */
3943- bitmap_copy (live, DF_LR_OUT (bb));
3944- df_simulate_initialize_backwards (bb, live);
3945+ bitmap_copy (live, DF_LR_IN (bb));
3946+ df_simulate_initialize_forwards (bb, live);
3947 peep2_reinit_state (live);
3948
3949- for (insn = BB_END (bb); ; insn = prev)
3950+ insn = BB_HEAD (bb);
3951+ for (;;)
3952 {
3953- prev = PREV_INSN (insn);
3954- if (NONDEBUG_INSN_P (insn))
3955+ rtx attempt, head;
3956+ int match_len;
3957+
3958+ if (!past_end && !NONDEBUG_INSN_P (insn))
3959 {
3960- rtx attempt, before_try, x;
3961- int match_len;
3962- rtx note;
3963- bool was_call = false;
3964-
3965- /* Record this insn. */
3966- if (--peep2_current < 0)
3967- peep2_current = MAX_INSNS_PER_PEEP2;
3968- if (peep2_current_count < MAX_INSNS_PER_PEEP2
3969- && peep2_insn_data[peep2_current].insn == NULL_RTX)
3970- peep2_current_count++;
3971- peep2_insn_data[peep2_current].insn = insn;
3972- df_simulate_one_insn_backwards (bb, insn, live);
3973- COPY_REG_SET (peep2_insn_data[peep2_current].live_before, live);
3974-
3975- if (RTX_FRAME_RELATED_P (insn))
3976- {
3977- /* If an insn has RTX_FRAME_RELATED_P set, peephole
3978- substitution would lose the
3979- REG_FRAME_RELATED_EXPR that is attached. */
3980- peep2_reinit_state (live);
3981- attempt = NULL;
3982- }
3983- else
3984- /* Match the peephole. */
3985- attempt = peephole2_insns (PATTERN (insn), insn, &match_len);
3986-
3987- if (attempt != NULL)
3988- {
3989- /* If we are splitting a CALL_INSN, look for the CALL_INSN
3990- in SEQ and copy our CALL_INSN_FUNCTION_USAGE and other
3991- cfg-related call notes. */
3992- for (i = 0; i <= match_len; ++i)
3993- {
3994- int j;
3995- rtx old_insn, new_insn, note;
3996-
3997- j = i + peep2_current;
3998- if (j >= MAX_INSNS_PER_PEEP2 + 1)
3999- j -= MAX_INSNS_PER_PEEP2 + 1;
4000- old_insn = peep2_insn_data[j].insn;
4001- if (!CALL_P (old_insn))
4002- continue;
4003- was_call = true;
4004-
4005- new_insn = attempt;
4006- while (new_insn != NULL_RTX)
4007- {
4008- if (CALL_P (new_insn))
4009- break;
4010- new_insn = NEXT_INSN (new_insn);
4011- }
4012-
4013- gcc_assert (new_insn != NULL_RTX);
4014-
4015- CALL_INSN_FUNCTION_USAGE (new_insn)
4016- = CALL_INSN_FUNCTION_USAGE (old_insn);
4017-
4018- for (note = REG_NOTES (old_insn);
4019- note;
4020- note = XEXP (note, 1))
4021- switch (REG_NOTE_KIND (note))
4022- {
4023- case REG_NORETURN:
4024- case REG_SETJMP:
4025- add_reg_note (new_insn, REG_NOTE_KIND (note),
4026- XEXP (note, 0));
4027- break;
4028- default:
4029- /* Discard all other reg notes. */
4030- break;
4031- }
4032-
4033- /* Croak if there is another call in the sequence. */
4034- while (++i <= match_len)
4035- {
4036- j = i + peep2_current;
4037- if (j >= MAX_INSNS_PER_PEEP2 + 1)
4038- j -= MAX_INSNS_PER_PEEP2 + 1;
4039- old_insn = peep2_insn_data[j].insn;
4040- gcc_assert (!CALL_P (old_insn));
4041- }
4042- break;
4043- }
4044-
4045- i = match_len + peep2_current;
4046- if (i >= MAX_INSNS_PER_PEEP2 + 1)
4047- i -= MAX_INSNS_PER_PEEP2 + 1;
4048-
4049- note = find_reg_note (peep2_insn_data[i].insn,
4050- REG_EH_REGION, NULL_RTX);
4051-
4052- /* Replace the old sequence with the new. */
4053- attempt = emit_insn_after_setloc (attempt,
4054- peep2_insn_data[i].insn,
4055- INSN_LOCATOR (peep2_insn_data[i].insn));
4056- before_try = PREV_INSN (insn);
4057- delete_insn_chain (insn, peep2_insn_data[i].insn, false);
4058-
4059- /* Re-insert the EH_REGION notes. */
4060- if (note || (was_call && nonlocal_goto_handler_labels))
4061- {
4062- edge eh_edge;
4063- edge_iterator ei;
4064-
4065- FOR_EACH_EDGE (eh_edge, ei, bb->succs)
4066- if (eh_edge->flags & (EDGE_EH | EDGE_ABNORMAL_CALL))
4067- break;
4068-
4069- if (note)
4070- copy_reg_eh_region_note_backward (note, attempt,
4071- before_try);
4072-
4073- if (eh_edge)
4074- for (x = attempt ; x != before_try ; x = PREV_INSN (x))
4075- if (x != BB_END (bb)
4076- && (can_throw_internal (x)
4077- || can_nonlocal_goto (x)))
4078- {
4079- edge nfte, nehe;
4080- int flags;
4081-
4082- nfte = split_block (bb, x);
4083- flags = (eh_edge->flags
4084- & (EDGE_EH | EDGE_ABNORMAL));
4085- if (CALL_P (x))
4086- flags |= EDGE_ABNORMAL_CALL;
4087- nehe = make_edge (nfte->src, eh_edge->dest,
4088- flags);
4089-
4090- nehe->probability = eh_edge->probability;
4091- nfte->probability
4092- = REG_BR_PROB_BASE - nehe->probability;
4093-
4094- do_cleanup_cfg |= purge_dead_edges (nfte->dest);
4095- bb = nfte->src;
4096- eh_edge = nehe;
4097- }
4098-
4099- /* Converting possibly trapping insn to non-trapping is
4100- possible. Zap dummy outgoing edges. */
4101- do_cleanup_cfg |= purge_dead_edges (bb);
4102- }
4103-
4104- if (targetm.have_conditional_execution ())
4105- {
4106- for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
4107- peep2_insn_data[i].insn = NULL_RTX;
4108- peep2_insn_data[peep2_current].insn = PEEP2_EOB;
4109- peep2_current_count = 0;
4110- }
4111- else
4112- {
4113- /* Back up lifetime information past the end of the
4114- newly created sequence. */
4115- if (++i >= MAX_INSNS_PER_PEEP2 + 1)
4116- i = 0;
4117- bitmap_copy (live, peep2_insn_data[i].live_before);
4118-
4119- /* Update life information for the new sequence. */
4120- x = attempt;
4121- do
4122- {
4123- if (INSN_P (x))
4124- {
4125- if (--i < 0)
4126- i = MAX_INSNS_PER_PEEP2;
4127- if (peep2_current_count < MAX_INSNS_PER_PEEP2
4128- && peep2_insn_data[i].insn == NULL_RTX)
4129- peep2_current_count++;
4130- peep2_insn_data[i].insn = x;
4131- df_insn_rescan (x);
4132- df_simulate_one_insn_backwards (bb, x, live);
4133- bitmap_copy (peep2_insn_data[i].live_before,
4134- live);
4135- }
4136- x = PREV_INSN (x);
4137- }
4138- while (x != prev);
4139-
4140- peep2_current = i;
4141- }
4142-
4143- /* If we generated a jump instruction, it won't have
4144- JUMP_LABEL set. Recompute after we're done. */
4145- for (x = attempt; x != before_try; x = PREV_INSN (x))
4146- if (JUMP_P (x))
4147- {
4148- do_rebuild_jump_labels = true;
4149- break;
4150- }
4151- }
4152+ next_insn:
4153+ insn = NEXT_INSN (insn);
4154+ if (insn == NEXT_INSN (BB_END (bb)))
4155+ past_end = true;
4156+ continue;
4157 }
4158+ if (!past_end && peep2_fill_buffer (bb, insn, live))
4159+ goto next_insn;
4160
4161- if (insn == BB_HEAD (bb))
4162+ /* If we did not fill an empty buffer, it signals the end of the
4163+ block. */
4164+ if (peep2_current_count == 0)
4165 break;
4166+
4167+ /* The buffer filled to the current maximum, so try to match. */
4168+
4169+ pos = peep2_buf_position (peep2_current + peep2_current_count);
4170+ peep2_insn_data[pos].insn = PEEP2_EOB;
4171+ COPY_REG_SET (peep2_insn_data[pos].live_before, live);
4172+
4173+ /* Match the peephole. */
4174+ head = peep2_insn_data[peep2_current].insn;
4175+ attempt = peephole2_insns (PATTERN (head), head, &match_len);
4176+ if (attempt != NULL)
4177+ {
4178+ rtx last;
4179+ last = peep2_attempt (bb, head, match_len, attempt);
4180+ peep2_update_life (bb, match_len, last, PREV_INSN (attempt));
4181+ }
4182+ else
4183+ {
4184+ /* If no match, advance the buffer by one insn. */
4185+ peep2_current = peep2_buf_position (peep2_current + 1);
4186+ peep2_current_count--;
4187+ }
4188 }
4189 }
4190
4191@@ -3341,7 +3406,7 @@
4192 for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
4193 BITMAP_FREE (peep2_insn_data[i].live_before);
4194 BITMAP_FREE (live);
4195- if (do_rebuild_jump_labels)
4196+ if (peep2_do_rebuild_jump_labels)
4197 rebuild_jump_labels (get_insns ());
4198 }
4199 #endif /* HAVE_peephole2 */
4200
4201=== modified file 'gcc/recog.h'
4202--- old/gcc/recog.h 2009-10-26 21:55:59 +0000
4203+++ new/gcc/recog.h 2010-11-16 12:32:34 +0000
4204@@ -194,6 +194,9 @@
4205 /* Gives the constraint string for operand N. */
4206 const char *constraints[MAX_RECOG_OPERANDS];
4207
4208+ /* Nonzero if operand N is a match_operator or a match_parallel. */
4209+ char is_operator[MAX_RECOG_OPERANDS];
4210+
4211 /* Gives the mode of operand N. */
4212 enum machine_mode operand_mode[MAX_RECOG_OPERANDS];
4213
4214@@ -260,6 +263,8 @@
4215
4216 const char strict_low;
4217
4218+ const char is_operator;
4219+
4220 const char eliminable;
4221 };
4222
4223
4224=== modified file 'gcc/reload.c'
4225--- old/gcc/reload.c 2009-12-21 16:32:44 +0000
4226+++ new/gcc/reload.c 2010-11-16 12:32:34 +0000
4227@@ -3631,7 +3631,7 @@
4228 || modified[j] != RELOAD_WRITE)
4229 && j != i
4230 /* Ignore things like match_operator operands. */
4231- && *recog_data.constraints[j] != 0
4232+ && !recog_data.is_operator[j]
4233 /* Don't count an input operand that is constrained to match
4234 the early clobber operand. */
4235 && ! (this_alternative_matches[j] == i
4236
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99464.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99464.patch
new file mode 100644
index 000000000..e8c8e6388
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99464.patch
@@ -0,0 +1,157 @@
1 LP: #681138
2 Backport from mainline:
3
4 gcc/
5 * config/arm/sync.md (sync_clobber, sync_t2_reqd): New code attribute.
6 (arm_sync_old_<sync_optab>si, arm_sync_old_<sync_optab><mode>): Use
7 the sync_clobber and sync_t2_reqd code attributes.
8 * config/arm/arm.c (arm_output_sync_loop): Reverse the operation if
9 the t2 argument is NULL.
10
11=== modified file 'gcc/config/arm/arm.c'
12Index: gcc-4_5-branch/gcc/config/arm/arm.c
13===================================================================
14--- gcc-4_5-branch.orig/gcc/config/arm/arm.c
15+++ gcc-4_5-branch/gcc/config/arm/arm.c
16@@ -23098,10 +23098,46 @@ arm_output_sync_loop (emit_f emit,
17 break;
18 }
19
20- arm_output_strex (emit, mode, "", t2, t1, memory);
21- operands[0] = t2;
22- arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
23- arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=", LOCAL_LABEL_PREFIX);
24+ if (t2)
25+ {
26+ arm_output_strex (emit, mode, "", t2, t1, memory);
27+ operands[0] = t2;
28+ arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
29+ arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=",
30+ LOCAL_LABEL_PREFIX);
31+ }
32+ else
33+ {
34+ /* Use old_value for the return value because for some operations
35+ the old_value can easily be restored. This saves one register. */
36+ arm_output_strex (emit, mode, "", old_value, t1, memory);
37+ operands[0] = old_value;
38+ arm_output_asm_insn (emit, 0, operands, "teq\t%%0, #0");
39+ arm_output_asm_insn (emit, 0, operands, "bne\t%sLSYT%%=",
40+ LOCAL_LABEL_PREFIX);
41+
42+ switch (sync_op)
43+ {
44+ case SYNC_OP_ADD:
45+ arm_output_op3 (emit, "sub", old_value, t1, new_value);
46+ break;
47+
48+ case SYNC_OP_SUB:
49+ arm_output_op3 (emit, "add", old_value, t1, new_value);
50+ break;
51+
52+ case SYNC_OP_XOR:
53+ arm_output_op3 (emit, "eor", old_value, t1, new_value);
54+ break;
55+
56+ case SYNC_OP_NONE:
57+ arm_output_op2 (emit, "mov", old_value, required_value);
58+ break;
59+
60+ default:
61+ gcc_unreachable ();
62+ }
63+ }
64
65 arm_process_output_memory_barrier (emit, NULL);
66 arm_output_asm_insn (emit, 1, operands, "%sLSYB%%=:", LOCAL_LABEL_PREFIX);
67Index: gcc-4_5-branch/gcc/config/arm/sync.md
68===================================================================
69--- gcc-4_5-branch.orig/gcc/config/arm/sync.md
70+++ gcc-4_5-branch/gcc/config/arm/sync.md
71@@ -103,6 +103,18 @@
72 (plus "add")
73 (minus "sub")])
74
75+(define_code_attr sync_clobber [(ior "=&r")
76+ (and "=&r")
77+ (xor "X")
78+ (plus "X")
79+ (minus "X")])
80+
81+(define_code_attr sync_t2_reqd [(ior "4")
82+ (and "4")
83+ (xor "*")
84+ (plus "*")
85+ (minus "*")])
86+
87 (define_expand "sync_<sync_optab>si"
88 [(match_operand:SI 0 "memory_operand")
89 (match_operand:SI 1 "s_register_operand")
90@@ -286,7 +298,6 @@
91 VUNSPEC_SYNC_COMPARE_AND_SWAP))
92 (set (match_dup 1) (unspec_volatile:SI [(match_dup 2)]
93 VUNSPEC_SYNC_COMPARE_AND_SWAP))
94- (clobber:SI (match_scratch:SI 4 "=&r"))
95 (set (reg:CC CC_REGNUM) (unspec_volatile:CC [(match_dup 1)]
96 VUNSPEC_SYNC_COMPARE_AND_SWAP))
97 ]
98@@ -299,7 +310,6 @@
99 (set_attr "sync_required_value" "2")
100 (set_attr "sync_new_value" "3")
101 (set_attr "sync_t1" "0")
102- (set_attr "sync_t2" "4")
103 (set_attr "conds" "clob")
104 (set_attr "predicable" "no")])
105
106@@ -313,7 +323,6 @@
107 VUNSPEC_SYNC_COMPARE_AND_SWAP)))
108 (set (match_dup 1) (unspec_volatile:NARROW [(match_dup 2)]
109 VUNSPEC_SYNC_COMPARE_AND_SWAP))
110- (clobber:SI (match_scratch:SI 4 "=&r"))
111 (set (reg:CC CC_REGNUM) (unspec_volatile:CC [(match_dup 1)]
112 VUNSPEC_SYNC_COMPARE_AND_SWAP))
113 ]
114@@ -326,7 +335,6 @@
115 (set_attr "sync_required_value" "2")
116 (set_attr "sync_new_value" "3")
117 (set_attr "sync_t1" "0")
118- (set_attr "sync_t2" "4")
119 (set_attr "conds" "clob")
120 (set_attr "predicable" "no")])
121
122@@ -487,7 +495,7 @@
123 VUNSPEC_SYNC_OLD_OP))
124 (clobber (reg:CC CC_REGNUM))
125 (clobber (match_scratch:SI 3 "=&r"))
126- (clobber (match_scratch:SI 4 "=&r"))]
127+ (clobber (match_scratch:SI 4 "<sync_clobber>"))]
128 "TARGET_HAVE_LDREX && TARGET_HAVE_MEMORY_BARRIER"
129 {
130 return arm_output_sync_insn (insn, operands);
131@@ -496,7 +504,7 @@
132 (set_attr "sync_memory" "1")
133 (set_attr "sync_new_value" "2")
134 (set_attr "sync_t1" "3")
135- (set_attr "sync_t2" "4")
136+ (set_attr "sync_t2" "<sync_t2_reqd>")
137 (set_attr "sync_op" "<sync_optab>")
138 (set_attr "conds" "clob")
139 (set_attr "predicable" "no")])
140@@ -540,7 +548,7 @@
141 VUNSPEC_SYNC_OLD_OP))
142 (clobber (reg:CC CC_REGNUM))
143 (clobber (match_scratch:SI 3 "=&r"))
144- (clobber (match_scratch:SI 4 "=&r"))]
145+ (clobber (match_scratch:SI 4 "<sync_clobber>"))]
146 "TARGET_HAVE_LDREXBHD && TARGET_HAVE_MEMORY_BARRIER"
147 {
148 return arm_output_sync_insn (insn, operands);
149@@ -549,7 +557,7 @@
150 (set_attr "sync_memory" "1")
151 (set_attr "sync_new_value" "2")
152 (set_attr "sync_t1" "3")
153- (set_attr "sync_t2" "4")
154+ (set_attr "sync_t2" "<sync_t2_reqd>")
155 (set_attr "sync_op" "<sync_optab>")
156 (set_attr "conds" "clob")
157 (set_attr "predicable" "no")])
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99465.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99465.patch
new file mode 100644
index 000000000..32c2999a7
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99465.patch
@@ -0,0 +1,94 @@
12011-01-18 Ulrich Weigand <uweigand@de.ibm.com>
2
3 LP: #685352
4 Backport from mainline:
5
6 2011-01-18 Jakub Jelinek <jakub@redhat.com>
7
8 gcc/
9 PR rtl-optimization/47299
10 * expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: Don't use
11 subtarget. Use normal multiplication if both operands are
12 constants.
13 * expmed.c (expand_widening_mult): Don't try to optimize constant
14 multiplication if op0 has VOIDmode. Convert op1 constant to mode
15 before using it.
16
17 gcc/testsuite/
18 PR rtl-optimization/47299
19 * gcc.c-torture/execute/pr47299.c: New test.
20
21=== modified file 'gcc/expmed.c'
22Index: gcc-4_5-branch/gcc/expmed.c
23===================================================================
24--- gcc-4_5-branch.orig/gcc/expmed.c
25+++ gcc-4_5-branch/gcc/expmed.c
26@@ -3355,12 +3355,17 @@ expand_widening_mult (enum machine_mode
27 int unsignedp, optab this_optab)
28 {
29 bool speed = optimize_insn_for_speed_p ();
30+ rtx cop1;
31
32 if (CONST_INT_P (op1)
33- && (INTVAL (op1) >= 0
34+ && GET_MODE (op0) != VOIDmode
35+ && (cop1 = convert_modes (mode, GET_MODE (op0), op1,
36+ this_optab == umul_widen_optab))
37+ && CONST_INT_P (cop1)
38+ && (INTVAL (cop1) >= 0
39 || GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT))
40 {
41- HOST_WIDE_INT coeff = INTVAL (op1);
42+ HOST_WIDE_INT coeff = INTVAL (cop1);
43 int max_cost;
44 enum mult_variant variant;
45 struct algorithm algorithm;
46Index: gcc-4_5-branch/gcc/expr.c
47===================================================================
48--- gcc-4_5-branch.orig/gcc/expr.c
49+++ gcc-4_5-branch/gcc/expr.c
50@@ -7624,10 +7624,10 @@ expand_expr_real_2 (sepops ops, rtx targ
51 if (optab_handler (this_optab, mode)->insn_code != CODE_FOR_nothing)
52 {
53 if (TYPE_UNSIGNED (TREE_TYPE (treeop0)))
54- expand_operands (treeop0, treeop1, subtarget, &op0, &op1,
55+ expand_operands (treeop0, treeop1, NULL_RTX, &op0, &op1,
56 EXPAND_NORMAL);
57 else
58- expand_operands (treeop0, treeop1, subtarget, &op1, &op0,
59+ expand_operands (treeop0, treeop1, NULL_RTX, &op1, &op0,
60 EXPAND_NORMAL);
61 goto binop3;
62 }
63@@ -7645,7 +7645,8 @@ expand_expr_real_2 (sepops ops, rtx targ
64 optab other_optab = zextend_p ? smul_widen_optab : umul_widen_optab;
65 this_optab = zextend_p ? umul_widen_optab : smul_widen_optab;
66
67- if (mode == GET_MODE_2XWIDER_MODE (innermode))
68+ if (mode == GET_MODE_2XWIDER_MODE (innermode)
69+ && TREE_CODE (treeop0) != INTEGER_CST)
70 {
71 if (optab_handler (this_optab, mode)->insn_code != CODE_FOR_nothing)
72 {
73Index: gcc-4_5-branch/gcc/testsuite/gcc.c-torture/execute/pr47299.c
74===================================================================
75--- /dev/null
76+++ gcc-4_5-branch/gcc/testsuite/gcc.c-torture/execute/pr47299.c
77@@ -0,0 +1,17 @@
78+/* PR rtl-optimization/47299 */
79+
80+extern void abort (void);
81+
82+__attribute__ ((noinline, noclone)) unsigned short
83+foo (unsigned char x)
84+{
85+ return x * 255;
86+}
87+
88+int
89+main ()
90+{
91+ if (foo (0x40) != 0x3fc0)
92+ abort ();
93+ return 0;
94+}
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99466.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99466.patch
new file mode 100644
index 000000000..580d4f472
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99466.patch
@@ -0,0 +1,38 @@
12011-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2
3 Backport from FSF mainline
4
5 2011-01-18 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6
7 * config/arm/cortex-a9.md (cortex-a9-neon.md): Actually
8 include.
9 (cortex_a9_dp): Handle neon types correctly.
10
11=== modified file 'gcc/config/arm/cortex-a9.md'
12Index: gcc-4_5-branch/gcc/config/arm/cortex-a9.md
13===================================================================
14--- gcc-4_5-branch.orig/gcc/config/arm/cortex-a9.md
15+++ gcc-4_5-branch/gcc/config/arm/cortex-a9.md
16@@ -79,10 +79,11 @@ cortex_a9_p1_e2 + cortex_a9_p0_e1 + cort
17 ;; which can go down E2 without any problem.
18 (define_insn_reservation "cortex_a9_dp" 2
19 (and (eq_attr "tune" "cortexa9")
20- (ior (eq_attr "type" "alu")
21- (ior (and (eq_attr "type" "alu_shift_reg, alu_shift")
22- (eq_attr "insn" "mov"))
23- (eq_attr "neon_type" "none"))))
24+ (ior (and (eq_attr "type" "alu")
25+ (eq_attr "neon_type" "none"))
26+ (and (and (eq_attr "type" "alu_shift_reg, alu_shift")
27+ (eq_attr "insn" "mov"))
28+ (eq_attr "neon_type" "none"))))
29 "cortex_a9_p0_default|cortex_a9_p1_default")
30
31 ;; An instruction using the shifter will go down E1.
32@@ -263,3 +264,6 @@ cortex_a9_store3_4, cortex_a9_store1_2,
33 (and (eq_attr "tune" "cortexa9")
34 (eq_attr "type" "fdivd"))
35 "ca9fp_ds1 + ca9_issue_vfp_neon, nothing*24")
36+
37+;; Include Neon pipeline description
38+(include "cortex-a9-neon.md")
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99468.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99468.patch
new file mode 100644
index 000000000..cf22aaf16
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99468.patch
@@ -0,0 +1,811 @@
12010-12-13 Tom de Vries <tom@codesourcery.com>
2
3 gcc/
4 * tree-if-switch-conversion.c: New pass.
5 * tree-pass.h (pass_if_to_switch): Declare.
6 * common.opt (ftree-if-to-switch-conversion): New switch.
7 * opts.c (decode_options): Set flag_tree_if_to_switch_conversion at -O2
8 and higher.
9 * passes.c (init_optimization_passes): Use new pass.
10 * params.def (PARAM_IF_TO_SWITCH_THRESHOLD): New param.
11 * doc/invoke.texi (-ftree-if-to-switch-conversion)
12 (if-to-switch-threshold): New item.
13 * doc/invoke.texi (Optimization Options, option -O2): Add
14 -ftree-if-to-switch-conversion.
15 * Makefile.in (OBJS-common): Add tree-if-switch-conversion.o.
16 * Makefile.in (tree-if-switch-conversion.o): New rule.
17
18=== modified file 'gcc/Makefile.in'
19Index: gcc-4_5-branch/gcc/Makefile.in
20===================================================================
21--- gcc-4_5-branch.orig/gcc/Makefile.in
22+++ gcc-4_5-branch/gcc/Makefile.in
23@@ -1354,6 +1354,7 @@ OBJS-common = \
24 tree-profile.o \
25 tree-scalar-evolution.o \
26 tree-sra.o \
27+ tree-if-switch-conversion.o \
28 tree-switch-conversion.o \
29 tree-ssa-address.o \
30 tree-ssa-alias.o \
31@@ -3013,6 +3014,11 @@ tree-sra.o : tree-sra.c $(CONFIG_H) $(SY
32 $(TM_H) $(TREE_H) $(GIMPLE_H) $(CGRAPH_H) $(TREE_FLOW_H) $(IPA_PROP_H) \
33 $(DIAGNOSTIC_H) statistics.h $(TREE_DUMP_H) $(TIMEVAR_H) $(PARAMS_H) \
34 $(TARGET_H) $(FLAGS_H) $(EXPR_H) $(TREE_INLINE_H)
35+tree-if-switch-conversion.o : tree-if-switch-conversion.c $(CONFIG_H) \
36+ $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) \
37+ $(TREE_INLINE_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
38+ $(GIMPLE_H) $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \
39+ $(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H)
40 tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
41 $(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
42 $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
43Index: gcc-4_5-branch/gcc/common.opt
44===================================================================
45--- gcc-4_5-branch.orig/gcc/common.opt
46+++ gcc-4_5-branch/gcc/common.opt
47@@ -1285,6 +1285,10 @@ ftree-switch-conversion
48 Common Report Var(flag_tree_switch_conversion) Optimization
49 Perform conversions of switch initializations.
50
51+ftree-if-to-switch-conversion
52+Common Report Var(flag_tree_if_to_switch_conversion) Optimization
53+Perform conversions of chains of ifs into switches.
54+
55 ftree-dce
56 Common Report Var(flag_tree_dce) Optimization
57 Enable SSA dead code elimination optimization on trees
58Index: gcc-4_5-branch/gcc/doc/invoke.texi
59===================================================================
60--- gcc-4_5-branch.orig/gcc/doc/invoke.texi
61+++ gcc-4_5-branch/gcc/doc/invoke.texi
62@@ -382,7 +382,8 @@ Objective-C and Objective-C++ Dialects}.
63 -fstrict-aliasing -fstrict-overflow -fthread-jumps -ftracer @gol
64 -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copy-prop @gol
65 -ftree-copyrename -ftree-dce @gol
66--ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-loop-im @gol
67+-ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre @gol
68+-ftree-if-to-switch-conversion -ftree-loop-im @gol
69 -ftree-phiprop -ftree-loop-distribution @gol
70 -ftree-loop-ivcanon -ftree-loop-linear -ftree-loop-optimize @gol
71 -ftree-parallelize-loops=@var{n} -ftree-pre -ftree-pta -ftree-reassoc @gol
72@@ -5798,6 +5799,7 @@ also turns on the following optimization
73 -fsched-interblock -fsched-spec @gol
74 -fschedule-insns -fschedule-insns2 @gol
75 -fstrict-aliasing -fstrict-overflow @gol
76+-ftree-if-to-switch-conversion @gol
77 -ftree-switch-conversion @gol
78 -ftree-pre @gol
79 -ftree-vrp}
80@@ -6634,6 +6636,10 @@ Perform conversion of simple initializat
81 initializations from a scalar array. This flag is enabled by default
82 at @option{-O2} and higher.
83
84+@item -ftree-if-to-switch-conversion
85+Perform conversion of chains of ifs into switches. This flag is enabled by
86+default at @option{-O2} and higher.
87+
88 @item -ftree-dce
89 @opindex ftree-dce
90 Perform dead code elimination (DCE) on trees. This flag is enabled by
91@@ -8577,6 +8583,12 @@ loop in the loop nest by a given number
92 length can be changed using the @option{loop-block-tile-size}
93 parameter. The default value is 51 iterations.
94
95+@item if-to-switch-threshold
96+If-chain to switch conversion, enabled by
97+@option{-ftree-if-to-switch-conversion} convert chains of ifs of sufficient
98+length into switches. The parameter @option{if-to-switch-threshold} can be
99+used to set the minimal required length. The default value is 3.
100+
101 @end table
102 @end table
103
104Index: gcc-4_5-branch/gcc/opts.c
105===================================================================
106--- gcc-4_5-branch.orig/gcc/opts.c
107+++ gcc-4_5-branch/gcc/opts.c
108@@ -905,6 +905,7 @@ decode_options (unsigned int argc, const
109 flag_tree_builtin_call_dce = opt2;
110 flag_tree_pre = opt2;
111 flag_tree_switch_conversion = opt2;
112+ flag_tree_if_to_switch_conversion = opt2;
113 flag_ipa_cp = opt2;
114 flag_ipa_sra = opt2;
115 flag_ee = opt2;
116Index: gcc-4_5-branch/gcc/params.def
117===================================================================
118--- gcc-4_5-branch.orig/gcc/params.def
119+++ gcc-4_5-branch/gcc/params.def
120@@ -826,6 +826,11 @@ DEFPARAM (PARAM_IPA_SRA_PTR_GROWTH_FACTO
121 "a pointer to an aggregate with",
122 2, 0, 0)
123
124+DEFPARAM (PARAM_IF_TO_SWITCH_THRESHOLD,
125+ "if-to-switch-threshold",
126+ "Threshold for converting an if-chain into a switch",
127+ 3, 0, 0)
128+
129 /*
130 Local variables:
131 mode:c
132Index: gcc-4_5-branch/gcc/passes.c
133===================================================================
134--- gcc-4_5-branch.orig/gcc/passes.c
135+++ gcc-4_5-branch/gcc/passes.c
136@@ -788,6 +788,7 @@ init_optimization_passes (void)
137 NEXT_PASS (pass_cd_dce);
138 NEXT_PASS (pass_early_ipa_sra);
139 NEXT_PASS (pass_tail_recursion);
140+ NEXT_PASS (pass_if_to_switch);
141 NEXT_PASS (pass_convert_switch);
142 NEXT_PASS (pass_cleanup_eh);
143 NEXT_PASS (pass_profile);
144@@ -844,6 +845,7 @@ init_optimization_passes (void)
145 NEXT_PASS (pass_phiprop);
146 NEXT_PASS (pass_fre);
147 NEXT_PASS (pass_copy_prop);
148+ NEXT_PASS (pass_if_to_switch);
149 NEXT_PASS (pass_merge_phi);
150 NEXT_PASS (pass_vrp);
151 NEXT_PASS (pass_dce);
152Index: gcc-4_5-branch/gcc/tree-if-switch-conversion.c
153===================================================================
154--- /dev/null
155+++ gcc-4_5-branch/gcc/tree-if-switch-conversion.c
156@@ -0,0 +1,643 @@
157+/* Convert a chain of ifs into a switch.
158+ Copyright (C) 2010 Free Software Foundation, Inc.
159+ Contributed by Tom de Vries <tom@codesourcery.com>
160+
161+This file is part of GCC.
162+
163+GCC is free software; you can redistribute it and/or modify it
164+under the terms of the GNU General Public License as published by the
165+Free Software Foundation; either version 3, or (at your option) any
166+later version.
167+
168+GCC is distributed in the hope that it will be useful, but WITHOUT
169+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
170+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
171+for more details.
172+
173+You should have received a copy of the GNU General Public License
174+along with GCC; see the file COPYING3. If not, write to the Free
175+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
176+02110-1301, USA. */
177+
178+
179+/* The following pass converts a chain of ifs into a switch.
180+
181+ The if-chain has the following properties:
182+ - all bbs end in a GIMPLE_COND.
183+ - all but the first bb are empty, apart from the GIMPLE_COND.
184+ - the GIMPLE_CONDs compare the same variable against integer constants.
185+ - the true gotos all target the same bb.
186+ - the false gotos target the next in the if-chain.
187+
188+ F.i., consider the following if-chain:
189+ ...
190+ <bb 4>:
191+ ...
192+ if (D.1993_3 == 32)
193+ goto <bb 3>;
194+ else
195+ goto <bb 5>;
196+
197+ <bb 5>:
198+ if (D.1993_3 == 13)
199+ goto <bb 3>;
200+ else
201+ goto <bb 6>;
202+
203+ <bb 6>:
204+ if (D.1993_3 == 10)
205+ goto <bb 3>;
206+ else
207+ goto <bb 7>;
208+
209+ <bb 7>:
210+ if (D.1993_3 == 9)
211+ goto <bb 3>;
212+ else
213+ goto <bb 8>;
214+ ...
215+
216+ The pass will report this if-chain like this:
217+ ...
218+ var: D.1993_3
219+ first: <bb 4>
220+ true: <bb 3>
221+ last: <bb 7>
222+ constants: 9 10 13 32
223+ ...
224+
225+ and then convert the if-chain into a switch:
226+ ...
227+ <bb 4>:
228+ ...
229+ switch (D.1993_3) <default: <L8>,
230+ case 9: <L7>,
231+ case 10: <L7>,
232+ case 13: <L7>,
233+ case 32: <L7>>
234+ ...
235+
236+ The conversion does not happen if the chain is too short. The threshold is
237+ determined by the parameter PARAM_IF_TO_SWITCH_THRESHOLD.
238+
239+ The pass will try to construct a chain for each bb, unless the bb it is
240+ already contained in a chain. This ensures that all chains will be found,
241+ and that no chain will be constructed twice. The pass constructs and
242+ converts the chains one-by-one, rather than first calculating all the chains
243+ and then doing the conversions.
244+
245+ The pass could detect range-checks in analyze_bb as well, and handle them.
246+ Simple ones, like 'c <= 5', and more complex ones, like
247+ '(unsigned char) c + 247 <= 1', which is generated by the C front-end from
248+ code like '(c == 9 || c == 10)' or '(9 <= c && c <= 10)'. */
249+
250+#include "config.h"
251+#include "system.h"
252+#include "coretypes.h"
253+#include "tm.h"
254+
255+#include "params.h"
256+#include "flags.h"
257+#include "tree.h"
258+#include "basic-block.h"
259+#include "tree-flow.h"
260+#include "tree-flow-inline.h"
261+#include "tree-ssa-operands.h"
262+#include "diagnostic.h"
263+#include "tree-pass.h"
264+#include "tree-dump.h"
265+#include "timevar.h"
266+
267+/* Information we've collected about a single bb. */
268+
269+struct ifsc_info
270+{
271+ /* The variable of the bb's ending GIMPLE_COND, NULL_TREE if not present. */
272+ tree var;
273+ /* The cond_code of the bb's ending GIMPLE_COND. */
274+ enum tree_code cond_code;
275+ /* The constant of the bb's ending GIMPLE_COND. */
276+ tree constant;
277+ /* Successor edge of the bb if its GIMPLE_COND is true. */
278+ edge true_edge;
279+ /* Successor edge of the bb if its GIMPLE_COND is false. */
280+ edge false_edge;
281+ /* Set if the bb has valid ifsc_info. */
282+ bool valid;
283+ /* Set if the bb is part of a chain. */
284+ bool chained;
285+};
286+
287+/* Macros to access the fields of struct ifsc_info. */
288+
289+#define BB_IFSC_VAR(bb) (((struct ifsc_info *)bb->aux)->var)
290+#define BB_IFSC_COND_CODE(bb) (((struct ifsc_info *)bb->aux)->cond_code)
291+#define BB_IFSC_CONSTANT(bb) (((struct ifsc_info *)bb->aux)->constant)
292+#define BB_IFSC_TRUE_EDGE(bb) (((struct ifsc_info *)bb->aux)->true_edge)
293+#define BB_IFSC_FALSE_EDGE(bb) (((struct ifsc_info *)bb->aux)->false_edge)
294+#define BB_IFSC_VALID(bb) (((struct ifsc_info *)bb->aux)->valid)
295+#define BB_IFSC_CHAINED(bb) (((struct ifsc_info *)bb->aux)->chained)
296+
297+/* Data-type describing an if-chain. */
298+
299+struct if_chain
300+{
301+ /* First bb in the chain. */
302+ basic_block first;
303+ /* Last bb in the chain. */
304+ basic_block last;
305+ /* Variable that GIMPLE_CONDs of all bbs in chain compare against. */
306+ tree var;
307+ /* bb that all GIMPLE_CONDs jump to if comparison succeeds. */
308+ basic_block true_dest;
309+ /* Constants that GIMPLE_CONDs of all bbs in chain compare var against. */
310+ VEC (tree, heap) *constants;
311+ /* Same as previous, but sorted and with duplicates removed. */
312+ VEC (tree, heap) *unique_constants;
313+};
314+
315+/* Utility macro. */
316+
317+#define SWAP(T, X, Y) do { T tmp = (X); (X) = (Y); (Y) = tmp; } while (0)
318+
319+/* Helper function for sort_constants. */
320+
321+static int
322+compare_constants (const void *p1, const void *p2)
323+{
324+ const_tree const c1 = *(const_tree const*)p1;
325+ const_tree const c2 = *(const_tree const*)p2;
326+
327+ return tree_int_cst_compare (c1, c2);
328+}
329+
330+/* Sort constants in constants and copy to unique_constants, while skipping
331+ duplicates. */
332+
333+static void
334+sort_constants (VEC (tree,heap) *constants, VEC (tree,heap) **unique_constants)
335+{
336+ size_t len = VEC_length (tree, constants);
337+ unsigned int ix;
338+ tree prev = NULL_TREE, constant;
339+
340+ /* Sort constants. */
341+ qsort (VEC_address (tree, constants), len, sizeof (tree),
342+ compare_constants);
343+
344+ /* Copy to unique_constants, while skipping duplicates. */
345+ for (ix = 0; VEC_iterate (tree, constants, ix, constant); ix++)
346+ {
347+ if (prev != NULL_TREE && tree_int_cst_compare (prev, constant) == 0)
348+ continue;
349+ prev = constant;
350+
351+ VEC_safe_push (tree, heap, *unique_constants, constant);
352+ }
353+}
354+
355+/* Get true_edge and false_edge of a bb ending in a conditional jump. */
356+
357+static void
358+get_edges (basic_block bb, edge *true_edge, edge *false_edge)
359+{
360+ edge e0, e1;
361+ int e0_true;
362+ int n = EDGE_COUNT (bb->succs);
363+ gcc_assert (n == 2);
364+
365+ e0 = EDGE_SUCC (bb, 0);
366+ e1 = EDGE_SUCC (bb, 1);
367+
368+ e0_true = e0->flags & EDGE_TRUE_VALUE;
369+
370+ *true_edge = e0_true ? e0 : e1;
371+ *false_edge = e0_true ? e1 : e0;
372+
373+ gcc_assert ((*true_edge)->flags & EDGE_TRUE_VALUE);
374+ gcc_assert ((*false_edge)->flags & EDGE_FALSE_VALUE);
375+
376+ gcc_assert (((*true_edge)->flags & EDGE_FALLTHRU) == 0);
377+ gcc_assert (((*false_edge)->flags & EDGE_FALLTHRU) == 0);
378+}
379+
380+/* Analyze bb and store results in ifsc_info struct. */
381+
382+static void
383+analyze_bb (basic_block bb)
384+{
385+ gimple stmt = last_stmt (bb);
386+ tree lhs, rhs, var, constant;
387+ edge true_edge, false_edge;
388+ enum tree_code cond_code;
389+
390+ /* Don't redo analysis. */
391+ if (BB_IFSC_VALID (bb))
392+ return;
393+ BB_IFSC_VALID (bb) = true;
394+
395+
396+ /* bb needs to end in GIMPLE_COND. */
397+ if (!stmt || gimple_code (stmt) != GIMPLE_COND)
398+ return;
399+
400+ /* bb needs to end in EQ_EXPR or NE_EXPR. */
401+ cond_code = gimple_cond_code (stmt);
402+ if (cond_code != EQ_EXPR && cond_code != NE_EXPR)
403+ return;
404+
405+ lhs = gimple_cond_lhs (stmt);
406+ rhs = gimple_cond_rhs (stmt);
407+
408+ /* GIMPLE_COND needs to compare variable to constant. */
409+ if ((TREE_CONSTANT (lhs) == 0)
410+ == (TREE_CONSTANT (rhs) == 0))
411+ return;
412+
413+ var = TREE_CONSTANT (lhs) ? rhs : lhs;
414+ constant = TREE_CONSTANT (lhs)? lhs : rhs;
415+
416+ /* Switches cannot handle non-integral types. */
417+ if (!INTEGRAL_TYPE_P(TREE_TYPE (var)))
418+ return;
419+
420+ get_edges (bb, &true_edge, &false_edge);
421+
422+ if (cond_code == NE_EXPR)
423+ SWAP (edge, true_edge, false_edge);
424+
425+ /* TODO: loosen this constraint. In principle it's ok if true_edge->dest has
426+ phis, as long as for each phi all the edges coming from the chain have the
427+ same value. */
428+ if (!gimple_seq_empty_p (phi_nodes (true_edge->dest)))
429+ return;
430+
431+ /* Store analysis in ifsc_info struct. */
432+ BB_IFSC_VAR (bb) = var;
433+ BB_IFSC_COND_CODE (bb) = cond_code;
434+ BB_IFSC_CONSTANT (bb) = constant;
435+ BB_IFSC_TRUE_EDGE (bb) = true_edge;
436+ BB_IFSC_FALSE_EDGE (bb) = false_edge;
437+}
438+
439+/* Grow if-chain forward. */
440+
441+static void
442+grow_if_chain_forward (struct if_chain *chain)
443+{
444+ basic_block next_bb;
445+
446+ while (1)
447+ {
448+ next_bb = BB_IFSC_FALSE_EDGE (chain->last)->dest;
449+
450+ /* next_bb is already part of another chain. */
451+ if (BB_IFSC_CHAINED (next_bb))
452+ break;
453+
454+ /* next_bb needs to be dominated by the last bb. */
455+ if (!single_pred_p (next_bb))
456+ break;
457+
458+ analyze_bb (next_bb);
459+
460+ /* Does next_bb fit in chain? */
461+ if (BB_IFSC_VAR (next_bb) != chain->var
462+ || BB_IFSC_TRUE_EDGE (next_bb)->dest != chain->true_dest)
463+ break;
464+
465+ /* We can only add empty bbs at the end of the chain. */
466+ if (first_stmt (next_bb) != last_stmt (next_bb))
467+ break;
468+
469+ /* Add next_bb at end of chain. */
470+ VEC_safe_push (tree, heap, chain->constants, BB_IFSC_CONSTANT (next_bb));
471+ BB_IFSC_CHAINED (next_bb) = true;
472+ chain->last = next_bb;
473+ }
474+}
475+
476+/* Grow if-chain backward. */
477+
478+static void
479+grow_if_chain_backward (struct if_chain *chain)
480+{
481+ basic_block prev_bb;
482+
483+ while (1)
484+ {
485+ /* First bb is not empty, cannot grow backwards. */
486+ if (first_stmt (chain->first) != last_stmt (chain->first))
487+ break;
488+
489+ /* First bb has no single predecessor, cannot grow backwards. */
490+ if (!single_pred_p (chain->first))
491+ break;
492+
493+ prev_bb = single_pred (chain->first);
494+
495+ /* prev_bb is already part of another chain. */
496+ if (BB_IFSC_CHAINED (prev_bb))
497+ break;
498+
499+ analyze_bb (prev_bb);
500+
501+ /* Does prev_bb fit in chain? */
502+ if (BB_IFSC_VAR (prev_bb) != chain->var
503+ || BB_IFSC_TRUE_EDGE (prev_bb)->dest != chain->true_dest)
504+ break;
505+
506+ /* Add prev_bb at beginning of chain. */
507+ VEC_safe_push (tree, heap, chain->constants, BB_IFSC_CONSTANT (prev_bb));
508+ BB_IFSC_CHAINED (prev_bb) = true;
509+ chain->first = prev_bb;
510+ }
511+}
512+
513+/* Grow if-chain containing bb. */
514+
515+static void
516+grow_if_chain (basic_block bb, struct if_chain *chain)
517+{
518+ /* Initialize chain to empty. */
519+ VEC_truncate (tree, chain->constants, 0);
520+ VEC_truncate (tree, chain->unique_constants, 0);
521+
522+ /* bb is already part of another chain. */
523+ if (BB_IFSC_CHAINED (bb))
524+ return;
525+
526+ analyze_bb (bb);
527+
528+ /* bb is not fit to be part of a chain. */
529+ if (BB_IFSC_VAR (bb) == NULL_TREE)
530+ return;
531+
532+ /* Set bb as initial part of the chain. */
533+ VEC_safe_push (tree, heap, chain->constants, BB_IFSC_CONSTANT (bb));
534+ chain->first = chain->last = bb;
535+ chain->var = BB_IFSC_VAR (bb);
536+ chain->true_dest = BB_IFSC_TRUE_EDGE (bb)->dest;
537+
538+ /* bb is part of a chain now. */
539+ BB_IFSC_CHAINED (bb) = true;
540+
541+ /* Grow chain to its maximum size. */
542+ grow_if_chain_forward (chain);
543+ grow_if_chain_backward (chain);
544+
545+ /* Sort constants and skip duplicates. */
546+ sort_constants (chain->constants, &chain->unique_constants);
547+}
548+
549+static void
550+dump_tree_vector (VEC (tree, heap) *vec)
551+{
552+ unsigned int ix;
553+ tree constant;
554+
555+ for (ix = 0; VEC_iterate (tree, vec, ix, constant); ix++)
556+ {
557+ if (ix != 0)
558+ fprintf (dump_file, " ");
559+ print_generic_expr (dump_file, constant, 0);
560+ }
561+ fprintf (dump_file, "\n");
562+}
563+
564+/* Dump if-chain to dump_file. */
565+
566+static void
567+dump_if_chain (struct if_chain *chain)
568+{
569+ if (!dump_file)
570+ return;
571+
572+ fprintf (dump_file, "var: ");
573+ print_generic_expr (dump_file, chain->var, 0);
574+ fprintf (dump_file, "\n");
575+ fprintf (dump_file, "first: <bb %d>\n", chain->first->index);
576+ fprintf (dump_file, "true: <bb %d>\n", chain->true_dest->index);
577+ fprintf (dump_file, "last: <bb %d>\n",chain->last->index);
578+
579+ fprintf (dump_file, "constants: ");
580+ dump_tree_vector (chain->constants);
581+
582+ if (VEC_length (tree, chain->unique_constants)
583+ != VEC_length (tree, chain->constants))
584+ {
585+ fprintf (dump_file, "unique_constants: ");
586+ dump_tree_vector (chain->unique_constants);
587+ }
588+}
589+
590+/* Remove redundant bbs and edges. */
591+
592+static void
593+remove_redundant_bbs_and_edges (struct if_chain *chain, int *false_prob)
594+{
595+ basic_block bb, next;
596+ edge true_edge, false_edge;
597+
598+ for (bb = chain->first;; bb = next)
599+ {
600+ true_edge = BB_IFSC_TRUE_EDGE (bb);
601+ false_edge = BB_IFSC_FALSE_EDGE (bb);
602+
603+ /* Determine next, before we delete false_edge. */
604+ next = false_edge->dest;
605+
606+ /* Accumulate probability. */
607+ *false_prob = (*false_prob * false_edge->probability) / REG_BR_PROB_BASE;
608+
609+ /* Don't remove the new true_edge. */
610+ if (bb != chain->first)
611+ remove_edge (true_edge);
612+
613+ /* Don't remove the new false_edge. */
614+ if (bb != chain->last)
615+ remove_edge (false_edge);
616+
617+ /* Don't remove the first bb. */
618+ if (bb != chain->first)
619+ delete_basic_block (bb);
620+
621+ /* Stop after last. */
622+ if (bb == chain->last)
623+ break;
624+ }
625+}
626+
627+/* Update control flow graph. */
628+
629+static void
630+update_cfg (struct if_chain *chain)
631+{
632+ edge true_edge, false_edge;
633+ int false_prob;
634+ int flags_mask = ~(EDGE_FALLTHRU|EDGE_TRUE_VALUE|EDGE_FALSE_VALUE);
635+
636+ /* We keep these 2 edges, and remove the rest. We need this specific
637+ false_edge, because a phi in chain->last->dest might reference (the index
638+ of) this edge. For true_edge, we could pick any of them. */
639+ true_edge = BB_IFSC_TRUE_EDGE (chain->first);
640+ false_edge = BB_IFSC_FALSE_EDGE (chain->last);
641+
642+ /* Update true edge. */
643+ true_edge->flags &= flags_mask;
644+
645+ /* Update false edge. */
646+ redirect_edge_pred (false_edge, chain->first);
647+ false_edge->flags &= flags_mask;
648+
649+ false_prob = REG_BR_PROB_BASE;
650+ remove_redundant_bbs_and_edges (chain, &false_prob);
651+
652+ /* Repair probabilities. */
653+ true_edge->probability = REG_BR_PROB_BASE - false_prob;
654+ false_edge->probability = false_prob;
655+
656+ /* Force recalculation of dominance info. */
657+ free_dominance_info (CDI_DOMINATORS);
658+ free_dominance_info (CDI_POST_DOMINATORS);
659+}
660+
661+/* Create switch statement. Borrows from gimplify_switch_expr. */
662+
663+static void
664+convert_if_chain_to_switch (struct if_chain *chain)
665+{
666+ tree label_decl_true, label_decl_false;
667+ gimple label_true, label_false, gimple_switch;
668+ gimple_stmt_iterator gsi;
669+ tree default_case, other_case, constant;
670+ unsigned int ix;
671+ VEC (tree, heap) *labels;
672+
673+ labels = VEC_alloc (tree, heap, 8);
674+
675+ /* Create and insert true jump label. */
676+ label_decl_true = create_artificial_label (UNKNOWN_LOCATION);
677+ label_true = gimple_build_label (label_decl_true);
678+ gsi = gsi_start_bb (chain->true_dest);
679+ gsi_insert_before (&gsi, label_true, GSI_SAME_STMT);
680+
681+ /* Create and insert false jump label. */
682+ label_decl_false = create_artificial_label (UNKNOWN_LOCATION);
683+ label_false = gimple_build_label (label_decl_false);
684+ gsi = gsi_start_bb (BB_IFSC_FALSE_EDGE (chain->last)->dest);
685+ gsi_insert_before (&gsi, label_false, GSI_SAME_STMT);
686+
687+ /* Create default case label. */
688+ default_case = build3 (CASE_LABEL_EXPR, void_type_node,
689+ NULL_TREE, NULL_TREE,
690+ label_decl_false);
691+
692+ /* Create case labels. */
693+ for (ix = 0; VEC_iterate (tree, chain->unique_constants, ix, constant); ix++)
694+ {
695+ /* TODO: use ranges, as in gimplify_switch_expr. */
696+ other_case = build3 (CASE_LABEL_EXPR, void_type_node,
697+ constant, NULL_TREE,
698+ label_decl_true);
699+ VEC_safe_push (tree, heap, labels, other_case);
700+ }
701+
702+ /* Create and insert switch. */
703+ gimple_switch = gimple_build_switch_vec (chain->var, default_case, labels);
704+ gsi = gsi_for_stmt (last_stmt (chain->first));
705+ gsi_insert_before (&gsi, gimple_switch, GSI_SAME_STMT);
706+
707+ /* Remove now obsolete if. */
708+ gsi_remove (&gsi, true);
709+
710+ VEC_free (tree, heap, labels);
711+}
712+
713+/* Allocation and initialization. */
714+
715+static void
716+init_pass (struct if_chain *chain)
717+{
718+ alloc_aux_for_blocks (sizeof (struct ifsc_info));
719+
720+ chain->constants = VEC_alloc (tree, heap, 8);
721+ chain->unique_constants = VEC_alloc (tree, heap, 8);
722+}
723+
724+/* Deallocation. */
725+
726+static void
727+finish_pass (struct if_chain *chain)
728+{
729+ free_aux_for_blocks ();
730+
731+ VEC_free (tree, heap, chain->constants);
732+ VEC_free (tree, heap, chain->unique_constants);
733+}
734+
735+/* Find if-chains and convert them to switches. */
736+
737+static unsigned int
738+do_if_to_switch (void)
739+{
740+ basic_block bb;
741+ struct if_chain chain;
742+ unsigned int convert_threshold = PARAM_VALUE (PARAM_IF_TO_SWITCH_THRESHOLD);
743+
744+ init_pass (&chain);
745+
746+ for (bb = cfun->cfg->x_entry_block_ptr->next_bb;
747+ bb != cfun->cfg->x_exit_block_ptr;)
748+ {
749+ grow_if_chain (bb, &chain);
750+
751+ do
752+ bb = bb->next_bb;
753+ while (BB_IFSC_CHAINED (bb));
754+
755+ /* Determine if the chain is long enough. */
756+ if (VEC_length (tree, chain.unique_constants) < convert_threshold)
757+ continue;
758+
759+ dump_if_chain (&chain);
760+
761+ convert_if_chain_to_switch (&chain);
762+
763+ update_cfg (&chain);
764+ }
765+
766+ finish_pass (&chain);
767+
768+ return 0;
769+}
770+
771+/* The pass gate. */
772+
773+static bool
774+if_to_switch_gate (void)
775+{
776+ return flag_tree_if_to_switch_conversion;
777+}
778+
779+/* The pass definition. */
780+
781+struct gimple_opt_pass pass_if_to_switch =
782+{
783+ {
784+ GIMPLE_PASS,
785+ "iftoswitch", /* name */
786+ if_to_switch_gate, /* gate */
787+ do_if_to_switch, /* execute */
788+ NULL, /* sub */
789+ NULL, /* next */
790+ 0, /* static_pass_number */
791+ TV_TREE_SWITCH_CONVERSION, /* tv_id */
792+ PROP_cfg | PROP_ssa, /* properties_required */
793+ 0, /* properties_provided */
794+ 0, /* properties_destroyed */
795+ 0, /* todo_flags_start */
796+ TODO_update_ssa | TODO_dump_func
797+ | TODO_ggc_collect | TODO_verify_ssa /* todo_flags_finish */
798+ }
799+};
800Index: gcc-4_5-branch/gcc/tree-pass.h
801===================================================================
802--- gcc-4_5-branch.orig/gcc/tree-pass.h
803+++ gcc-4_5-branch/gcc/tree-pass.h
804@@ -560,6 +560,7 @@ extern struct gimple_opt_pass pass_inlin
805 extern struct gimple_opt_pass pass_all_early_optimizations;
806 extern struct gimple_opt_pass pass_update_address_taken;
807 extern struct gimple_opt_pass pass_convert_switch;
808+extern struct gimple_opt_pass pass_if_to_switch;
809
810 /* The root of the compilation pass tree, once constructed. */
811 extern struct opt_pass *all_passes, *all_small_ipa_passes, *all_lowering_passes,
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99473.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99473.patch
new file mode 100644
index 000000000..3ac7f7f6f
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99473.patch
@@ -0,0 +1,409 @@
12010-02-04 Tom de Vries <tom@codesourcery.com>
2
3 gcc/
4 stmt.c (set_jump_prob): Fix assert condition.
5
62010-01-27 Tom de Vries <tom@codesourcery.com>
7
8 gcc/
9 stmt.c (rtx_seq_cost): Use insn_rtx_cost instead of rtx_cost.
10
112010-01-26 Tom de Vries <tom@codesourcery.com>
12
13 gcc/
14 * stmt.c (struct case_bit_test): Add rev_hi and rev_lo field.
15 * stmt.c (emit_case_bit_test_jump): New function.
16 * stmt.c (rtx_seq_cost): New function.
17 * stmt.c (choose_case_bit_test_expand_method): New function.
18 * stmt.c (set_bit): New function.
19 * stmt.c (emit_case_bit_test): Adjust comment.
20 * stmt.c (emit_case_bit_test): Set and update rev_hi and rev_lo fields.
21 * stmt.c (emit_case_bit_test): Use set_bit.
22 * stmt.c (emit_case_bit_test): Use choose_case_bit_test_expand_method.
23 * stmt.c (emit_case_bit_test): Use emit_case_bit_test_jump.
24 * testsuite/gcc.dg/switch-bittest.c: New test.
25
262010-01-25 Tom de Vries <tom@codesourcery.com>
27
28 gcc/
29 * stmt.c (emit_case_bit_tests): Change prototype.
30 * stmt.c (struct case_bit_test): Add prob field.
31 * stmt.c (get_label_prob): New function.
32 * stmt.c (set_jump_prob): New function.
33 * stmt.c (emit_case_bit_tests): Use get_label_prob.
34 * stmt.c (emit_case_bit_tests): Set prob field.
35 * stmt.c (emit_case_bit_tests): Use set_jump_prob.
36 * stmt.c (expand_case): Add new args to emit_case_bit_tests invocation.
37 * testsuite/gcc.dg/switch-prob.c: Add test.
38
39=== modified file 'gcc/stmt.c'
40Index: gcc-4_5-branch/gcc/stmt.c
41===================================================================
42--- gcc-4_5-branch.orig/gcc/stmt.c
43+++ gcc-4_5-branch/gcc/stmt.c
44@@ -117,7 +117,8 @@ static void expand_value_return (rtx);
45 static int estimate_case_costs (case_node_ptr);
46 static bool lshift_cheap_p (void);
47 static int case_bit_test_cmp (const void *, const void *);
48-static void emit_case_bit_tests (tree, tree, tree, tree, case_node_ptr, rtx);
49+static void emit_case_bit_tests (tree, tree, tree, tree, case_node_ptr, tree,
50+ rtx, basic_block);
51 static void balance_case_nodes (case_node_ptr *, case_node_ptr);
52 static int node_has_low_bound (case_node_ptr, tree);
53 static int node_has_high_bound (case_node_ptr, tree);
54@@ -2107,8 +2108,11 @@ struct case_bit_test
55 {
56 HOST_WIDE_INT hi;
57 HOST_WIDE_INT lo;
58+ HOST_WIDE_INT rev_hi;
59+ HOST_WIDE_INT rev_lo;
60 rtx label;
61 int bits;
62+ int prob;
63 };
64
65 /* Determine whether "1 << x" is relatively cheap in word_mode. */
66@@ -2148,10 +2152,193 @@ case_bit_test_cmp (const void *p1, const
67 return CODE_LABEL_NUMBER (d2->label) - CODE_LABEL_NUMBER (d1->label);
68 }
69
70+/* Emit a bit test and a conditional jump. */
71+
72+static void
73+emit_case_bit_test_jump (unsigned int count, rtx index, rtx label,
74+ unsigned int method, HOST_WIDE_INT hi,
75+ HOST_WIDE_INT lo, HOST_WIDE_INT rev_hi,
76+ HOST_WIDE_INT rev_lo)
77+{
78+ rtx expr;
79+
80+ if (method == 1)
81+ {
82+ /* (1 << index). */
83+ if (count == 0)
84+ index = expand_binop (word_mode, ashl_optab, const1_rtx,
85+ index, NULL_RTX, 1, OPTAB_WIDEN);
86+ /* CST. */
87+ expr = immed_double_const (lo, hi, word_mode);
88+ /* ((1 << index) & CST). */
89+ expr = expand_binop (word_mode, and_optab, index, expr,
90+ NULL_RTX, 1, OPTAB_WIDEN);
91+ /* if (((1 << index) & CST)). */
92+ emit_cmp_and_jump_insns (expr, const0_rtx, NE, NULL_RTX,
93+ word_mode, 1, label);
94+ }
95+ else if (method == 2)
96+ {
97+ /* (bit_reverse (CST)) */
98+ expr = immed_double_const (rev_lo, rev_hi, word_mode);
99+ /* ((bit_reverse (CST)) << index) */
100+ expr = expand_binop (word_mode, ashl_optab, expr,
101+ index, NULL_RTX, 1, OPTAB_WIDEN);
102+ /* if (((bit_reverse (CST)) << index) < 0). */
103+ emit_cmp_and_jump_insns (expr, const0_rtx, LT, NULL_RTX,
104+ word_mode, 0, label);
105+ }
106+ else
107+ gcc_unreachable ();
108+}
109+
110+/* Return the cost of rtx sequence SEQ. The sequence is supposed to contain one
111+ jump, which has no effect in the cost. */
112+
113+static unsigned int
114+rtx_seq_cost (rtx seq)
115+{
116+ rtx one;
117+ unsigned int nr_branches = 0;
118+ unsigned int sum = 0, cost;
119+
120+ for (one = seq; one != NULL_RTX; one = NEXT_INSN (one))
121+ if (JUMP_P (one))
122+ nr_branches++;
123+ else
124+ {
125+ cost = insn_rtx_cost (PATTERN (one), optimize_insn_for_speed_p ());
126+ if (dump_file)
127+ {
128+ print_rtl_single (dump_file, one);
129+ fprintf (dump_file, "cost: %u\n", cost);
130+ }
131+ sum += cost;
132+ }
133+
134+ gcc_assert (nr_branches == 1);
135+
136+ if (dump_file)
137+ fprintf (dump_file, "total cost: %u\n", sum);
138+ return sum;
139+}
140+
141+/* Generate the rtx sequences for 2 bit test expansion methods, measure the cost
142+ and choose the cheapest. */
143+
144+static unsigned int
145+choose_case_bit_test_expand_method (rtx label)
146+{
147+ rtx seq, index;
148+ unsigned int cost[2];
149+ static bool method_known = false;
150+ static unsigned int method;
151+
152+ /* If already known, return the method. */
153+ if (method_known)
154+ return method;
155+
156+ index = gen_rtx_REG (word_mode, 10000);
157+
158+ for (method = 1; method <= 2; ++method)
159+ {
160+ start_sequence ();
161+ emit_case_bit_test_jump (0, index, label, method, 0, 0x0f0f0f0f, 0,
162+ 0x0f0f0f0f);
163+ seq = get_insns ();
164+ end_sequence ();
165+ cost[method - 1] = rtx_seq_cost (seq);
166+ }
167+
168+ /* Determine method based on heuristic. */
169+ method = ((cost[1] < cost[0]) ? 1 : 0) + 1;
170+
171+ /* Save and return method. */
172+ method_known = true;
173+ return method;
174+}
175+
176+/* Get the edge probability of the edge from SRC to LABEL_DECL. */
177+
178+static int
179+get_label_prob (basic_block src, tree label_decl)
180+{
181+ basic_block dest;
182+ int prob = 0, nr_prob = 0;
183+ unsigned int i;
184+ edge e;
185+
186+ if (label_decl == NULL_TREE)
187+ return 0;
188+
189+ dest = VEC_index (basic_block, label_to_block_map,
190+ LABEL_DECL_UID (label_decl));
191+
192+ for (i = 0; i < EDGE_COUNT (src->succs); ++i)
193+ {
194+ e = EDGE_SUCC (src, i);
195+
196+ if (e->dest != dest)
197+ continue;
198+
199+ prob += e->probability;
200+ nr_prob++;
201+ }
202+
203+ gcc_assert (nr_prob == 1);
204+
205+ return prob;
206+}
207+
208+/* Add probability note with scaled PROB to JUMP and update INV_SCALE. This
209+ function is intended to be used with a series of conditional jumps to L[i]
210+ where the probabilities p[i] to get to L[i] are known, and the jump
211+ probabilities j[i] need to be computed.
212+
213+ The algorithm to calculate the probabilities is
214+
215+ scale = REG_BR_PROB_BASE;
216+ for (i = 0; i < n; ++i)
217+ {
218+ j[i] = p[i] * scale / REG_BR_PROB_BASE;
219+ f[i] = REG_BR_PROB_BASE - j[i];
220+ scale = scale / (f[i] / REG_BR_PROB_BASE);
221+ }
222+
223+ The implementation uses inv_scale (REG_BR_PROB_BASE / scale) instead of
224+ scale, because scale tends to grow bigger than REG_BR_PROB_BASE. */
225+
226+static void
227+set_jump_prob (rtx jump, int prob, int *inv_scale)
228+{
229+ /* j[i] = p[i] * scale / REG_BR_PROB_BASE. */
230+ int jump_prob = prob * REG_BR_PROB_BASE / *inv_scale;
231+ /* f[i] = REG_BR_PROB_BASE - j[i]. */
232+ int fallthrough_prob = REG_BR_PROB_BASE - jump_prob;
233+
234+ gcc_assert (jump_prob <= REG_BR_PROB_BASE);
235+ add_reg_note (jump, REG_BR_PROB, GEN_INT (jump_prob));
236+
237+ /* scale = scale / (f[i] / REG_BR_PROB_BASE). */
238+ *inv_scale = *inv_scale * fallthrough_prob / REG_BR_PROB_BASE;
239+}
240+
241+/* Set bit in hwi hi/lo pair. */
242+
243+static void
244+set_bit (HOST_WIDE_INT *hi, HOST_WIDE_INT *lo, unsigned int j)
245+{
246+ if (j >= HOST_BITS_PER_WIDE_INT)
247+ *hi |= (HOST_WIDE_INT) 1 << (j - HOST_BITS_PER_INT);
248+ else
249+ *lo |= (HOST_WIDE_INT) 1 << j;
250+}
251+
252 /* Expand a switch statement by a short sequence of bit-wise
253 comparisons. "switch(x)" is effectively converted into
254- "if ((1 << (x-MINVAL)) & CST)" where CST and MINVAL are
255- integer constants.
256+ "if ((1 << (x-MINVAL)) & CST)" or
257+ "if (((bit_reverse (CST)) << (x-MINVAL)) < 0)", where CST
258+ and MINVAL are integer constants.
259
260 INDEX_EXPR is the value being switched on, which is of
261 type INDEX_TYPE. MINVAL is the lowest case value of in
262@@ -2165,14 +2352,17 @@ case_bit_test_cmp (const void *p1, const
263
264 static void
265 emit_case_bit_tests (tree index_type, tree index_expr, tree minval,
266- tree range, case_node_ptr nodes, rtx default_label)
267+ tree range, case_node_ptr nodes, tree default_label_decl,
268+ rtx default_label, basic_block bb)
269 {
270 struct case_bit_test test[MAX_CASE_BIT_TESTS];
271 enum machine_mode mode;
272 rtx expr, index, label;
273 unsigned int i,j,lo,hi;
274 struct case_node *n;
275- unsigned int count;
276+ unsigned int count, method;
277+ int inv_scale = REG_BR_PROB_BASE;
278+ int default_prob = get_label_prob (bb, default_label_decl);
279
280 count = 0;
281 for (n = nodes; n; n = n->right)
282@@ -2187,8 +2377,11 @@ emit_case_bit_tests (tree index_type, tr
283 gcc_assert (count < MAX_CASE_BIT_TESTS);
284 test[i].hi = 0;
285 test[i].lo = 0;
286+ test[i].rev_hi = 0;
287+ test[i].rev_lo = 0;
288 test[i].label = label;
289 test[i].bits = 1;
290+ test[i].prob = get_label_prob (bb, n->code_label);
291 count++;
292 }
293 else
294@@ -2199,10 +2392,11 @@ emit_case_bit_tests (tree index_type, tr
295 hi = tree_low_cst (fold_build2 (MINUS_EXPR, index_type,
296 n->high, minval), 1);
297 for (j = lo; j <= hi; j++)
298- if (j >= HOST_BITS_PER_WIDE_INT)
299- test[i].hi |= (HOST_WIDE_INT) 1 << (j - HOST_BITS_PER_INT);
300- else
301- test[i].lo |= (HOST_WIDE_INT) 1 << j;
302+ {
303+ set_bit (&test[i].hi, &test[i].lo, j);
304+ set_bit (&test[i].rev_hi, &test[i].rev_lo,
305+ GET_MODE_BITSIZE (word_mode) - j - 1);
306+ }
307 }
308
309 qsort (test, count, sizeof(*test), case_bit_test_cmp);
310@@ -2216,20 +2410,20 @@ emit_case_bit_tests (tree index_type, tr
311 mode = TYPE_MODE (index_type);
312 expr = expand_normal (range);
313 if (default_label)
314- emit_cmp_and_jump_insns (index, expr, GTU, NULL_RTX, mode, 1,
315- default_label);
316+ {
317+ emit_cmp_and_jump_insns (index, expr, GTU, NULL_RTX, mode, 1,
318+ default_label);
319+ set_jump_prob (get_last_insn (), default_prob / 2, &inv_scale);
320+ }
321
322 index = convert_to_mode (word_mode, index, 0);
323- index = expand_binop (word_mode, ashl_optab, const1_rtx,
324- index, NULL_RTX, 1, OPTAB_WIDEN);
325
326+ method = choose_case_bit_test_expand_method (test[0].label);
327 for (i = 0; i < count; i++)
328 {
329- expr = immed_double_const (test[i].lo, test[i].hi, word_mode);
330- expr = expand_binop (word_mode, and_optab, index, expr,
331- NULL_RTX, 1, OPTAB_WIDEN);
332- emit_cmp_and_jump_insns (expr, const0_rtx, NE, NULL_RTX,
333- word_mode, 1, test[i].label);
334+ emit_case_bit_test_jump (i, index, test[i].label, method, test[i].hi,
335+ test[i].lo, test[i].rev_hi, test[i].rev_lo);
336+ set_jump_prob (get_last_insn (), test[i].prob, &inv_scale);
337 }
338
339 if (default_label)
340@@ -2400,7 +2594,8 @@ expand_case (gimple stmt)
341 range = maxval;
342 }
343 emit_case_bit_tests (index_type, index_expr, minval, range,
344- case_list, default_label);
345+ case_list, default_label_decl, default_label,
346+ gimple_bb (stmt));
347 }
348
349 /* If range of values is much bigger than number of values,
350Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/switch-bittest.c
351===================================================================
352--- /dev/null
353+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/switch-bittest.c
354@@ -0,0 +1,25 @@
355+/* { dg-do compile } */
356+/* { dg-options "-O2 -fdump-rtl-expand" } */
357+
358+const char *
359+f (const char *p)
360+{
361+ while (1)
362+ {
363+ switch (*p)
364+ {
365+ case 9:
366+ case 10:
367+ case 13:
368+ case 32:
369+ break;
370+ default:
371+ return p;
372+ }
373+ }
374+}
375+
376+/* { dg-final { scan-rtl-dump-times "jump_insn" 4 "expand" { target mips*-*-* } } } */
377+/* { dg-final { scan-rtl-dump-times "REG_BR_PROB" 2 "expand" { target mips*-*-* } } } */
378+/* { dg-final { scan-rtl-dump-times "lt " 1 "expand" { target mips*-*-* } } } */
379+/* { dg-final { cleanup-rtl-dump "expand" } } */
380Index: gcc-4_5-branch/gcc/testsuite/gcc.dg/switch-prob.c
381===================================================================
382--- /dev/null
383+++ gcc-4_5-branch/gcc/testsuite/gcc.dg/switch-prob.c
384@@ -0,0 +1,25 @@
385+/* { dg-do compile } */
386+/* { dg-options "-O2 -fdump-rtl-expand" } */
387+
388+const char *
389+f (const char *p)
390+{
391+ while (1)
392+ {
393+ switch (*p)
394+ {
395+ case 9:
396+ case 10:
397+ case 13:
398+ case 32:
399+ break;
400+ default:
401+ return p;
402+ }
403+ }
404+}
405+
406+/* { dg-final { scan-rtl-dump-times "jump_insn" 4 "expand" { target mips*-*-* } } } */
407+/* { dg-final { scan-rtl-dump-times "REG_BR_PROB" 2 "expand" { target mips*-*-* } } } */
408+/* { dg-final { scan-rtl-dump-times "heuristics" 0 "expand" { target mips*-*-* } } } */
409+/* { dg-final { cleanup-rtl-dump "expand" } } */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99474.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99474.patch
new file mode 100644
index 000000000..9b0fb0b48
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99474.patch
@@ -0,0 +1,3346 @@
12011-01-14 Bernd Schmidt <bernds@codesourcery.com>
2
3 gcc/
4 * function.c (thread_prologue_and_epilogue_insns): Avoid uninitialized
5 variable.
6
72011-01-12 Bernd Schmidt <bernds@codesourcery.com>
8
9 gcc/
10 * config/s390/s390.c (s390_emit_epilogue): Don't use gen_rtx_RETURN.
11 * config/rx/rx.c (gen_rx_rtsd_vector): Likewise.
12 * config/m68hc11/m68hc11.md (return): Likewise.
13 * config/cris/cris.c (cris_expand_return): Likewise.
14 * config/m68k/m68k.c (m68k_expand_epilogue): Likewise.
15 * config/picochip/picochip.c (picochip_expand_epilogue): Likewise.
16 * config/h8300/h8300.c (h8300_push_pop, h8300_expand_epilogue):
17 Likewise.
18 * config/v850/v850.c (expand_epilogue): Likewise.
19 * config/bfin/bfin.c (bfin_expand_call): Likewise.
20
212011-01-04 Catherine Moore <clm@codesourcery.com>
22
23 gcc/
24 * config/rs6000/rs6000.c (rs6000_make_savres_rtx): Change
25 gen_rtx_RETURN to ret_rtx.
26 (rs6000_emit_epilogue): Likewise.
27 (rs6000_output_mi_thunk): Likewise.
28
292011-01-03 Bernd Schmidt <bernds@codesourcery.com>
30
31 gcc/
32 * doc/tm.texi (RETURN_ADDR_REGNUM): Document.
33 * doc/md.texi (simple_return): Document pattern.
34 (return): Add a sentence to clarify.
35 * doc/rtl.texi (simple_return): Document.
36 * doc/invoke.texi (Optimize Options): Document -fshrink-wrap.
37 * common.opt (fshrink-wrap): New.
38 * opts.c (decode_options): Set it for -O2 and above.
39 * gengenrtl.c (special_rtx): PC, CC0, RETURN and SIMPLE_RETURN
40 are special.
41 * rtl.h (ANY_RETURN_P): New macro.
42 (global_rtl_index): Add GR_RETURN and GR_SIMPLE_RETURN.
43 (ret_rtx, simple_return_rtx): New macros.
44 * genemit.c (gen_exp): RETURN and SIMPLE_RETURN have unique rtxs.
45 (gen_expand, gen_split): Use ANY_RETURN_P.
46 * rtl.c (copy_rtx): RETURN and SIMPLE_RETURN are shared.
47 * emit-rtl.c (verify_rtx_sharing): Likewise.
48 (skip_consecutive_labels): Return the argument if it is a return rtx.
49 (classify_insn): Handle both kinds of return.
50 (init_emit_regs): Create global rtl for ret_rtx and simple_return_rtx.
51 * df-scan.c (df_uses_record): Handle SIMPLE_RETURN.
52 * rtl.def (SIMPLE_RETURN): New.
53 * rtlanal.c (tablejump_p): Check JUMP_LABEL for returns.
54 * final.c (final_scan_insn): Recognize both kinds of return.
55 * reorg.c (function_return_label, function_simple_return_label): New
56 static variables.
57 (end_of_function_label): Remove.
58 (simplejump_or_return_p): New static function.
59 (find_end_label): Add a new arg, KIND. All callers changed.
60 Depending on KIND, look for a label suitable for return or
61 simple_return.
62 (make_return_insns): Make corresponding changes.
63 (get_jump_flags): Check JUMP_LABELs for returns.
64 (follow_jumps): Likewise.
65 (get_branch_condition): Check target for return patterns rather
66 than NULL.
67 (own_thread_p): Likewise for thread.
68 (steal_delay_list_from_target): Check JUMP_LABELs for returns.
69 Use simplejump_or_return_p.
70 (fill_simple_delay_slots): Likewise.
71 (optimize_skip): Likewise.
72 (fill_slots_from_thread): Likewise.
73 (relax_delay_slots): Likewise.
74 (dbr_schedule): Adjust handling of end_of_function_label for the
75 two new variables.
76 * ifcvt.c (find_if_case_1): Take care when redirecting jumps to the
77 exit block.
78 (dead_or_predicable): Change NEW_DEST arg to DEST_EDGE. All callers
79 changed. Ensure that the right label is passed to redirect_jump.
80 * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p,
81 returnjump_p): Handle SIMPLE_RETURNs.
82 (delete_related_insns): Check JUMP_LABEL for returns.
83 (redirect_target): New static function.
84 (redirect_exp_1): Use it. Handle any kind of return rtx as a label
85 rather than interpreting NULL as a return.
86 (redirect_jump_1): Assert that nlabel is not NULL.
87 (redirect_jump): Likewise.
88 (redirect_jump_2): Handle any kind of return rtx as a label rather
89 than interpreting NULL as a return.
90 * dwarf2out.c (compute_barrier_args_size_1): Check JUMP_LABEL for
91 returns.
92 * function.c (emit_return_into_block): Remove useless declaration.
93 (record_hard_reg_sets, frame_required_for_rtx, gen_return_pattern,
94 requires_stack_frame_p): New static functions.
95 (emit_return_into_block): New arg SIMPLE_P. All callers changed.
96 Generate either kind of return pattern and update the JUMP_LABEL.
97 (thread_prologue_and_epilogue_insns): Implement a form of
98 shrink-wrapping. Ensure JUMP_LABELs for return insns are set.
99 * print-rtl.c (print_rtx): Handle returns in JUMP_LABELs.
100 * cfglayout.c (fixup_reorder_chain): Ensure JUMP_LABELs for returns
101 remain correct.
102 * resource.c (find_dead_or_set_registers): Check JUMP_LABELs for
103 returns.
104 (mark_target_live_regs): Don't pass a return rtx to next_active_insn.
105 * basic-block.h (force_nonfallthru_and_redirect): Declare.
106 * sched-vis.c (print_pattern): Add case for SIMPLE_RETURN.
107 * cfgrtl.c (force_nonfallthru_and_redirect): No longer static. New arg
108 JUMP_LABEL. All callers changed. Use the label when generating
109 return insns.
110
111 * config/i386/i386.md (returns, return_str, return_cond): New
112 code_iterator and corresponding code_attrs.
113 (<return_str>return): Renamed from return and adapted.
114 (<return_str>return_internal): Likewise for return_internal.
115 (<return_str>return_internal_long): Likewise for return_internal_long.
116 (<return_str>return_pop_internal): Likewise for return_pop_internal.
117 (<return_str>return_indirect_internal): Likewise for
118 return_indirect_internal.
119 * config/i386/i386.c (ix86_expand_epilogue): Expand a simple_return as
120 the last insn.
121 (ix86_pad_returns): Handle both kinds of return rtx.
122 * config/arm/arm.c (use_simple_return_p): new function.
123 (is_jump_table): Handle returns in JUMP_LABELs.
124 (output_return_instruction): New arg SIMPLE. All callers changed.
125 Use it to determine which kind of return to generate.
126 (arm_final_prescan_insn): Handle both kinds of return.
127 * config/arm/arm.md (returns, return_str, return_simple_p,
128 return_cond): New code_iterator and corresponding code_attrs.
129 (<return_str>return): Renamed from return and adapted.
130 (arm_<return_str>return): Renamed from arm_return and adapted.
131 (cond_<return_str>return): Renamed from cond_return and adapted.
132 (cond_<return_str>return_inverted): Renamed from cond_return_inverted
133 and adapted.
134 (epilogue): Use ret_rtx instead of gen_rtx_RETURN.
135 * config/arm/thumb2.md (thumb2_<return_str>return): Renamed from
136 thumb2_return and adapted.
137 * config/arm/arm.h (RETURN_ADDR_REGNUM): Define.
138 * config/arm/arm-protos.h (use_simple_return_p): Declare.
139 (output_return_instruction): Adjust declaration.
140 * config/mips/mips.c (mips_expand_epilogue): Generate a simple_return
141 as final insn.
142 * config/mips/mips.md (simple_return): New expander.
143 (*simple_return, simple_return_internal): New patterns.
144 * config/sh/sh.c (barrier_align): Handle return in a JUMP_LABEL.
145 (split_branches): Don't pass a null label to redirect_jump.
146
147 From mainline:
148 * vec.h (FOR_EACH_VEC_ELT, FOR_EACH_VEC_ELT_REVERSE): New macros.
149 * haifa-sched.c (find_fallthru_edge_from): Rename from
150 find_fallthru_edge. All callers changed.
151 * sched-int.h (find_fallthru_edge_from): Rename declaration as well.
152 * basic-block.h (find_fallthru_edge): New inline function.
153
154=== modified file 'gcc/basic-block.h'
155Index: gcc-4_5-branch/gcc/basic-block.h
156===================================================================
157--- gcc-4_5-branch.orig/gcc/basic-block.h
158+++ gcc-4_5-branch/gcc/basic-block.h
159@@ -884,6 +884,7 @@ extern void flow_edge_list_print (const
160
161 /* In cfgrtl.c */
162 extern basic_block force_nonfallthru (edge);
163+extern basic_block force_nonfallthru_and_redirect (edge, basic_block, rtx);
164 extern rtx block_label (basic_block);
165 extern bool purge_all_dead_edges (void);
166 extern bool purge_dead_edges (basic_block);
167@@ -1004,6 +1005,20 @@ bb_has_abnormal_pred (basic_block bb)
168 return false;
169 }
170
171+/* Return the fallthru edge in EDGES if it exists, NULL otherwise. */
172+static inline edge
173+find_fallthru_edge (VEC(edge,gc) *edges)
174+{
175+ edge e;
176+ edge_iterator ei;
177+
178+ FOR_EACH_EDGE (e, ei, edges)
179+ if (e->flags & EDGE_FALLTHRU)
180+ break;
181+
182+ return e;
183+}
184+
185 /* In cfgloopmanip.c. */
186 extern edge mfb_kj_edge;
187 extern bool mfb_keep_just (edge);
188Index: gcc-4_5-branch/gcc/cfganal.c
189===================================================================
190--- gcc-4_5-branch.orig/gcc/cfganal.c
191+++ gcc-4_5-branch/gcc/cfganal.c
192@@ -271,6 +271,37 @@ set_edge_can_fallthru_flag (void)
193 EDGE_SUCC (bb, 0)->flags |= EDGE_CAN_FALLTHRU;
194 EDGE_SUCC (bb, 1)->flags |= EDGE_CAN_FALLTHRU;
195 }
196+ /* dwarf2out expects that a NOTE_INSN_EPILOGUE_BEGIN is always paired
197+ with a return or a sibcall. Ensure that this remains the case if
198+ they are in different basic blocks. */
199+ FOR_EACH_BB (bb)
200+ {
201+ edge e;
202+ edge_iterator ei;
203+ rtx insn, end;
204+
205+ end = BB_END (bb);
206+ FOR_BB_INSNS (bb, insn)
207+ if (GET_CODE (insn) == NOTE
208+ && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG
209+ && !(CALL_P (end) && SIBLING_CALL_P (end))
210+ && !returnjump_p (end))
211+ {
212+ basic_block other_bb = NULL;
213+ FOR_EACH_EDGE (e, ei, bb->succs)
214+ {
215+ if (e->flags & EDGE_FALLTHRU)
216+ other_bb = e->dest;
217+ else
218+ e->flags &= ~EDGE_CAN_FALLTHRU;
219+ }
220+ FOR_EACH_EDGE (e, ei, other_bb->preds)
221+ {
222+ if (!(e->flags & EDGE_FALLTHRU))
223+ e->flags &= ~EDGE_CAN_FALLTHRU;
224+ }
225+ }
226+ }
227 }
228
229 /* Find unreachable blocks. An unreachable block will have 0 in
230Index: gcc-4_5-branch/gcc/cfglayout.c
231===================================================================
232--- gcc-4_5-branch.orig/gcc/cfglayout.c
233+++ gcc-4_5-branch/gcc/cfglayout.c
234@@ -766,6 +766,7 @@ fixup_reorder_chain (void)
235 {
236 edge e_fall, e_taken, e;
237 rtx bb_end_insn;
238+ rtx ret_label = NULL_RTX;
239 basic_block nb;
240 edge_iterator ei;
241
242@@ -785,6 +786,7 @@ fixup_reorder_chain (void)
243 bb_end_insn = BB_END (bb);
244 if (JUMP_P (bb_end_insn))
245 {
246+ ret_label = JUMP_LABEL (bb_end_insn);
247 if (any_condjump_p (bb_end_insn))
248 {
249 /* This might happen if the conditional jump has side
250@@ -899,7 +901,7 @@ fixup_reorder_chain (void)
251 }
252
253 /* We got here if we need to add a new jump insn. */
254- nb = force_nonfallthru (e_fall);
255+ nb = force_nonfallthru_and_redirect (e_fall, e_fall->dest, ret_label);
256 if (nb)
257 {
258 nb->il.rtl->visited = 1;
259@@ -1118,24 +1120,30 @@ extern bool cfg_layout_can_duplicate_bb_
260 bool
261 cfg_layout_can_duplicate_bb_p (const_basic_block bb)
262 {
263+ rtx insn;
264+
265 /* Do not attempt to duplicate tablejumps, as we need to unshare
266 the dispatch table. This is difficult to do, as the instructions
267 computing jump destination may be hoisted outside the basic block. */
268 if (tablejump_p (BB_END (bb), NULL, NULL))
269 return false;
270
271- /* Do not duplicate blocks containing insns that can't be copied. */
272- if (targetm.cannot_copy_insn_p)
273+ insn = BB_HEAD (bb);
274+ while (1)
275 {
276- rtx insn = BB_HEAD (bb);
277- while (1)
278- {
279- if (INSN_P (insn) && targetm.cannot_copy_insn_p (insn))
280- return false;
281- if (insn == BB_END (bb))
282- break;
283- insn = NEXT_INSN (insn);
284- }
285+ /* Do not duplicate blocks containing insns that can't be copied. */
286+ if (INSN_P (insn) && targetm.cannot_copy_insn_p
287+ && targetm.cannot_copy_insn_p (insn))
288+ return false;
289+ /* dwarf2out expects that these notes are always paired with a
290+ returnjump or sibling call. */
291+ if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG
292+ && !returnjump_p (BB_END (bb))
293+ && (!CALL_P (BB_END (bb)) || !SIBLING_CALL_P (BB_END (bb))))
294+ return false;
295+ if (insn == BB_END (bb))
296+ break;
297+ insn = NEXT_INSN (insn);
298 }
299
300 return true;
301@@ -1180,6 +1188,9 @@ duplicate_insn_chain (rtx from, rtx to)
302 break;
303 }
304 copy = emit_copy_of_insn_after (insn, get_last_insn ());
305+ if (JUMP_P (insn) && JUMP_LABEL (insn) != NULL_RTX
306+ && ANY_RETURN_P (JUMP_LABEL (insn)))
307+ JUMP_LABEL (copy) = JUMP_LABEL (insn);
308 maybe_copy_epilogue_insn (insn, copy);
309 break;
310
311Index: gcc-4_5-branch/gcc/cfgrtl.c
312===================================================================
313--- gcc-4_5-branch.orig/gcc/cfgrtl.c
314+++ gcc-4_5-branch/gcc/cfgrtl.c
315@@ -1107,10 +1107,13 @@ rtl_redirect_edge_and_branch (edge e, ba
316 }
317
318 /* Like force_nonfallthru below, but additionally performs redirection
319- Used by redirect_edge_and_branch_force. */
320+ Used by redirect_edge_and_branch_force. JUMP_LABEL is used only
321+ when redirecting to the EXIT_BLOCK, it is either a return or a
322+ simple_return rtx indicating which kind of returnjump to create.
323+ It should be NULL otherwise. */
324
325-static basic_block
326-force_nonfallthru_and_redirect (edge e, basic_block target)
327+basic_block
328+force_nonfallthru_and_redirect (edge e, basic_block target, rtx jump_label)
329 {
330 basic_block jump_block, new_bb = NULL, src = e->src;
331 rtx note;
332@@ -1242,11 +1245,25 @@ force_nonfallthru_and_redirect (edge e,
333 e->flags &= ~EDGE_FALLTHRU;
334 if (target == EXIT_BLOCK_PTR)
335 {
336+ if (jump_label == ret_rtx)
337+ {
338 #ifdef HAVE_return
339- emit_jump_insn_after_setloc (gen_return (), BB_END (jump_block), loc);
340+ emit_jump_insn_after_setloc (gen_return (), BB_END (jump_block),
341+ loc);
342 #else
343- gcc_unreachable ();
344+ gcc_unreachable ();
345 #endif
346+ }
347+ else
348+ {
349+ gcc_assert (jump_label == simple_return_rtx);
350+#ifdef HAVE_simple_return
351+ emit_jump_insn_after_setloc (gen_simple_return (),
352+ BB_END (jump_block), loc);
353+#else
354+ gcc_unreachable ();
355+#endif
356+ }
357 }
358 else
359 {
360@@ -1273,7 +1290,7 @@ force_nonfallthru_and_redirect (edge e,
361 basic_block
362 force_nonfallthru (edge e)
363 {
364- return force_nonfallthru_and_redirect (e, e->dest);
365+ return force_nonfallthru_and_redirect (e, e->dest, NULL_RTX);
366 }
367
368 /* Redirect edge even at the expense of creating new jump insn or
369@@ -1290,7 +1307,7 @@ rtl_redirect_edge_and_branch_force (edge
370 /* In case the edge redirection failed, try to force it to be non-fallthru
371 and redirect newly created simplejump. */
372 df_set_bb_dirty (e->src);
373- return force_nonfallthru_and_redirect (e, target);
374+ return force_nonfallthru_and_redirect (e, target, NULL_RTX);
375 }
376
377 /* The given edge should potentially be a fallthru edge. If that is in
378Index: gcc-4_5-branch/gcc/common.opt
379===================================================================
380--- gcc-4_5-branch.orig/gcc/common.opt
381+++ gcc-4_5-branch/gcc/common.opt
382@@ -1147,6 +1147,11 @@ fshow-column
383 Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(1)
384 Show column numbers in diagnostics, when available. Default on
385
386+fshrink-wrap
387+Common Report Var(flag_shrink_wrap) Optimization
388+Emit function prologues only before parts of the function that need it,
389+rather than at the top of the function.
390+
391 fsignaling-nans
392 Common Report Var(flag_signaling_nans) Optimization
393 Disable optimizations observable by IEEE signaling NaNs
394Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h
395===================================================================
396--- gcc-4_5-branch.orig/gcc/config/arm/arm-protos.h
397+++ gcc-4_5-branch/gcc/config/arm/arm-protos.h
398@@ -26,6 +26,7 @@
399 extern void arm_override_options (void);
400 extern void arm_optimization_options (int, int);
401 extern int use_return_insn (int, rtx);
402+extern bool use_simple_return_p (void);
403 extern enum reg_class arm_regno_class (int);
404 extern void arm_load_pic_register (unsigned long);
405 extern int arm_volatile_func (void);
406@@ -137,7 +138,7 @@ extern int arm_address_offset_is_imm (rt
407 extern const char *output_add_immediate (rtx *);
408 extern const char *arithmetic_instr (rtx, int);
409 extern void output_ascii_pseudo_op (FILE *, const unsigned char *, int);
410-extern const char *output_return_instruction (rtx, int, int);
411+extern const char *output_return_instruction (rtx, bool, bool, bool);
412 extern void arm_poke_function_name (FILE *, const char *);
413 extern void arm_print_operand (FILE *, rtx, int);
414 extern void arm_print_operand_address (FILE *, rtx);
415Index: gcc-4_5-branch/gcc/config/arm/arm.c
416===================================================================
417--- gcc-4_5-branch.orig/gcc/config/arm/arm.c
418+++ gcc-4_5-branch/gcc/config/arm/arm.c
419@@ -2163,6 +2163,18 @@ arm_trampoline_adjust_address (rtx addr)
420 return addr;
421 }
422
423+/* Return true if we should try to use a simple_return insn, i.e. perform
424+ shrink-wrapping if possible. This is the case if we need to emit a
425+ prologue, which we can test by looking at the offsets. */
426+bool
427+use_simple_return_p (void)
428+{
429+ arm_stack_offsets *offsets;
430+
431+ offsets = arm_get_frame_offsets ();
432+ return offsets->outgoing_args != 0;
433+}
434+
435 /* Return 1 if it is possible to return using a single instruction.
436 If SIBLING is non-null, this is a test for a return before a sibling
437 call. SIBLING is the call insn, so we can examine its register usage. */
438@@ -11284,6 +11296,7 @@ is_jump_table (rtx insn)
439
440 if (GET_CODE (insn) == JUMP_INSN
441 && JUMP_LABEL (insn) != NULL
442+ && !ANY_RETURN_P (JUMP_LABEL (insn))
443 && ((table = next_real_insn (JUMP_LABEL (insn)))
444 == next_real_insn (insn))
445 && table != NULL
446@@ -14168,7 +14181,7 @@ arm_get_vfp_saved_size (void)
447 /* Generate a function exit sequence. If REALLY_RETURN is false, then do
448 everything bar the final return instruction. */
449 const char *
450-output_return_instruction (rtx operand, int really_return, int reverse)
451+output_return_instruction (rtx operand, bool really_return, bool reverse, bool simple)
452 {
453 char conditional[10];
454 char instr[100];
455@@ -14206,10 +14219,15 @@ output_return_instruction (rtx operand,
456
457 sprintf (conditional, "%%?%%%c0", reverse ? 'D' : 'd');
458
459- cfun->machine->return_used_this_function = 1;
460+ if (simple)
461+ live_regs_mask = 0;
462+ else
463+ {
464+ cfun->machine->return_used_this_function = 1;
465
466- offsets = arm_get_frame_offsets ();
467- live_regs_mask = offsets->saved_regs_mask;
468+ offsets = arm_get_frame_offsets ();
469+ live_regs_mask = offsets->saved_regs_mask;
470+ }
471
472 if (live_regs_mask)
473 {
474@@ -17108,6 +17126,7 @@ arm_final_prescan_insn (rtx insn)
475
476 /* If we start with a return insn, we only succeed if we find another one. */
477 int seeking_return = 0;
478+ enum rtx_code return_code = UNKNOWN;
479
480 /* START_INSN will hold the insn from where we start looking. This is the
481 first insn after the following code_label if REVERSE is true. */
482@@ -17146,7 +17165,7 @@ arm_final_prescan_insn (rtx insn)
483 else
484 return;
485 }
486- else if (GET_CODE (body) == RETURN)
487+ else if (ANY_RETURN_P (body))
488 {
489 start_insn = next_nonnote_insn (start_insn);
490 if (GET_CODE (start_insn) == BARRIER)
491@@ -17157,6 +17176,7 @@ arm_final_prescan_insn (rtx insn)
492 {
493 reverse = TRUE;
494 seeking_return = 1;
495+ return_code = GET_CODE (body);
496 }
497 else
498 return;
499@@ -17197,11 +17217,15 @@ arm_final_prescan_insn (rtx insn)
500 label = XEXP (XEXP (SET_SRC (body), 2), 0);
501 then_not_else = FALSE;
502 }
503- else if (GET_CODE (XEXP (SET_SRC (body), 1)) == RETURN)
504- seeking_return = 1;
505- else if (GET_CODE (XEXP (SET_SRC (body), 2)) == RETURN)
506+ else if (ANY_RETURN_P (XEXP (SET_SRC (body), 1)))
507+ {
508+ seeking_return = 1;
509+ return_code = GET_CODE (XEXP (SET_SRC (body), 1));
510+ }
511+ else if (ANY_RETURN_P (XEXP (SET_SRC (body), 2)))
512 {
513 seeking_return = 1;
514+ return_code = GET_CODE (XEXP (SET_SRC (body), 2));
515 then_not_else = FALSE;
516 }
517 else
518@@ -17302,8 +17326,7 @@ arm_final_prescan_insn (rtx insn)
519 && !use_return_insn (TRUE, NULL)
520 && !optimize_size)
521 fail = TRUE;
522- else if (GET_CODE (scanbody) == RETURN
523- && seeking_return)
524+ else if (GET_CODE (scanbody) == return_code)
525 {
526 arm_ccfsm_state = 2;
527 succeed = TRUE;
528Index: gcc-4_5-branch/gcc/config/arm/arm.h
529===================================================================
530--- gcc-4_5-branch.orig/gcc/config/arm/arm.h
531+++ gcc-4_5-branch/gcc/config/arm/arm.h
532@@ -2622,6 +2622,8 @@ extern int making_const_table;
533 #define RETURN_ADDR_RTX(COUNT, FRAME) \
534 arm_return_addr (COUNT, FRAME)
535
536+#define RETURN_ADDR_REGNUM LR_REGNUM
537+
538 /* Mask of the bits in the PC that contain the real return address
539 when running in 26-bit mode. */
540 #define RETURN_ADDR_MASK26 (0x03fffffc)
541Index: gcc-4_5-branch/gcc/config/arm/arm.md
542===================================================================
543--- gcc-4_5-branch.orig/gcc/config/arm/arm.md
544+++ gcc-4_5-branch/gcc/config/arm/arm.md
545@@ -8882,66 +8882,72 @@
546 [(set_attr "type" "call")]
547 )
548
549-(define_expand "return"
550- [(return)]
551- "TARGET_32BIT && USE_RETURN_INSN (FALSE)"
552+;; Both kinds of return insn.
553+(define_code_iterator returns [return simple_return])
554+(define_code_attr return_str [(return "") (simple_return "simple_")])
555+(define_code_attr return_simple_p [(return "false") (simple_return "true")])
556+(define_code_attr return_cond [(return " && USE_RETURN_INSN (FALSE)")
557+ (simple_return " && use_simple_return_p ()")])
558+
559+(define_expand "<return_str>return"
560+ [(returns)]
561+ "TARGET_32BIT<return_cond>"
562 "")
563
564-;; Often the return insn will be the same as loading from memory, so set attr
565-(define_insn "*arm_return"
566- [(return)]
567- "TARGET_ARM && USE_RETURN_INSN (FALSE)"
568- "*
569- {
570- if (arm_ccfsm_state == 2)
571- {
572- arm_ccfsm_state += 2;
573- return \"\";
574- }
575- return output_return_instruction (const_true_rtx, TRUE, FALSE);
576- }"
577+(define_insn "*arm_<return_str>return"
578+ [(returns)]
579+ "TARGET_ARM<return_cond>"
580+{
581+ if (arm_ccfsm_state == 2)
582+ {
583+ arm_ccfsm_state += 2;
584+ return "";
585+ }
586+ return output_return_instruction (const_true_rtx, true, false,
587+ <return_simple_p>);
588+}
589 [(set_attr "type" "load1")
590 (set_attr "length" "12")
591 (set_attr "predicable" "yes")]
592 )
593
594-(define_insn "*cond_return"
595+(define_insn "*cond_<return_str>return"
596 [(set (pc)
597 (if_then_else (match_operator 0 "arm_comparison_operator"
598 [(match_operand 1 "cc_register" "") (const_int 0)])
599- (return)
600+ (returns)
601 (pc)))]
602- "TARGET_ARM && USE_RETURN_INSN (TRUE)"
603- "*
604- {
605- if (arm_ccfsm_state == 2)
606- {
607- arm_ccfsm_state += 2;
608- return \"\";
609- }
610- return output_return_instruction (operands[0], TRUE, FALSE);
611- }"
612+ "TARGET_ARM<return_cond>"
613+{
614+ if (arm_ccfsm_state == 2)
615+ {
616+ arm_ccfsm_state += 2;
617+ return "";
618+ }
619+ return output_return_instruction (operands[0], true, false,
620+ <return_simple_p>);
621+}
622 [(set_attr "conds" "use")
623 (set_attr "length" "12")
624 (set_attr "type" "load1")]
625 )
626
627-(define_insn "*cond_return_inverted"
628+(define_insn "*cond_<return_str>return_inverted"
629 [(set (pc)
630 (if_then_else (match_operator 0 "arm_comparison_operator"
631 [(match_operand 1 "cc_register" "") (const_int 0)])
632 (pc)
633- (return)))]
634- "TARGET_ARM && USE_RETURN_INSN (TRUE)"
635- "*
636- {
637- if (arm_ccfsm_state == 2)
638- {
639- arm_ccfsm_state += 2;
640- return \"\";
641- }
642- return output_return_instruction (operands[0], TRUE, TRUE);
643- }"
644+ (returns)))]
645+ "TARGET_ARM<return_cond>"
646+{
647+ if (arm_ccfsm_state == 2)
648+ {
649+ arm_ccfsm_state += 2;
650+ return "";
651+ }
652+ return output_return_instruction (operands[0], true, true,
653+ <return_simple_p>);
654+}
655 [(set_attr "conds" "use")
656 (set_attr "length" "12")
657 (set_attr "type" "load1")]
658@@ -10809,8 +10815,7 @@
659 DONE;
660 }
661 emit_jump_insn (gen_rtx_UNSPEC_VOLATILE (VOIDmode,
662- gen_rtvec (1,
663- gen_rtx_RETURN (VOIDmode)),
664+ gen_rtvec (1, ret_rtx),
665 VUNSPEC_EPILOGUE));
666 DONE;
667 "
668@@ -10827,7 +10832,7 @@
669 "TARGET_32BIT"
670 "*
671 if (use_return_insn (FALSE, next_nonnote_insn (insn)))
672- return output_return_instruction (const_true_rtx, FALSE, FALSE);
673+ return output_return_instruction (const_true_rtx, false, false, false);
674 return arm_output_epilogue (next_nonnote_insn (insn));
675 "
676 ;; Length is absolute worst case
677Index: gcc-4_5-branch/gcc/config/arm/thumb2.md
678===================================================================
679--- gcc-4_5-branch.orig/gcc/config/arm/thumb2.md
680+++ gcc-4_5-branch/gcc/config/arm/thumb2.md
681@@ -1020,16 +1020,15 @@
682
683 ;; Note: this is not predicable, to avoid issues with linker-generated
684 ;; interworking stubs.
685-(define_insn "*thumb2_return"
686- [(return)]
687- "TARGET_THUMB2 && USE_RETURN_INSN (FALSE)"
688- "*
689- {
690- return output_return_instruction (const_true_rtx, TRUE, FALSE);
691- }"
692+(define_insn "*thumb2_<return_str>return"
693+ [(returns)]
694+ "TARGET_THUMB2<return_cond>"
695+{
696+ return output_return_instruction (const_true_rtx, true, false,
697+ <return_simple_p>);
698+}
699 [(set_attr "type" "load1")
700- (set_attr "length" "12")]
701-)
702+ (set_attr "length" "12")])
703
704 (define_insn_and_split "thumb2_eh_return"
705 [(unspec_volatile [(match_operand:SI 0 "s_register_operand" "r")]
706Index: gcc-4_5-branch/gcc/config/bfin/bfin.c
707===================================================================
708--- gcc-4_5-branch.orig/gcc/config/bfin/bfin.c
709+++ gcc-4_5-branch/gcc/config/bfin/bfin.c
710@@ -2359,7 +2359,7 @@ bfin_expand_call (rtx retval, rtx fnaddr
711 XVECEXP (pat, 0, n++) = gen_rtx_USE (VOIDmode, picreg);
712 XVECEXP (pat, 0, n++) = gen_rtx_USE (VOIDmode, cookie);
713 if (sibcall)
714- XVECEXP (pat, 0, n++) = gen_rtx_RETURN (VOIDmode);
715+ XVECEXP (pat, 0, n++) = ret_rtx;
716 else
717 XVECEXP (pat, 0, n++) = gen_rtx_CLOBBER (VOIDmode, retsreg);
718 call = emit_call_insn (pat);
719Index: gcc-4_5-branch/gcc/config/cris/cris.c
720===================================================================
721--- gcc-4_5-branch.orig/gcc/config/cris/cris.c
722+++ gcc-4_5-branch/gcc/config/cris/cris.c
723@@ -1771,7 +1771,7 @@ cris_expand_return (bool on_stack)
724 we do that until they're fixed. Currently, all return insns in a
725 function must be the same (not really a limiting factor) so we need
726 to check that it doesn't change half-way through. */
727- emit_jump_insn (gen_rtx_RETURN (VOIDmode));
728+ emit_jump_insn (ret_rtx);
729
730 CRIS_ASSERT (cfun->machine->return_type != CRIS_RETINSN_RET || !on_stack);
731 CRIS_ASSERT (cfun->machine->return_type != CRIS_RETINSN_JUMP || on_stack);
732Index: gcc-4_5-branch/gcc/config/h8300/h8300.c
733===================================================================
734--- gcc-4_5-branch.orig/gcc/config/h8300/h8300.c
735+++ gcc-4_5-branch/gcc/config/h8300/h8300.c
736@@ -691,7 +691,7 @@ h8300_push_pop (int regno, int nregs, bo
737 /* Add the return instruction. */
738 if (return_p)
739 {
740- RTVEC_ELT (vec, i) = gen_rtx_RETURN (VOIDmode);
741+ RTVEC_ELT (vec, i) = ret_rtx;
742 i++;
743 }
744
745@@ -975,7 +975,7 @@ h8300_expand_epilogue (void)
746 }
747
748 if (!returned_p)
749- emit_jump_insn (gen_rtx_RETURN (VOIDmode));
750+ emit_jump_insn (ret_rtx);
751 }
752
753 /* Return nonzero if the current function is an interrupt
754Index: gcc-4_5-branch/gcc/config/i386/i386.c
755===================================================================
756--- gcc-4_5-branch.orig/gcc/config/i386/i386.c
757+++ gcc-4_5-branch/gcc/config/i386/i386.c
758@@ -9308,13 +9308,13 @@ ix86_expand_epilogue (int style)
759
760 pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
761 popc, -1, true);
762- emit_jump_insn (gen_return_indirect_internal (ecx));
763+ emit_jump_insn (gen_simple_return_indirect_internal (ecx));
764 }
765 else
766- emit_jump_insn (gen_return_pop_internal (popc));
767+ emit_jump_insn (gen_simple_return_pop_internal (popc));
768 }
769 else
770- emit_jump_insn (gen_return_internal ());
771+ emit_jump_insn (gen_simple_return_internal ());
772
773 /* Restore the state back to the state from the prologue,
774 so that it's correct for the next epilogue. */
775@@ -26615,7 +26615,7 @@ ix86_pad_returns (void)
776 rtx prev;
777 bool replace = false;
778
779- if (!JUMP_P (ret) || GET_CODE (PATTERN (ret)) != RETURN
780+ if (!JUMP_P (ret) || !ANY_RETURN_P (PATTERN (ret))
781 || optimize_bb_for_size_p (bb))
782 continue;
783 for (prev = PREV_INSN (ret); prev; prev = PREV_INSN (prev))
784@@ -26645,7 +26645,10 @@ ix86_pad_returns (void)
785 }
786 if (replace)
787 {
788- emit_jump_insn_before (gen_return_internal_long (), ret);
789+ if (PATTERN (ret) == ret_rtx)
790+ emit_jump_insn_before (gen_return_internal_long (), ret);
791+ else
792+ emit_jump_insn_before (gen_simple_return_internal_long (), ret);
793 delete_insn (ret);
794 }
795 }
796Index: gcc-4_5-branch/gcc/config/i386/i386.md
797===================================================================
798--- gcc-4_5-branch.orig/gcc/config/i386/i386.md
799+++ gcc-4_5-branch/gcc/config/i386/i386.md
800@@ -13798,24 +13798,29 @@
801 ""
802 [(set_attr "length" "0")])
803
804+(define_code_iterator returns [return simple_return])
805+(define_code_attr return_str [(return "") (simple_return "simple_")])
806+(define_code_attr return_cond [(return "ix86_can_use_return_insn_p ()")
807+ (simple_return "")])
808+
809 ;; Insn emitted into the body of a function to return from a function.
810 ;; This is only done if the function's epilogue is known to be simple.
811 ;; See comments for ix86_can_use_return_insn_p in i386.c.
812
813-(define_expand "return"
814- [(return)]
815- "ix86_can_use_return_insn_p ()"
816+(define_expand "<return_str>return"
817+ [(returns)]
818+ "<return_cond>"
819 {
820 if (crtl->args.pops_args)
821 {
822 rtx popc = GEN_INT (crtl->args.pops_args);
823- emit_jump_insn (gen_return_pop_internal (popc));
824+ emit_jump_insn (gen_<return_str>return_pop_internal (popc));
825 DONE;
826 }
827 })
828
829-(define_insn "return_internal"
830- [(return)]
831+(define_insn "<return_str>return_internal"
832+ [(returns)]
833 "reload_completed"
834 "ret"
835 [(set_attr "length" "1")
836@@ -13826,8 +13831,8 @@
837 ;; Used by x86_machine_dependent_reorg to avoid penalty on single byte RET
838 ;; instruction Athlon and K8 have.
839
840-(define_insn "return_internal_long"
841- [(return)
842+(define_insn "<return_str>return_internal_long"
843+ [(returns)
844 (unspec [(const_int 0)] UNSPEC_REP)]
845 "reload_completed"
846 "rep\;ret"
847@@ -13837,8 +13842,8 @@
848 (set_attr "prefix_rep" "1")
849 (set_attr "modrm" "0")])
850
851-(define_insn "return_pop_internal"
852- [(return)
853+(define_insn "<return_str>return_pop_internal"
854+ [(returns)
855 (use (match_operand:SI 0 "const_int_operand" ""))]
856 "reload_completed"
857 "ret\t%0"
858@@ -13847,8 +13852,8 @@
859 (set_attr "length_immediate" "2")
860 (set_attr "modrm" "0")])
861
862-(define_insn "return_indirect_internal"
863- [(return)
864+(define_insn "<return_str>return_indirect_internal"
865+ [(returns)
866 (use (match_operand:SI 0 "register_operand" "r"))]
867 "reload_completed"
868 "jmp\t%A0"
869Index: gcc-4_5-branch/gcc/config/m68hc11/m68hc11.md
870===================================================================
871--- gcc-4_5-branch.orig/gcc/config/m68hc11/m68hc11.md
872+++ gcc-4_5-branch/gcc/config/m68hc11/m68hc11.md
873@@ -6576,7 +6576,7 @@
874 if (ret_size && ret_size <= 2)
875 {
876 emit_jump_insn (gen_rtx_PARALLEL (VOIDmode,
877- gen_rtvec (2, gen_rtx_RETURN (VOIDmode),
878+ gen_rtvec (2, ret_rtx,
879 gen_rtx_USE (VOIDmode,
880 gen_rtx_REG (HImode, 1)))));
881 DONE;
882@@ -6584,7 +6584,7 @@
883 if (ret_size)
884 {
885 emit_jump_insn (gen_rtx_PARALLEL (VOIDmode,
886- gen_rtvec (2, gen_rtx_RETURN (VOIDmode),
887+ gen_rtvec (2, ret_rtx,
888 gen_rtx_USE (VOIDmode,
889 gen_rtx_REG (SImode, 0)))));
890 DONE;
891Index: gcc-4_5-branch/gcc/config/m68k/m68k.c
892===================================================================
893--- gcc-4_5-branch.orig/gcc/config/m68k/m68k.c
894+++ gcc-4_5-branch/gcc/config/m68k/m68k.c
895@@ -1366,7 +1366,7 @@ m68k_expand_epilogue (bool sibcall_p)
896 EH_RETURN_STACKADJ_RTX));
897
898 if (!sibcall_p)
899- emit_jump_insn (gen_rtx_RETURN (VOIDmode));
900+ emit_jump_insn (ret_rtx);
901 }
902
903 /* Return true if X is a valid comparison operator for the dbcc
904Index: gcc-4_5-branch/gcc/config/mips/mips.c
905===================================================================
906--- gcc-4_5-branch.orig/gcc/config/mips/mips.c
907+++ gcc-4_5-branch/gcc/config/mips/mips.c
908@@ -10497,7 +10497,8 @@ mips_expand_epilogue (bool sibcall_p)
909 regno = GP_REG_FIRST + 7;
910 else
911 regno = RETURN_ADDR_REGNUM;
912- emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, regno)));
913+ emit_jump_insn (gen_simple_return_internal (gen_rtx_REG (Pmode,
914+ regno)));
915 }
916 }
917
918Index: gcc-4_5-branch/gcc/config/mips/mips.md
919===================================================================
920--- gcc-4_5-branch.orig/gcc/config/mips/mips.md
921+++ gcc-4_5-branch/gcc/config/mips/mips.md
922@@ -5815,6 +5815,18 @@
923 [(set_attr "type" "jump")
924 (set_attr "mode" "none")])
925
926+(define_expand "simple_return"
927+ [(simple_return)]
928+ "!mips_can_use_return_insn ()"
929+ { mips_expand_before_return (); })
930+
931+(define_insn "*simple_return"
932+ [(simple_return)]
933+ "!mips_can_use_return_insn ()"
934+ "%*j\t$31%/"
935+ [(set_attr "type" "jump")
936+ (set_attr "mode" "none")])
937+
938 ;; Normal return.
939
940 (define_insn "return_internal"
941@@ -5825,6 +5837,14 @@
942 [(set_attr "type" "jump")
943 (set_attr "mode" "none")])
944
945+(define_insn "simple_return_internal"
946+ [(simple_return)
947+ (use (match_operand 0 "pmode_register_operand" ""))]
948+ ""
949+ "%*j\t%0%/"
950+ [(set_attr "type" "jump")
951+ (set_attr "mode" "none")])
952+
953 ;; Exception return.
954 (define_insn "mips_eret"
955 [(return)
956Index: gcc-4_5-branch/gcc/config/picochip/picochip.c
957===================================================================
958--- gcc-4_5-branch.orig/gcc/config/picochip/picochip.c
959+++ gcc-4_5-branch/gcc/config/picochip/picochip.c
960@@ -1996,7 +1996,7 @@ picochip_expand_epilogue (int is_sibling
961 rtvec p;
962 p = rtvec_alloc (2);
963
964- RTVEC_ELT (p, 0) = gen_rtx_RETURN (VOIDmode);
965+ RTVEC_ELT (p, 0) = ret_rtx;
966 RTVEC_ELT (p, 1) = gen_rtx_USE (VOIDmode,
967 gen_rtx_REG (Pmode, LINK_REGNUM));
968 emit_jump_insn (gen_rtx_PARALLEL (VOIDmode, p));
969Index: gcc-4_5-branch/gcc/config/rs6000/rs6000.c
970===================================================================
971--- gcc-4_5-branch.orig/gcc/config/rs6000/rs6000.c
972+++ gcc-4_5-branch/gcc/config/rs6000/rs6000.c
973@@ -18563,7 +18563,7 @@ rs6000_make_savres_rtx (rs6000_stack_t *
974 p = rtvec_alloc ((lr ? 4 : 3) + n_regs);
975
976 if (!savep && lr)
977- RTVEC_ELT (p, offset++) = gen_rtx_RETURN (VOIDmode);
978+ RTVEC_ELT (p, offset++) = ret_rtx;
979
980 RTVEC_ELT (p, offset++)
981 = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (Pmode, 65));
982@@ -19638,7 +19638,7 @@ rs6000_emit_epilogue (int sibcall)
983 alloc_rname = ggc_strdup (rname);
984
985 j = 0;
986- RTVEC_ELT (p, j++) = gen_rtx_RETURN (VOIDmode);
987+ RTVEC_ELT (p, j++) = ret_rtx;
988 RTVEC_ELT (p, j++) = gen_rtx_USE (VOIDmode,
989 gen_rtx_REG (Pmode,
990 LR_REGNO));
991@@ -20254,7 +20254,7 @@ rs6000_emit_epilogue (int sibcall)
992 else
993 p = rtvec_alloc (2);
994
995- RTVEC_ELT (p, 0) = gen_rtx_RETURN (VOIDmode);
996+ RTVEC_ELT (p, 0) = ret_rtx;
997 RTVEC_ELT (p, 1) = ((restoring_FPRs_inline || !lr)
998 ? gen_rtx_USE (VOIDmode, gen_rtx_REG (Pmode, 65))
999 : gen_rtx_CLOBBER (VOIDmode,
1000@@ -20695,7 +20695,7 @@ rs6000_output_mi_thunk (FILE *file, tree
1001 gen_rtx_USE (VOIDmode,
1002 gen_rtx_REG (SImode,
1003 LR_REGNO)),
1004- gen_rtx_RETURN (VOIDmode))));
1005+ ret_rtx)));
1006 SIBLING_CALL_P (insn) = 1;
1007 emit_barrier ();
1008
1009Index: gcc-4_5-branch/gcc/config/rx/rx.c
1010===================================================================
1011--- gcc-4_5-branch.orig/gcc/config/rx/rx.c
1012+++ gcc-4_5-branch/gcc/config/rx/rx.c
1013@@ -1562,7 +1562,7 @@ gen_rx_rtsd_vector (unsigned int adjust,
1014 : plus_constant (stack_pointer_rtx,
1015 i * UNITS_PER_WORD)));
1016
1017- XVECEXP (vector, 0, count - 1) = gen_rtx_RETURN (VOIDmode);
1018+ XVECEXP (vector, 0, count - 1) = ret_rtx;
1019
1020 return vector;
1021 }
1022Index: gcc-4_5-branch/gcc/config/s390/s390.c
1023===================================================================
1024--- gcc-4_5-branch.orig/gcc/config/s390/s390.c
1025+++ gcc-4_5-branch/gcc/config/s390/s390.c
1026@@ -8170,7 +8170,7 @@ s390_emit_epilogue (bool sibcall)
1027
1028 p = rtvec_alloc (2);
1029
1030- RTVEC_ELT (p, 0) = gen_rtx_RETURN (VOIDmode);
1031+ RTVEC_ELT (p, 0) = ret_rtx;
1032 RTVEC_ELT (p, 1) = gen_rtx_USE (VOIDmode, return_reg);
1033 emit_jump_insn (gen_rtx_PARALLEL (VOIDmode, p));
1034 }
1035Index: gcc-4_5-branch/gcc/config/sh/sh.c
1036===================================================================
1037--- gcc-4_5-branch.orig/gcc/config/sh/sh.c
1038+++ gcc-4_5-branch/gcc/config/sh/sh.c
1039@@ -5252,7 +5252,8 @@ barrier_align (rtx barrier_or_label)
1040 }
1041 if (prev
1042 && JUMP_P (prev)
1043- && JUMP_LABEL (prev))
1044+ && JUMP_LABEL (prev)
1045+ && !ANY_RETURN_P (JUMP_LABEL (prev)))
1046 {
1047 rtx x;
1048 if (jump_to_next
1049@@ -5951,7 +5952,7 @@ split_branches (rtx first)
1050 JUMP_LABEL (insn) = far_label;
1051 LABEL_NUSES (far_label)++;
1052 }
1053- redirect_jump (insn, NULL_RTX, 1);
1054+ redirect_jump (insn, ret_rtx, 1);
1055 far_label = 0;
1056 }
1057 }
1058Index: gcc-4_5-branch/gcc/config/v850/v850.c
1059===================================================================
1060--- gcc-4_5-branch.orig/gcc/config/v850/v850.c
1061+++ gcc-4_5-branch/gcc/config/v850/v850.c
1062@@ -1832,7 +1832,7 @@ expand_epilogue (void)
1063 {
1064 restore_all = gen_rtx_PARALLEL (VOIDmode,
1065 rtvec_alloc (num_restore + 2));
1066- XVECEXP (restore_all, 0, 0) = gen_rtx_RETURN (VOIDmode);
1067+ XVECEXP (restore_all, 0, 0) = ret_rtx;
1068 XVECEXP (restore_all, 0, 1)
1069 = gen_rtx_SET (VOIDmode, stack_pointer_rtx,
1070 gen_rtx_PLUS (Pmode,
1071Index: gcc-4_5-branch/gcc/df-scan.c
1072===================================================================
1073--- gcc-4_5-branch.orig/gcc/df-scan.c
1074+++ gcc-4_5-branch/gcc/df-scan.c
1075@@ -3296,6 +3296,7 @@ df_uses_record (enum df_ref_class cl, st
1076 }
1077
1078 case RETURN:
1079+ case SIMPLE_RETURN:
1080 break;
1081
1082 case ASM_OPERANDS:
1083Index: gcc-4_5-branch/gcc/doc/invoke.texi
1084===================================================================
1085--- gcc-4_5-branch.orig/gcc/doc/invoke.texi
1086+++ gcc-4_5-branch/gcc/doc/invoke.texi
1087@@ -5751,6 +5751,7 @@ compilation time.
1088 -fipa-pure-const @gol
1089 -fipa-reference @gol
1090 -fmerge-constants
1091+-fshrink-wrap @gol
1092 -fsplit-wide-types @gol
1093 -ftree-builtin-call-dce @gol
1094 -ftree-ccp @gol
1095@@ -6506,6 +6507,12 @@ This option has no effect until one of @
1096 When pipelining loops during selective scheduling, also pipeline outer loops.
1097 This option has no effect until @option{-fsel-sched-pipelining} is turned on.
1098
1099+@item -fshrink-wrap
1100+@opindex fshrink-wrap
1101+Emit function prologues only before parts of the function that need it,
1102+rather than at the top of the function. This flag is enabled by default at
1103+@option{-O} and higher.
1104+
1105 @item -fcaller-saves
1106 @opindex fcaller-saves
1107 Enable values to be allocated in registers that will be clobbered by
1108Index: gcc-4_5-branch/gcc/doc/md.texi
1109===================================================================
1110--- gcc-4_5-branch.orig/gcc/doc/md.texi
1111+++ gcc-4_5-branch/gcc/doc/md.texi
1112@@ -4801,7 +4801,19 @@ RTL generation phase. In this case it i
1113 multiple instructions are usually needed to return from a function, but
1114 some class of functions only requires one instruction to implement a
1115 return. Normally, the applicable functions are those which do not need
1116-to save any registers or allocate stack space.
1117+to save any registers or allocate stack space, although some targets
1118+have instructions that can perform both the epilogue and function return
1119+in one instruction.
1120+
1121+@cindex @code{simple_return} instruction pattern
1122+@item @samp{simple_return}
1123+Subroutine return instruction. This instruction pattern name should be
1124+defined only if a single instruction can do all the work of returning
1125+from a function on a path where no epilogue is required. This pattern
1126+is very similar to the @code{return} instruction pattern, but it is emitted
1127+only by the shrink-wrapping optimization on paths where the function
1128+prologue has not been executed, and a function return should occur without
1129+any of the effects of the epilogue.
1130
1131 @findex reload_completed
1132 @findex leaf_function_p
1133Index: gcc-4_5-branch/gcc/doc/rtl.texi
1134===================================================================
1135--- gcc-4_5-branch.orig/gcc/doc/rtl.texi
1136+++ gcc-4_5-branch/gcc/doc/rtl.texi
1137@@ -2888,6 +2888,13 @@ placed in @code{pc} to return to the cal
1138 Note that an insn pattern of @code{(return)} is logically equivalent to
1139 @code{(set (pc) (return))}, but the latter form is never used.
1140
1141+@findex simple_return
1142+@item (simple_return)
1143+Like @code{(return)}, but truly represents only a function return, while
1144+@code{(return)} may represent an insn that also performs other functions
1145+of the function epilogue. Like @code{(return)}, this may also occur in
1146+conditional jumps.
1147+
1148 @findex call
1149 @item (call @var{function} @var{nargs})
1150 Represents a function call. @var{function} is a @code{mem} expression
1151@@ -3017,7 +3024,7 @@ Represents several side effects performe
1152 brackets stand for a vector; the operand of @code{parallel} is a
1153 vector of expressions. @var{x0}, @var{x1} and so on are individual
1154 side effect expressions---expressions of code @code{set}, @code{call},
1155-@code{return}, @code{clobber} or @code{use}.
1156+@code{return}, @code{simple_return}, @code{clobber} or @code{use}.
1157
1158 ``In parallel'' means that first all the values used in the individual
1159 side-effects are computed, and second all the actual side-effects are
1160@@ -3656,14 +3663,16 @@ and @code{call_insn} insns:
1161 @table @code
1162 @findex PATTERN
1163 @item PATTERN (@var{i})
1164-An expression for the side effect performed by this insn. This must be
1165-one of the following codes: @code{set}, @code{call}, @code{use},
1166-@code{clobber}, @code{return}, @code{asm_input}, @code{asm_output},
1167-@code{addr_vec}, @code{addr_diff_vec}, @code{trap_if}, @code{unspec},
1168-@code{unspec_volatile}, @code{parallel}, @code{cond_exec}, or @code{sequence}. If it is a @code{parallel},
1169-each element of the @code{parallel} must be one these codes, except that
1170-@code{parallel} expressions cannot be nested and @code{addr_vec} and
1171-@code{addr_diff_vec} are not permitted inside a @code{parallel} expression.
1172+An expression for the side effect performed by this insn. This must
1173+be one of the following codes: @code{set}, @code{call}, @code{use},
1174+@code{clobber}, @code{return}, @code{simple_return}, @code{asm_input},
1175+@code{asm_output}, @code{addr_vec}, @code{addr_diff_vec},
1176+@code{trap_if}, @code{unspec}, @code{unspec_volatile},
1177+@code{parallel}, @code{cond_exec}, or @code{sequence}. If it is a
1178+@code{parallel}, each element of the @code{parallel} must be one these
1179+codes, except that @code{parallel} expressions cannot be nested and
1180+@code{addr_vec} and @code{addr_diff_vec} are not permitted inside a
1181+@code{parallel} expression.
1182
1183 @findex INSN_CODE
1184 @item INSN_CODE (@var{i})
1185Index: gcc-4_5-branch/gcc/doc/tm.texi
1186===================================================================
1187--- gcc-4_5-branch.orig/gcc/doc/tm.texi
1188+++ gcc-4_5-branch/gcc/doc/tm.texi
1189@@ -3287,6 +3287,12 @@ Define this if the return address of a p
1190 from the frame pointer of the previous stack frame.
1191 @end defmac
1192
1193+@defmac RETURN_ADDR_REGNUM
1194+If defined, a C expression whose value is the register number of the return
1195+address for the current function. Targets that pass the return address on
1196+the stack should not define this macro.
1197+@end defmac
1198+
1199 @defmac INCOMING_RETURN_ADDR_RTX
1200 A C expression whose value is RTL representing the location of the
1201 incoming return address at the beginning of any function, before the
1202Index: gcc-4_5-branch/gcc/dwarf2out.c
1203===================================================================
1204--- gcc-4_5-branch.orig/gcc/dwarf2out.c
1205+++ gcc-4_5-branch/gcc/dwarf2out.c
1206@@ -1396,7 +1396,7 @@ compute_barrier_args_size_1 (rtx insn, H
1207 {
1208 rtx dest = JUMP_LABEL (insn);
1209
1210- if (dest)
1211+ if (dest && !ANY_RETURN_P (dest))
1212 {
1213 if (barrier_args_size [INSN_UID (dest)] < 0)
1214 {
1215Index: gcc-4_5-branch/gcc/emit-rtl.c
1216===================================================================
1217--- gcc-4_5-branch.orig/gcc/emit-rtl.c
1218+++ gcc-4_5-branch/gcc/emit-rtl.c
1219@@ -2432,6 +2432,8 @@ verify_rtx_sharing (rtx orig, rtx insn)
1220 case CODE_LABEL:
1221 case PC:
1222 case CC0:
1223+ case RETURN:
1224+ case SIMPLE_RETURN:
1225 case SCRATCH:
1226 return;
1227 /* SCRATCH must be shared because they represent distinct values. */
1228@@ -3323,14 +3325,17 @@ prev_label (rtx insn)
1229 return insn;
1230 }
1231
1232-/* Return the last label to mark the same position as LABEL. Return null
1233- if LABEL itself is null. */
1234+/* Return the last label to mark the same position as LABEL. Return LABEL
1235+ itself if it is null or any return rtx. */
1236
1237 rtx
1238 skip_consecutive_labels (rtx label)
1239 {
1240 rtx insn;
1241
1242+ if (label && ANY_RETURN_P (label))
1243+ return label;
1244+
1245 for (insn = label; insn != 0 && !INSN_P (insn); insn = NEXT_INSN (insn))
1246 if (LABEL_P (insn))
1247 label = insn;
1248@@ -5209,7 +5214,7 @@ classify_insn (rtx x)
1249 return CODE_LABEL;
1250 if (GET_CODE (x) == CALL)
1251 return CALL_INSN;
1252- if (GET_CODE (x) == RETURN)
1253+ if (GET_CODE (x) == RETURN || GET_CODE (x) == SIMPLE_RETURN)
1254 return JUMP_INSN;
1255 if (GET_CODE (x) == SET)
1256 {
1257@@ -5715,8 +5720,10 @@ init_emit_regs (void)
1258 init_reg_modes_target ();
1259
1260 /* Assign register numbers to the globally defined register rtx. */
1261- pc_rtx = gen_rtx_PC (VOIDmode);
1262- cc0_rtx = gen_rtx_CC0 (VOIDmode);
1263+ pc_rtx = gen_rtx_fmt_ (PC, VOIDmode);
1264+ ret_rtx = gen_rtx_fmt_ (RETURN, VOIDmode);
1265+ simple_return_rtx = gen_rtx_fmt_ (SIMPLE_RETURN, VOIDmode);
1266+ cc0_rtx = gen_rtx_fmt_ (CC0, VOIDmode);
1267 stack_pointer_rtx = gen_raw_REG (Pmode, STACK_POINTER_REGNUM);
1268 frame_pointer_rtx = gen_raw_REG (Pmode, FRAME_POINTER_REGNUM);
1269 hard_frame_pointer_rtx = gen_raw_REG (Pmode, HARD_FRAME_POINTER_REGNUM);
1270Index: gcc-4_5-branch/gcc/final.c
1271===================================================================
1272--- gcc-4_5-branch.orig/gcc/final.c
1273+++ gcc-4_5-branch/gcc/final.c
1274@@ -2428,7 +2428,7 @@ final_scan_insn (rtx insn, FILE *file, i
1275 delete_insn (insn);
1276 break;
1277 }
1278- else if (GET_CODE (SET_SRC (body)) == RETURN)
1279+ else if (ANY_RETURN_P (SET_SRC (body)))
1280 /* Replace (set (pc) (return)) with (return). */
1281 PATTERN (insn) = body = SET_SRC (body);
1282
1283Index: gcc-4_5-branch/gcc/function.c
1284===================================================================
1285--- gcc-4_5-branch.orig/gcc/function.c
1286+++ gcc-4_5-branch/gcc/function.c
1287@@ -147,9 +147,6 @@ extern tree debug_find_var_in_block_tree
1288 can always export `prologue_epilogue_contains'. */
1289 static void record_insns (rtx, rtx, htab_t *) ATTRIBUTE_UNUSED;
1290 static bool contains (const_rtx, htab_t);
1291-#ifdef HAVE_return
1292-static void emit_return_into_block (basic_block);
1293-#endif
1294 static void prepare_function_start (void);
1295 static void do_clobber_return_reg (rtx, void *);
1296 static void do_use_return_reg (rtx, void *);
1297@@ -4987,35 +4984,190 @@ prologue_epilogue_contains (const_rtx in
1298 return 0;
1299 }
1300
1301+#ifdef HAVE_simple_return
1302+/* This collects sets and clobbers of hard registers in a HARD_REG_SET,
1303+ which is pointed to by DATA. */
1304+static void
1305+record_hard_reg_sets (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data)
1306+{
1307+ HARD_REG_SET *pset = (HARD_REG_SET *)data;
1308+ if (REG_P (x) && REGNO (x) < FIRST_PSEUDO_REGISTER)
1309+ {
1310+ int nregs = hard_regno_nregs[REGNO (x)][GET_MODE (x)];
1311+ while (nregs-- > 0)
1312+ SET_HARD_REG_BIT (*pset, REGNO (x) + nregs);
1313+ }
1314+}
1315+
1316+/* A subroutine of requires_stack_frame_p, called via for_each_rtx.
1317+ If any change is made, set CHANGED
1318+ to true. */
1319+
1320+static int
1321+frame_required_for_rtx (rtx *loc, void *data ATTRIBUTE_UNUSED)
1322+{
1323+ rtx x = *loc;
1324+ if (x == stack_pointer_rtx || x == hard_frame_pointer_rtx
1325+ || x == arg_pointer_rtx || x == pic_offset_table_rtx
1326+#ifdef RETURN_ADDR_REGNUM
1327+ || (REG_P (x) && REGNO (x) == RETURN_ADDR_REGNUM)
1328+#endif
1329+ )
1330+ return 1;
1331+ return 0;
1332+}
1333+
1334+static bool
1335+requires_stack_frame_p (rtx insn)
1336+{
1337+ HARD_REG_SET hardregs;
1338+ unsigned regno;
1339+
1340+ if (!INSN_P (insn) || DEBUG_INSN_P (insn))
1341+ return false;
1342+ if (CALL_P (insn))
1343+ return !SIBLING_CALL_P (insn);
1344+ if (for_each_rtx (&PATTERN (insn), frame_required_for_rtx, NULL))
1345+ return true;
1346+ CLEAR_HARD_REG_SET (hardregs);
1347+ note_stores (PATTERN (insn), record_hard_reg_sets, &hardregs);
1348+ AND_COMPL_HARD_REG_SET (hardregs, call_used_reg_set);
1349+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
1350+ if (TEST_HARD_REG_BIT (hardregs, regno)
1351+ && df_regs_ever_live_p (regno))
1352+ return true;
1353+ return false;
1354+}
1355+#endif
1356+
1357 #ifdef HAVE_return
1358-/* Insert gen_return at the end of block BB. This also means updating
1359- block_for_insn appropriately. */
1360+
1361+static rtx
1362+gen_return_pattern (bool simple_p)
1363+{
1364+#ifdef HAVE_simple_return
1365+ return simple_p ? gen_simple_return () : gen_return ();
1366+#else
1367+ gcc_assert (!simple_p);
1368+ return gen_return ();
1369+#endif
1370+}
1371+
1372+/* Insert an appropriate return pattern at the end of block BB. This
1373+ also means updating block_for_insn appropriately. */
1374
1375 static void
1376-emit_return_into_block (basic_block bb)
1377+emit_return_into_block (bool simple_p, basic_block bb)
1378 {
1379- emit_jump_insn_after (gen_return (), BB_END (bb));
1380+ rtx jump;
1381+ jump = emit_jump_insn_after (gen_return_pattern (simple_p), BB_END (bb));
1382+ JUMP_LABEL (jump) = simple_p ? simple_return_rtx : ret_rtx;
1383 }
1384-#endif /* HAVE_return */
1385+#endif
1386
1387 /* Generate the prologue and epilogue RTL if the machine supports it. Thread
1388 this into place with notes indicating where the prologue ends and where
1389- the epilogue begins. Update the basic block information when possible. */
1390+ the epilogue begins. Update the basic block information when possible.
1391+
1392+ Notes on epilogue placement:
1393+ There are several kinds of edges to the exit block:
1394+ * a single fallthru edge from LAST_BB
1395+ * possibly, edges from blocks containing sibcalls
1396+ * possibly, fake edges from infinite loops
1397+
1398+ The epilogue is always emitted on the fallthru edge from the last basic
1399+ block in the function, LAST_BB, into the exit block.
1400+
1401+ If LAST_BB is empty except for a label, it is the target of every
1402+ other basic block in the function that ends in a return. If a
1403+ target has a return or simple_return pattern (possibly with
1404+ conditional variants), these basic blocks can be changed so that a
1405+ return insn is emitted into them, and their target is adjusted to
1406+ the real exit block.
1407+
1408+ Notes on shrink wrapping: We implement a fairly conservative
1409+ version of shrink-wrapping rather than the textbook one. We only
1410+ generate a single prologue and a single epilogue. This is
1411+ sufficient to catch a number of interesting cases involving early
1412+ exits.
1413+
1414+ First, we identify the blocks that require the prologue to occur before
1415+ them. These are the ones that modify a call-saved register, or reference
1416+ any of the stack or frame pointer registers. To simplify things, we then
1417+ mark everything reachable from these blocks as also requiring a prologue.
1418+ This takes care of loops automatically, and avoids the need to examine
1419+ whether MEMs reference the frame, since it is sufficient to check for
1420+ occurrences of the stack or frame pointer.
1421+
1422+ We then compute the set of blocks for which the need for a prologue
1423+ is anticipatable (borrowing terminology from the shrink-wrapping
1424+ description in Muchnick's book). These are the blocks which either
1425+ require a prologue themselves, or those that have only successors
1426+ where the prologue is anticipatable. The prologue needs to be
1427+ inserted on all edges from BB1->BB2 where BB2 is in ANTIC and BB1
1428+ is not. For the moment, we ensure that only one such edge exists.
1429+
1430+ The epilogue is placed as described above, but we make a
1431+ distinction between inserting return and simple_return patterns
1432+ when modifying other blocks that end in a return. Blocks that end
1433+ in a sibcall omit the sibcall_epilogue if the block is not in
1434+ ANTIC. */
1435
1436 static void
1437 thread_prologue_and_epilogue_insns (void)
1438 {
1439 int inserted = 0;
1440+ basic_block last_bb;
1441+ bool last_bb_active;
1442+#ifdef HAVE_simple_return
1443+ bool unconverted_simple_returns = false;
1444+ basic_block simple_return_block = NULL;
1445+#endif
1446+ rtx returnjump ATTRIBUTE_UNUSED;
1447+ rtx seq ATTRIBUTE_UNUSED, epilogue_end ATTRIBUTE_UNUSED;
1448+ rtx prologue_seq ATTRIBUTE_UNUSED, split_prologue_seq ATTRIBUTE_UNUSED;
1449+ edge entry_edge, orig_entry_edge, exit_fallthru_edge;
1450 edge e;
1451-#if defined (HAVE_sibcall_epilogue) || defined (HAVE_epilogue) || defined (HAVE_return) || defined (HAVE_prologue)
1452- rtx seq;
1453-#endif
1454-#if defined (HAVE_epilogue) || defined(HAVE_return)
1455- rtx epilogue_end = NULL_RTX;
1456-#endif
1457 edge_iterator ei;
1458+ bitmap_head bb_flags;
1459+
1460+ df_analyze ();
1461
1462 rtl_profile_for_bb (ENTRY_BLOCK_PTR);
1463+
1464+ epilogue_end = NULL_RTX;
1465+ returnjump = NULL_RTX;
1466+
1467+ /* Can't deal with multiple successors of the entry block at the
1468+ moment. Function should always have at least one entry
1469+ point. */
1470+ gcc_assert (single_succ_p (ENTRY_BLOCK_PTR));
1471+ entry_edge = single_succ_edge (ENTRY_BLOCK_PTR);
1472+ orig_entry_edge = entry_edge;
1473+
1474+ exit_fallthru_edge = find_fallthru_edge (EXIT_BLOCK_PTR->preds);
1475+ if (exit_fallthru_edge != NULL)
1476+ {
1477+ rtx label;
1478+
1479+ last_bb = exit_fallthru_edge->src;
1480+ /* Test whether there are active instructions in the last block. */
1481+ label = BB_END (last_bb);
1482+ while (label && !LABEL_P (label))
1483+ {
1484+ if (active_insn_p (label))
1485+ break;
1486+ label = PREV_INSN (label);
1487+ }
1488+
1489+ last_bb_active = BB_HEAD (last_bb) != label || !LABEL_P (label);
1490+ }
1491+ else
1492+ {
1493+ last_bb = NULL;
1494+ last_bb_active = false;
1495+ }
1496+
1497 #ifdef HAVE_prologue
1498 if (HAVE_prologue)
1499 {
1500@@ -5040,20 +5192,169 @@ thread_prologue_and_epilogue_insns (void
1501 emit_insn (gen_blockage ());
1502 #endif
1503
1504- seq = get_insns ();
1505+ prologue_seq = get_insns ();
1506 end_sequence ();
1507 set_insn_locators (seq, prologue_locator);
1508+ }
1509+#endif
1510
1511- /* Can't deal with multiple successors of the entry block
1512- at the moment. Function should always have at least one
1513- entry point. */
1514- gcc_assert (single_succ_p (ENTRY_BLOCK_PTR));
1515+ bitmap_initialize (&bb_flags, &bitmap_default_obstack);
1516
1517- insert_insn_on_edge (seq, single_succ_edge (ENTRY_BLOCK_PTR));
1518- inserted = 1;
1519+#ifdef HAVE_simple_return
1520+ /* Try to perform a kind of shrink-wrapping, making sure the
1521+ prologue/epilogue is emitted only around those parts of the
1522+ function that require it. */
1523+
1524+ if (flag_shrink_wrap && HAVE_simple_return && !flag_non_call_exceptions
1525+ && HAVE_prologue && !crtl->calls_eh_return)
1526+ {
1527+ HARD_REG_SET prologue_clobbered, live_on_edge;
1528+ rtx p_insn;
1529+ VEC(basic_block, heap) *vec;
1530+ basic_block bb;
1531+ bitmap_head bb_antic_flags;
1532+ bitmap_head bb_on_list;
1533+
1534+ bitmap_initialize (&bb_antic_flags, &bitmap_default_obstack);
1535+ bitmap_initialize (&bb_on_list, &bitmap_default_obstack);
1536+
1537+ vec = VEC_alloc (basic_block, heap, n_basic_blocks);
1538+
1539+ FOR_EACH_BB (bb)
1540+ {
1541+ rtx insn;
1542+ FOR_BB_INSNS (bb, insn)
1543+ {
1544+ if (requires_stack_frame_p (insn))
1545+ {
1546+ bitmap_set_bit (&bb_flags, bb->index);
1547+ VEC_quick_push (basic_block, vec, bb);
1548+ break;
1549+ }
1550+ }
1551+ }
1552+
1553+ /* For every basic block that needs a prologue, mark all blocks
1554+ reachable from it, so as to ensure they are also seen as
1555+ requiring a prologue. */
1556+ while (!VEC_empty (basic_block, vec))
1557+ {
1558+ basic_block tmp_bb = VEC_pop (basic_block, vec);
1559+ edge e;
1560+ edge_iterator ei;
1561+ FOR_EACH_EDGE (e, ei, tmp_bb->succs)
1562+ {
1563+ if (e->dest == EXIT_BLOCK_PTR
1564+ || bitmap_bit_p (&bb_flags, e->dest->index))
1565+ continue;
1566+ bitmap_set_bit (&bb_flags, e->dest->index);
1567+ VEC_quick_push (basic_block, vec, e->dest);
1568+ }
1569+ }
1570+ /* If the last basic block contains only a label, we'll be able
1571+ to convert jumps to it to (potentially conditional) return
1572+ insns later. This means we don't necessarily need a prologue
1573+ for paths reaching it. */
1574+ if (last_bb)
1575+ {
1576+ if (!last_bb_active)
1577+ bitmap_clear_bit (&bb_flags, last_bb->index);
1578+ else if (!bitmap_bit_p (&bb_flags, last_bb->index))
1579+ goto fail_shrinkwrap;
1580+ }
1581+
1582+ /* Now walk backwards from every block that is marked as needing
1583+ a prologue to compute the bb_antic_flags bitmap. */
1584+ bitmap_copy (&bb_antic_flags, &bb_flags);
1585+ FOR_EACH_BB (bb)
1586+ {
1587+ edge e;
1588+ edge_iterator ei;
1589+ if (!bitmap_bit_p (&bb_flags, bb->index))
1590+ continue;
1591+ FOR_EACH_EDGE (e, ei, bb->preds)
1592+ if (!bitmap_bit_p (&bb_antic_flags, e->src->index))
1593+ {
1594+ VEC_quick_push (basic_block, vec, e->src);
1595+ bitmap_set_bit (&bb_on_list, e->src->index);
1596+ }
1597+ }
1598+ while (!VEC_empty (basic_block, vec))
1599+ {
1600+ basic_block tmp_bb = VEC_pop (basic_block, vec);
1601+ edge e;
1602+ edge_iterator ei;
1603+ bool all_set = true;
1604+
1605+ bitmap_clear_bit (&bb_on_list, tmp_bb->index);
1606+ FOR_EACH_EDGE (e, ei, tmp_bb->succs)
1607+ {
1608+ if (!bitmap_bit_p (&bb_antic_flags, e->dest->index))
1609+ {
1610+ all_set = false;
1611+ break;
1612+ }
1613+ }
1614+ if (all_set)
1615+ {
1616+ bitmap_set_bit (&bb_antic_flags, tmp_bb->index);
1617+ FOR_EACH_EDGE (e, ei, tmp_bb->preds)
1618+ if (!bitmap_bit_p (&bb_antic_flags, e->src->index))
1619+ {
1620+ VEC_quick_push (basic_block, vec, e->src);
1621+ bitmap_set_bit (&bb_on_list, e->src->index);
1622+ }
1623+ }
1624+ }
1625+ /* Find exactly one edge that leads to a block in ANTIC from
1626+ a block that isn't. */
1627+ if (!bitmap_bit_p (&bb_antic_flags, entry_edge->dest->index))
1628+ FOR_EACH_BB (bb)
1629+ {
1630+ if (!bitmap_bit_p (&bb_antic_flags, bb->index))
1631+ continue;
1632+ FOR_EACH_EDGE (e, ei, bb->preds)
1633+ if (!bitmap_bit_p (&bb_antic_flags, e->src->index))
1634+ {
1635+ if (entry_edge != orig_entry_edge)
1636+ {
1637+ entry_edge = orig_entry_edge;
1638+ goto fail_shrinkwrap;
1639+ }
1640+ entry_edge = e;
1641+ }
1642+ }
1643+
1644+ /* Test whether the prologue is known to clobber any register
1645+ (other than FP or SP) which are live on the edge. */
1646+ CLEAR_HARD_REG_SET (prologue_clobbered);
1647+ for (p_insn = prologue_seq; p_insn; p_insn = NEXT_INSN (p_insn))
1648+ if (NONDEBUG_INSN_P (p_insn))
1649+ note_stores (PATTERN (p_insn), record_hard_reg_sets,
1650+ &prologue_clobbered);
1651+ CLEAR_HARD_REG_BIT (prologue_clobbered, STACK_POINTER_REGNUM);
1652+ if (frame_pointer_needed)
1653+ CLEAR_HARD_REG_BIT (prologue_clobbered, HARD_FRAME_POINTER_REGNUM);
1654+
1655+ CLEAR_HARD_REG_SET (live_on_edge);
1656+ reg_set_to_hard_reg_set (&live_on_edge,
1657+ df_get_live_in (entry_edge->dest));
1658+ if (hard_reg_set_intersect_p (live_on_edge, prologue_clobbered))
1659+ entry_edge = orig_entry_edge;
1660+
1661+ fail_shrinkwrap:
1662+ bitmap_clear (&bb_antic_flags);
1663+ bitmap_clear (&bb_on_list);
1664+ VEC_free (basic_block, heap, vec);
1665 }
1666 #endif
1667
1668+ if (prologue_seq != NULL_RTX)
1669+ {
1670+ insert_insn_on_edge (prologue_seq, entry_edge);
1671+ inserted = true;
1672+ }
1673+
1674 /* If the exit block has no non-fake predecessors, we don't need
1675 an epilogue. */
1676 FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
1677@@ -5063,100 +5364,130 @@ thread_prologue_and_epilogue_insns (void
1678 goto epilogue_done;
1679
1680 rtl_profile_for_bb (EXIT_BLOCK_PTR);
1681+
1682 #ifdef HAVE_return
1683- if (optimize && HAVE_return)
1684+ /* If we're allowed to generate a simple return instruction, then by
1685+ definition we don't need a full epilogue. If the last basic
1686+ block before the exit block does not contain active instructions,
1687+ examine its predecessors and try to emit (conditional) return
1688+ instructions. */
1689+ if (optimize && !last_bb_active
1690+ && (HAVE_return || entry_edge != orig_entry_edge))
1691 {
1692- /* If we're allowed to generate a simple return instruction,
1693- then by definition we don't need a full epilogue. Examine
1694- the block that falls through to EXIT. If it does not
1695- contain any code, examine its predecessors and try to
1696- emit (conditional) return instructions. */
1697-
1698- basic_block last;
1699+ edge_iterator ei2;
1700+ int i;
1701+ basic_block bb;
1702 rtx label;
1703+ VEC(basic_block,heap) *src_bbs;
1704
1705- FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
1706- if (e->flags & EDGE_FALLTHRU)
1707- break;
1708- if (e == NULL)
1709+ if (exit_fallthru_edge == NULL)
1710 goto epilogue_done;
1711- last = e->src;
1712+ label = BB_HEAD (last_bb);
1713
1714- /* Verify that there are no active instructions in the last block. */
1715- label = BB_END (last);
1716- while (label && !LABEL_P (label))
1717- {
1718- if (active_insn_p (label))
1719- break;
1720- label = PREV_INSN (label);
1721- }
1722+ src_bbs = VEC_alloc (basic_block, heap, EDGE_COUNT (last_bb->preds));
1723+ FOR_EACH_EDGE (e, ei2, last_bb->preds)
1724+ if (e->src != ENTRY_BLOCK_PTR)
1725+ VEC_quick_push (basic_block, src_bbs, e->src);
1726
1727- if (BB_HEAD (last) == label && LABEL_P (label))
1728+ FOR_EACH_VEC_ELT (basic_block, src_bbs, i, bb)
1729 {
1730- edge_iterator ei2;
1731+ bool simple_p;
1732+ rtx jump;
1733+ e = find_edge (bb, last_bb);
1734
1735- for (ei2 = ei_start (last->preds); (e = ei_safe_edge (ei2)); )
1736- {
1737- basic_block bb = e->src;
1738- rtx jump;
1739+ jump = BB_END (bb);
1740
1741- if (bb == ENTRY_BLOCK_PTR)
1742- {
1743- ei_next (&ei2);
1744- continue;
1745- }
1746+#ifdef HAVE_simple_return
1747+ simple_p = (entry_edge != orig_entry_edge
1748+ ? !bitmap_bit_p (&bb_flags, bb->index) : false);
1749+#else
1750+ simple_p = false;
1751+#endif
1752
1753- jump = BB_END (bb);
1754- if (!JUMP_P (jump) || JUMP_LABEL (jump) != label)
1755- {
1756- ei_next (&ei2);
1757- continue;
1758- }
1759+ if (!simple_p
1760+ && (!HAVE_return || !JUMP_P (jump)
1761+ || JUMP_LABEL (jump) != label))
1762+ continue;
1763
1764- /* If we have an unconditional jump, we can replace that
1765- with a simple return instruction. */
1766- if (simplejump_p (jump))
1767- {
1768- emit_return_into_block (bb);
1769- delete_insn (jump);
1770- }
1771+ /* If we have an unconditional jump, we can replace that
1772+ with a simple return instruction. */
1773+ if (!JUMP_P (jump))
1774+ {
1775+ emit_barrier_after (BB_END (bb));
1776+ emit_return_into_block (simple_p, bb);
1777+ }
1778+ else if (simplejump_p (jump))
1779+ {
1780+ emit_return_into_block (simple_p, bb);
1781+ delete_insn (jump);
1782+ }
1783+ else if (condjump_p (jump) && JUMP_LABEL (jump) != label)
1784+ {
1785+ basic_block new_bb;
1786+ edge new_e;
1787
1788- /* If we have a conditional jump, we can try to replace
1789- that with a conditional return instruction. */
1790- else if (condjump_p (jump))
1791- {
1792- if (! redirect_jump (jump, 0, 0))
1793- {
1794- ei_next (&ei2);
1795- continue;
1796- }
1797+ gcc_assert (simple_p);
1798+ new_bb = split_edge (e);
1799+ emit_barrier_after (BB_END (new_bb));
1800+ emit_return_into_block (simple_p, new_bb);
1801+#ifdef HAVE_simple_return
1802+ simple_return_block = new_bb;
1803+#endif
1804+ new_e = single_succ_edge (new_bb);
1805+ redirect_edge_succ (new_e, EXIT_BLOCK_PTR);
1806
1807- /* If this block has only one successor, it both jumps
1808- and falls through to the fallthru block, so we can't
1809- delete the edge. */
1810- if (single_succ_p (bb))
1811- {
1812- ei_next (&ei2);
1813- continue;
1814- }
1815- }
1816+ continue;
1817+ }
1818+ /* If we have a conditional jump branching to the last
1819+ block, we can try to replace that with a conditional
1820+ return instruction. */
1821+ else if (condjump_p (jump))
1822+ {
1823+ rtx dest;
1824+ if (simple_p)
1825+ dest = simple_return_rtx;
1826 else
1827+ dest = ret_rtx;
1828+ if (! redirect_jump (jump, dest, 0))
1829 {
1830- ei_next (&ei2);
1831+#ifdef HAVE_simple_return
1832+ if (simple_p)
1833+ unconverted_simple_returns = true;
1834+#endif
1835 continue;
1836 }
1837
1838- /* Fix up the CFG for the successful change we just made. */
1839- redirect_edge_succ (e, EXIT_BLOCK_PTR);
1840+ /* If this block has only one successor, it both jumps
1841+ and falls through to the fallthru block, so we can't
1842+ delete the edge. */
1843+ if (single_succ_p (bb))
1844+ continue;
1845+ }
1846+ else
1847+ {
1848+#ifdef HAVE_simple_return
1849+ if (simple_p)
1850+ unconverted_simple_returns = true;
1851+#endif
1852+ continue;
1853 }
1854
1855+ /* Fix up the CFG for the successful change we just made. */
1856+ redirect_edge_succ (e, EXIT_BLOCK_PTR);
1857+ }
1858+ VEC_free (basic_block, heap, src_bbs);
1859+
1860+ if (HAVE_return)
1861+ {
1862 /* Emit a return insn for the exit fallthru block. Whether
1863 this is still reachable will be determined later. */
1864
1865- emit_barrier_after (BB_END (last));
1866- emit_return_into_block (last);
1867- epilogue_end = BB_END (last);
1868- single_succ_edge (last)->flags &= ~EDGE_FALLTHRU;
1869+ emit_barrier_after (BB_END (last_bb));
1870+ emit_return_into_block (false, last_bb);
1871+ epilogue_end = BB_END (last_bb);
1872+ if (JUMP_P (epilogue_end))
1873+ JUMP_LABEL (epilogue_end) = ret_rtx;
1874+ single_succ_edge (last_bb)->flags &= ~EDGE_FALLTHRU;
1875 goto epilogue_done;
1876 }
1877 }
1878@@ -5193,15 +5524,10 @@ thread_prologue_and_epilogue_insns (void
1879 }
1880 #endif
1881
1882- /* Find the edge that falls through to EXIT. Other edges may exist
1883- due to RETURN instructions, but those don't need epilogues.
1884- There really shouldn't be a mixture -- either all should have
1885- been converted or none, however... */
1886+ /* If nothing falls through into the exit block, we don't need an
1887+ epilogue. */
1888
1889- FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR->preds)
1890- if (e->flags & EDGE_FALLTHRU)
1891- break;
1892- if (e == NULL)
1893+ if (exit_fallthru_edge == NULL)
1894 goto epilogue_done;
1895
1896 #ifdef HAVE_epilogue
1897@@ -5217,25 +5543,36 @@ thread_prologue_and_epilogue_insns (void
1898 set_insn_locators (seq, epilogue_locator);
1899
1900 seq = get_insns ();
1901+ returnjump = get_last_insn ();
1902 end_sequence ();
1903
1904- insert_insn_on_edge (seq, e);
1905+ insert_insn_on_edge (seq, exit_fallthru_edge);
1906 inserted = 1;
1907+ if (JUMP_P (returnjump))
1908+ {
1909+ rtx pat = PATTERN (returnjump);
1910+ if (GET_CODE (pat) == PARALLEL)
1911+ pat = XVECEXP (pat, 0, 0);
1912+ if (ANY_RETURN_P (pat))
1913+ JUMP_LABEL (returnjump) = pat;
1914+ else
1915+ JUMP_LABEL (returnjump) = ret_rtx;
1916+ }
1917 }
1918 else
1919 #endif
1920 {
1921 basic_block cur_bb;
1922
1923- if (! next_active_insn (BB_END (e->src)))
1924+ if (! next_active_insn (BB_END (exit_fallthru_edge->src)))
1925 goto epilogue_done;
1926 /* We have a fall-through edge to the exit block, the source is not
1927- at the end of the function, and there will be an assembler epilogue
1928- at the end of the function.
1929- We can't use force_nonfallthru here, because that would try to
1930- use return. Inserting a jump 'by hand' is extremely messy, so
1931+ at the end of the function, and there will be an assembler epilogue
1932+ at the end of the function.
1933+ We can't use force_nonfallthru here, because that would try to
1934+ use return. Inserting a jump 'by hand' is extremely messy, so
1935 we take advantage of cfg_layout_finalize using
1936- fixup_fallthru_exit_predecessor. */
1937+ fixup_fallthru_exit_predecessor. */
1938 cfg_layout_initialize (0);
1939 FOR_EACH_BB (cur_bb)
1940 if (cur_bb->index >= NUM_FIXED_BLOCKS
1941@@ -5244,6 +5581,7 @@ thread_prologue_and_epilogue_insns (void
1942 cfg_layout_finalize ();
1943 }
1944 epilogue_done:
1945+
1946 default_rtl_profile ();
1947
1948 if (inserted)
1949@@ -5260,33 +5598,93 @@ epilogue_done:
1950 }
1951 }
1952
1953+#ifdef HAVE_simple_return
1954+ /* If there were branches to an empty LAST_BB which we tried to
1955+ convert to conditional simple_returns, but couldn't for some
1956+ reason, create a block to hold a simple_return insn and redirect
1957+ those remaining edges. */
1958+ if (unconverted_simple_returns)
1959+ {
1960+ edge_iterator ei2;
1961+ basic_block exit_pred = EXIT_BLOCK_PTR->prev_bb;
1962+
1963+ gcc_assert (entry_edge != orig_entry_edge);
1964+
1965+#ifdef HAVE_epilogue
1966+ if (simple_return_block == NULL && returnjump != NULL_RTX
1967+ && JUMP_LABEL (returnjump) == simple_return_rtx)
1968+ {
1969+ edge e = split_block (exit_fallthru_edge->src,
1970+ PREV_INSN (returnjump));
1971+ simple_return_block = e->dest;
1972+ }
1973+#endif
1974+ if (simple_return_block == NULL)
1975+ {
1976+ basic_block bb;
1977+ rtx start;
1978+
1979+ bb = create_basic_block (NULL, NULL, exit_pred);
1980+ start = emit_jump_insn_after (gen_simple_return (),
1981+ BB_END (bb));
1982+ JUMP_LABEL (start) = simple_return_rtx;
1983+ emit_barrier_after (start);
1984+
1985+ simple_return_block = bb;
1986+ make_edge (bb, EXIT_BLOCK_PTR, 0);
1987+ }
1988+
1989+ restart_scan:
1990+ for (ei2 = ei_start (last_bb->preds); (e = ei_safe_edge (ei2)); )
1991+ {
1992+ basic_block bb = e->src;
1993+
1994+ if (bb != ENTRY_BLOCK_PTR
1995+ && !bitmap_bit_p (&bb_flags, bb->index))
1996+ {
1997+ redirect_edge_and_branch_force (e, simple_return_block);
1998+ goto restart_scan;
1999+ }
2000+ ei_next (&ei2);
2001+
2002+ }
2003+ }
2004+#endif
2005+
2006 #ifdef HAVE_sibcall_epilogue
2007 /* Emit sibling epilogues before any sibling call sites. */
2008 for (ei = ei_start (EXIT_BLOCK_PTR->preds); (e = ei_safe_edge (ei)); )
2009 {
2010 basic_block bb = e->src;
2011 rtx insn = BB_END (bb);
2012+ rtx ep_seq;
2013
2014 if (!CALL_P (insn)
2015- || ! SIBLING_CALL_P (insn))
2016+ || ! SIBLING_CALL_P (insn)
2017+ || (entry_edge != orig_entry_edge
2018+ && !bitmap_bit_p (&bb_flags, bb->index)))
2019 {
2020 ei_next (&ei);
2021 continue;
2022 }
2023
2024- start_sequence ();
2025- emit_note (NOTE_INSN_EPILOGUE_BEG);
2026- emit_insn (gen_sibcall_epilogue ());
2027- seq = get_insns ();
2028- end_sequence ();
2029+ ep_seq = gen_sibcall_epilogue ();
2030+ if (ep_seq)
2031+ {
2032+ start_sequence ();
2033+ emit_note (NOTE_INSN_EPILOGUE_BEG);
2034+ emit_insn (ep_seq);
2035+ seq = get_insns ();
2036+ end_sequence ();
2037
2038- /* Retain a map of the epilogue insns. Used in life analysis to
2039- avoid getting rid of sibcall epilogue insns. Do this before we
2040- actually emit the sequence. */
2041- record_insns (seq, NULL, &epilogue_insn_hash);
2042- set_insn_locators (seq, epilogue_locator);
2043+ /* Retain a map of the epilogue insns. Used in life analysis to
2044+ avoid getting rid of sibcall epilogue insns. Do this before we
2045+ actually emit the sequence. */
2046+ record_insns (seq, NULL, &epilogue_insn_hash);
2047+ set_insn_locators (seq, epilogue_locator);
2048
2049- emit_insn_before (seq, insn);
2050+ emit_insn_before (seq, insn);
2051+ }
2052 ei_next (&ei);
2053 }
2054 #endif
2055@@ -5311,6 +5709,8 @@ epilogue_done:
2056 }
2057 #endif
2058
2059+ bitmap_clear (&bb_flags);
2060+
2061 /* Threading the prologue and epilogue changes the artificial refs
2062 in the entry and exit blocks. */
2063 epilogue_completed = 1;
2064Index: gcc-4_5-branch/gcc/genemit.c
2065===================================================================
2066--- gcc-4_5-branch.orig/gcc/genemit.c
2067+++ gcc-4_5-branch/gcc/genemit.c
2068@@ -222,6 +222,12 @@ gen_exp (rtx x, enum rtx_code subroutine
2069 case PC:
2070 printf ("pc_rtx");
2071 return;
2072+ case RETURN:
2073+ printf ("ret_rtx");
2074+ return;
2075+ case SIMPLE_RETURN:
2076+ printf ("simple_return_rtx");
2077+ return;
2078 case CLOBBER:
2079 if (REG_P (XEXP (x, 0)))
2080 {
2081@@ -544,8 +550,8 @@ gen_expand (rtx expand)
2082 || (GET_CODE (next) == PARALLEL
2083 && ((GET_CODE (XVECEXP (next, 0, 0)) == SET
2084 && GET_CODE (SET_DEST (XVECEXP (next, 0, 0))) == PC)
2085- || GET_CODE (XVECEXP (next, 0, 0)) == RETURN))
2086- || GET_CODE (next) == RETURN)
2087+ || ANY_RETURN_P (XVECEXP (next, 0, 0))))
2088+ || ANY_RETURN_P (next))
2089 printf (" emit_jump_insn (");
2090 else if ((GET_CODE (next) == SET && GET_CODE (SET_SRC (next)) == CALL)
2091 || GET_CODE (next) == CALL
2092@@ -660,7 +666,7 @@ gen_split (rtx split)
2093 || (GET_CODE (next) == PARALLEL
2094 && GET_CODE (XVECEXP (next, 0, 0)) == SET
2095 && GET_CODE (SET_DEST (XVECEXP (next, 0, 0))) == PC)
2096- || GET_CODE (next) == RETURN)
2097+ || ANY_RETURN_P (next))
2098 printf (" emit_jump_insn (");
2099 else if ((GET_CODE (next) == SET && GET_CODE (SET_SRC (next)) == CALL)
2100 || GET_CODE (next) == CALL
2101Index: gcc-4_5-branch/gcc/gengenrtl.c
2102===================================================================
2103--- gcc-4_5-branch.orig/gcc/gengenrtl.c
2104+++ gcc-4_5-branch/gcc/gengenrtl.c
2105@@ -146,6 +146,10 @@ special_rtx (int idx)
2106 || strcmp (defs[idx].enumname, "REG") == 0
2107 || strcmp (defs[idx].enumname, "SUBREG") == 0
2108 || strcmp (defs[idx].enumname, "MEM") == 0
2109+ || strcmp (defs[idx].enumname, "PC") == 0
2110+ || strcmp (defs[idx].enumname, "CC0") == 0
2111+ || strcmp (defs[idx].enumname, "RETURN") == 0
2112+ || strcmp (defs[idx].enumname, "SIMPLE_RETURN") == 0
2113 || strcmp (defs[idx].enumname, "CONST_VECTOR") == 0);
2114 }
2115
2116Index: gcc-4_5-branch/gcc/haifa-sched.c
2117===================================================================
2118--- gcc-4_5-branch.orig/gcc/haifa-sched.c
2119+++ gcc-4_5-branch/gcc/haifa-sched.c
2120@@ -4231,7 +4231,7 @@ xrecalloc (void *p, size_t new_nmemb, si
2121 /* Helper function.
2122 Find fallthru edge from PRED. */
2123 edge
2124-find_fallthru_edge (basic_block pred)
2125+find_fallthru_edge_from (basic_block pred)
2126 {
2127 edge e;
2128 edge_iterator ei;
2129@@ -4298,7 +4298,7 @@ init_before_recovery (basic_block *befor
2130 edge e;
2131
2132 last = EXIT_BLOCK_PTR->prev_bb;
2133- e = find_fallthru_edge (last);
2134+ e = find_fallthru_edge_from (last);
2135
2136 if (e)
2137 {
2138@@ -5234,6 +5234,11 @@ check_cfg (rtx head, rtx tail)
2139 gcc_assert (/* Usual case. */
2140 (EDGE_COUNT (bb->succs) > 1
2141 && !BARRIER_P (NEXT_INSN (head)))
2142+ /* Special cases, see cfglayout.c:
2143+ fixup_reorder_chain. */
2144+ || (EDGE_COUNT (bb->succs) == 1
2145+ && (!onlyjump_p (head)
2146+ || returnjump_p (head)))
2147 /* Or jump to the next instruction. */
2148 || (EDGE_COUNT (bb->succs) == 1
2149 && (BB_HEAD (EDGE_I (bb->succs, 0)->dest)
2150Index: gcc-4_5-branch/gcc/ifcvt.c
2151===================================================================
2152--- gcc-4_5-branch.orig/gcc/ifcvt.c
2153+++ gcc-4_5-branch/gcc/ifcvt.c
2154@@ -105,7 +105,7 @@ static int find_if_case_1 (basic_block,
2155 static int find_if_case_2 (basic_block, edge, edge);
2156 static int find_memory (rtx *, void *);
2157 static int dead_or_predicable (basic_block, basic_block, basic_block,
2158- basic_block, int);
2159+ edge, int);
2160 static void noce_emit_move_insn (rtx, rtx);
2161 static rtx block_has_only_trap (basic_block);
2162
2163@@ -3791,6 +3791,7 @@ find_if_case_1 (basic_block test_bb, edg
2164 basic_block then_bb = then_edge->dest;
2165 basic_block else_bb = else_edge->dest;
2166 basic_block new_bb;
2167+ rtx else_target = NULL_RTX;
2168 int then_bb_index;
2169
2170 /* If we are partitioning hot/cold basic blocks, we don't want to
2171@@ -3840,9 +3841,16 @@ find_if_case_1 (basic_block test_bb, edg
2172 predictable_edge_p (then_edge)))))
2173 return FALSE;
2174
2175+ if (else_bb == EXIT_BLOCK_PTR)
2176+ {
2177+ rtx jump = BB_END (else_edge->src);
2178+ gcc_assert (JUMP_P (jump));
2179+ else_target = JUMP_LABEL (jump);
2180+ }
2181+
2182 /* Registers set are dead, or are predicable. */
2183 if (! dead_or_predicable (test_bb, then_bb, else_bb,
2184- single_succ (then_bb), 1))
2185+ single_succ_edge (then_bb), 1))
2186 return FALSE;
2187
2188 /* Conversion went ok, including moving the insns and fixing up the
2189@@ -3859,6 +3867,9 @@ find_if_case_1 (basic_block test_bb, edg
2190 redirect_edge_succ (FALLTHRU_EDGE (test_bb), else_bb);
2191 new_bb = 0;
2192 }
2193+ else if (else_bb == EXIT_BLOCK_PTR)
2194+ new_bb = force_nonfallthru_and_redirect (FALLTHRU_EDGE (test_bb),
2195+ else_bb, else_target);
2196 else
2197 new_bb = redirect_edge_and_branch_force (FALLTHRU_EDGE (test_bb),
2198 else_bb);
2199@@ -3957,7 +3968,7 @@ find_if_case_2 (basic_block test_bb, edg
2200 return FALSE;
2201
2202 /* Registers set are dead, or are predicable. */
2203- if (! dead_or_predicable (test_bb, else_bb, then_bb, else_succ->dest, 0))
2204+ if (! dead_or_predicable (test_bb, else_bb, then_bb, else_succ, 0))
2205 return FALSE;
2206
2207 /* Conversion went ok, including moving the insns and fixing up the
2208@@ -3995,12 +4006,34 @@ find_memory (rtx *px, void *data ATTRIBU
2209
2210 static int
2211 dead_or_predicable (basic_block test_bb, basic_block merge_bb,
2212- basic_block other_bb, basic_block new_dest, int reversep)
2213+ basic_block other_bb, edge dest_edge, int reversep)
2214 {
2215- rtx head, end, jump, earliest = NULL_RTX, old_dest, new_label = NULL_RTX;
2216+ basic_block new_dest = dest_edge->dest;
2217+ rtx head, end, jump, earliest = NULL_RTX, old_dest;
2218 bitmap merge_set = NULL;
2219 /* Number of pending changes. */
2220 int n_validated_changes = 0;
2221+ rtx new_dest_label;
2222+
2223+ jump = BB_END (dest_edge->src);
2224+ if (JUMP_P (jump))
2225+ {
2226+ new_dest_label = JUMP_LABEL (jump);
2227+ if (new_dest_label == NULL_RTX)
2228+ {
2229+ new_dest_label = PATTERN (jump);
2230+ gcc_assert (ANY_RETURN_P (new_dest_label));
2231+ }
2232+ }
2233+ else if (other_bb != new_dest)
2234+ {
2235+ if (new_dest == EXIT_BLOCK_PTR)
2236+ new_dest_label = ret_rtx;
2237+ else
2238+ new_dest_label = block_label (new_dest);
2239+ }
2240+ else
2241+ new_dest_label = NULL_RTX;
2242
2243 jump = BB_END (test_bb);
2244
2245@@ -4220,10 +4253,9 @@ dead_or_predicable (basic_block test_bb,
2246 old_dest = JUMP_LABEL (jump);
2247 if (other_bb != new_dest)
2248 {
2249- new_label = block_label (new_dest);
2250 if (reversep
2251- ? ! invert_jump_1 (jump, new_label)
2252- : ! redirect_jump_1 (jump, new_label))
2253+ ? ! invert_jump_1 (jump, new_dest_label)
2254+ : ! redirect_jump_1 (jump, new_dest_label))
2255 goto cancel;
2256 }
2257
2258@@ -4234,7 +4266,7 @@ dead_or_predicable (basic_block test_bb,
2259
2260 if (other_bb != new_dest)
2261 {
2262- redirect_jump_2 (jump, old_dest, new_label, 0, reversep);
2263+ redirect_jump_2 (jump, old_dest, new_dest_label, 0, reversep);
2264
2265 redirect_edge_succ (BRANCH_EDGE (test_bb), new_dest);
2266 if (reversep)
2267Index: gcc-4_5-branch/gcc/jump.c
2268===================================================================
2269--- gcc-4_5-branch.orig/gcc/jump.c
2270+++ gcc-4_5-branch/gcc/jump.c
2271@@ -29,7 +29,8 @@ along with GCC; see the file COPYING3.
2272 JUMP_LABEL internal field. With this we can detect labels that
2273 become unused because of the deletion of all the jumps that
2274 formerly used them. The JUMP_LABEL info is sometimes looked
2275- at by later passes.
2276+ at by later passes. For return insns, it contains either a
2277+ RETURN or a SIMPLE_RETURN rtx.
2278
2279 The subroutines redirect_jump and invert_jump are used
2280 from other passes as well. */
2281@@ -742,10 +743,10 @@ condjump_p (const_rtx insn)
2282 return (GET_CODE (x) == IF_THEN_ELSE
2283 && ((GET_CODE (XEXP (x, 2)) == PC
2284 && (GET_CODE (XEXP (x, 1)) == LABEL_REF
2285- || GET_CODE (XEXP (x, 1)) == RETURN))
2286+ || ANY_RETURN_P (XEXP (x, 1))))
2287 || (GET_CODE (XEXP (x, 1)) == PC
2288 && (GET_CODE (XEXP (x, 2)) == LABEL_REF
2289- || GET_CODE (XEXP (x, 2)) == RETURN))));
2290+ || ANY_RETURN_P (XEXP (x, 2))))));
2291 }
2292
2293 /* Return nonzero if INSN is a (possibly) conditional jump inside a
2294@@ -774,11 +775,11 @@ condjump_in_parallel_p (const_rtx insn)
2295 return 0;
2296 if (XEXP (SET_SRC (x), 2) == pc_rtx
2297 && (GET_CODE (XEXP (SET_SRC (x), 1)) == LABEL_REF
2298- || GET_CODE (XEXP (SET_SRC (x), 1)) == RETURN))
2299+ || ANY_RETURN_P (XEXP (SET_SRC (x), 1)) == RETURN))
2300 return 1;
2301 if (XEXP (SET_SRC (x), 1) == pc_rtx
2302 && (GET_CODE (XEXP (SET_SRC (x), 2)) == LABEL_REF
2303- || GET_CODE (XEXP (SET_SRC (x), 2)) == RETURN))
2304+ || ANY_RETURN_P (XEXP (SET_SRC (x), 2))))
2305 return 1;
2306 return 0;
2307 }
2308@@ -840,8 +841,9 @@ any_condjump_p (const_rtx insn)
2309 a = GET_CODE (XEXP (SET_SRC (x), 1));
2310 b = GET_CODE (XEXP (SET_SRC (x), 2));
2311
2312- return ((b == PC && (a == LABEL_REF || a == RETURN))
2313- || (a == PC && (b == LABEL_REF || b == RETURN)));
2314+ return ((b == PC && (a == LABEL_REF || a == RETURN || a == SIMPLE_RETURN))
2315+ || (a == PC
2316+ && (b == LABEL_REF || b == RETURN || b == SIMPLE_RETURN)));
2317 }
2318
2319 /* Return the label of a conditional jump. */
2320@@ -878,6 +880,7 @@ returnjump_p_1 (rtx *loc, void *data ATT
2321 switch (GET_CODE (x))
2322 {
2323 case RETURN:
2324+ case SIMPLE_RETURN:
2325 case EH_RETURN:
2326 return true;
2327
2328@@ -1200,7 +1203,7 @@ delete_related_insns (rtx insn)
2329 /* If deleting a jump, decrement the count of the label,
2330 and delete the label if it is now unused. */
2331
2332- if (JUMP_P (insn) && JUMP_LABEL (insn))
2333+ if (JUMP_P (insn) && JUMP_LABEL (insn) && !ANY_RETURN_P (JUMP_LABEL (insn)))
2334 {
2335 rtx lab = JUMP_LABEL (insn), lab_next;
2336
2337@@ -1331,6 +1334,18 @@ delete_for_peephole (rtx from, rtx to)
2338 is also an unconditional jump in that case. */
2339 }
2340
2341+/* A helper function for redirect_exp_1; examines its input X and returns
2342+ either a LABEL_REF around a label, or a RETURN if X was NULL. */
2343+static rtx
2344+redirect_target (rtx x)
2345+{
2346+ if (x == NULL_RTX)
2347+ return ret_rtx;
2348+ if (!ANY_RETURN_P (x))
2349+ return gen_rtx_LABEL_REF (Pmode, x);
2350+ return x;
2351+}
2352+
2353 /* Throughout LOC, redirect OLABEL to NLABEL. Treat null OLABEL or
2354 NLABEL as a return. Accrue modifications into the change group. */
2355
2356@@ -1342,37 +1357,19 @@ redirect_exp_1 (rtx *loc, rtx olabel, rt
2357 int i;
2358 const char *fmt;
2359
2360- if (code == LABEL_REF)
2361- {
2362- if (XEXP (x, 0) == olabel)
2363- {
2364- rtx n;
2365- if (nlabel)
2366- n = gen_rtx_LABEL_REF (Pmode, nlabel);
2367- else
2368- n = gen_rtx_RETURN (VOIDmode);
2369-
2370- validate_change (insn, loc, n, 1);
2371- return;
2372- }
2373- }
2374- else if (code == RETURN && olabel == 0)
2375+ if ((code == LABEL_REF && XEXP (x, 0) == olabel)
2376+ || x == olabel)
2377 {
2378- if (nlabel)
2379- x = gen_rtx_LABEL_REF (Pmode, nlabel);
2380- else
2381- x = gen_rtx_RETURN (VOIDmode);
2382- if (loc == &PATTERN (insn))
2383- x = gen_rtx_SET (VOIDmode, pc_rtx, x);
2384- validate_change (insn, loc, x, 1);
2385+ validate_change (insn, loc, redirect_target (nlabel), 1);
2386 return;
2387 }
2388
2389- if (code == SET && nlabel == 0 && SET_DEST (x) == pc_rtx
2390+ if (code == SET && SET_DEST (x) == pc_rtx
2391+ && ANY_RETURN_P (nlabel)
2392 && GET_CODE (SET_SRC (x)) == LABEL_REF
2393 && XEXP (SET_SRC (x), 0) == olabel)
2394 {
2395- validate_change (insn, loc, gen_rtx_RETURN (VOIDmode), 1);
2396+ validate_change (insn, loc, nlabel, 1);
2397 return;
2398 }
2399
2400@@ -1409,6 +1406,7 @@ redirect_jump_1 (rtx jump, rtx nlabel)
2401 int ochanges = num_validated_changes ();
2402 rtx *loc, asmop;
2403
2404+ gcc_assert (nlabel);
2405 asmop = extract_asm_operands (PATTERN (jump));
2406 if (asmop)
2407 {
2408@@ -1430,17 +1428,20 @@ redirect_jump_1 (rtx jump, rtx nlabel)
2409 jump target label is unused as a result, it and the code following
2410 it may be deleted.
2411
2412- If NLABEL is zero, we are to turn the jump into a (possibly conditional)
2413- RETURN insn.
2414+ Normally, NLABEL will be a label, but it may also be a RETURN or
2415+ SIMPLE_RETURN rtx; in that case we are to turn the jump into a
2416+ (possibly conditional) return insn.
2417
2418 The return value will be 1 if the change was made, 0 if it wasn't
2419- (this can only occur for NLABEL == 0). */
2420+ (this can only occur when trying to produce return insns). */
2421
2422 int
2423 redirect_jump (rtx jump, rtx nlabel, int delete_unused)
2424 {
2425 rtx olabel = JUMP_LABEL (jump);
2426
2427+ gcc_assert (nlabel != NULL_RTX);
2428+
2429 if (nlabel == olabel)
2430 return 1;
2431
2432@@ -1452,7 +1453,7 @@ redirect_jump (rtx jump, rtx nlabel, int
2433 }
2434
2435 /* Fix up JUMP_LABEL and label ref counts after OLABEL has been replaced with
2436- NLABEL in JUMP.
2437+ NEW_DEST in JUMP.
2438 If DELETE_UNUSED is positive, delete related insn to OLABEL if its ref
2439 count has dropped to zero. */
2440 void
2441@@ -1468,13 +1469,14 @@ redirect_jump_2 (rtx jump, rtx olabel, r
2442 about this. */
2443 gcc_assert (delete_unused >= 0);
2444 JUMP_LABEL (jump) = nlabel;
2445- if (nlabel)
2446+ if (nlabel && !ANY_RETURN_P (nlabel))
2447 ++LABEL_NUSES (nlabel);
2448
2449 /* Update labels in any REG_EQUAL note. */
2450 if ((note = find_reg_note (jump, REG_EQUAL, NULL_RTX)) != NULL_RTX)
2451 {
2452- if (!nlabel || (invert && !invert_exp_1 (XEXP (note, 0), jump)))
2453+ if (ANY_RETURN_P (nlabel)
2454+ || (invert && !invert_exp_1 (XEXP (note, 0), jump)))
2455 remove_note (jump, note);
2456 else
2457 {
2458@@ -1483,7 +1485,8 @@ redirect_jump_2 (rtx jump, rtx olabel, r
2459 }
2460 }
2461
2462- if (olabel && --LABEL_NUSES (olabel) == 0 && delete_unused > 0
2463+ if (olabel && !ANY_RETURN_P (olabel)
2464+ && --LABEL_NUSES (olabel) == 0 && delete_unused > 0
2465 /* Undefined labels will remain outside the insn stream. */
2466 && INSN_UID (olabel))
2467 delete_related_insns (olabel);
2468Index: gcc-4_5-branch/gcc/opts.c
2469===================================================================
2470--- gcc-4_5-branch.orig/gcc/opts.c
2471+++ gcc-4_5-branch/gcc/opts.c
2472@@ -909,6 +909,7 @@ decode_options (unsigned int argc, const
2473 flag_ipa_cp = opt2;
2474 flag_ipa_sra = opt2;
2475 flag_ee = opt2;
2476+ flag_shrink_wrap = opt2;
2477
2478 /* Track fields in field-sensitive alias analysis. */
2479 set_param_value ("max-fields-for-field-sensitive",
2480Index: gcc-4_5-branch/gcc/print-rtl.c
2481===================================================================
2482--- gcc-4_5-branch.orig/gcc/print-rtl.c
2483+++ gcc-4_5-branch/gcc/print-rtl.c
2484@@ -308,9 +308,16 @@ print_rtx (const_rtx in_rtx)
2485 }
2486 }
2487 else if (i == 8 && JUMP_P (in_rtx) && JUMP_LABEL (in_rtx) != NULL)
2488- /* Output the JUMP_LABEL reference. */
2489- fprintf (outfile, "\n%s%*s -> %d", print_rtx_head, indent * 2, "",
2490- INSN_UID (JUMP_LABEL (in_rtx)));
2491+ {
2492+ /* Output the JUMP_LABEL reference. */
2493+ fprintf (outfile, "\n%s%*s -> ", print_rtx_head, indent * 2, "");
2494+ if (GET_CODE (JUMP_LABEL (in_rtx)) == RETURN)
2495+ fprintf (outfile, "return");
2496+ else if (GET_CODE (JUMP_LABEL (in_rtx)) == SIMPLE_RETURN)
2497+ fprintf (outfile, "simple_return");
2498+ else
2499+ fprintf (outfile, "%d", INSN_UID (JUMP_LABEL (in_rtx)));
2500+ }
2501 else if (i == 0 && GET_CODE (in_rtx) == VALUE)
2502 {
2503 #ifndef GENERATOR_FILE
2504Index: gcc-4_5-branch/gcc/reorg.c
2505===================================================================
2506--- gcc-4_5-branch.orig/gcc/reorg.c
2507+++ gcc-4_5-branch/gcc/reorg.c
2508@@ -161,8 +161,11 @@ static rtx *unfilled_firstobj;
2509 #define unfilled_slots_next \
2510 ((rtx *) obstack_next_free (&unfilled_slots_obstack))
2511
2512-/* Points to the label before the end of the function. */
2513-static rtx end_of_function_label;
2514+/* Points to the label before the end of the function, or before a
2515+ return insn. */
2516+static rtx function_return_label;
2517+/* Likewise for a simple_return. */
2518+static rtx function_simple_return_label;
2519
2520 /* Mapping between INSN_UID's and position in the code since INSN_UID's do
2521 not always monotonically increase. */
2522@@ -175,7 +178,7 @@ static int stop_search_p (rtx, int);
2523 static int resource_conflicts_p (struct resources *, struct resources *);
2524 static int insn_references_resource_p (rtx, struct resources *, bool);
2525 static int insn_sets_resource_p (rtx, struct resources *, bool);
2526-static rtx find_end_label (void);
2527+static rtx find_end_label (rtx);
2528 static rtx emit_delay_sequence (rtx, rtx, int);
2529 static rtx add_to_delay_list (rtx, rtx);
2530 static rtx delete_from_delay_slot (rtx);
2531@@ -220,6 +223,15 @@ static void relax_delay_slots (rtx);
2532 static void make_return_insns (rtx);
2533 #endif
2534
2535+/* Return true iff INSN is a simplejump, or any kind of return insn. */
2536+
2537+static bool
2538+simplejump_or_return_p (rtx insn)
2539+{
2540+ return (JUMP_P (insn)
2541+ && (simplejump_p (insn) || ANY_RETURN_P (PATTERN (insn))));
2542+}
2543+
2544 /* Return TRUE if this insn should stop the search for insn to fill delay
2545 slots. LABELS_P indicates that labels should terminate the search.
2546 In all cases, jumps terminate the search. */
2547@@ -335,23 +347,29 @@ insn_sets_resource_p (rtx insn, struct r
2548
2549 ??? There may be a problem with the current implementation. Suppose
2550 we start with a bare RETURN insn and call find_end_label. It may set
2551- end_of_function_label just before the RETURN. Suppose the machinery
2552+ function_return_label just before the RETURN. Suppose the machinery
2553 is able to fill the delay slot of the RETURN insn afterwards. Then
2554- end_of_function_label is no longer valid according to the property
2555+ function_return_label is no longer valid according to the property
2556 described above and find_end_label will still return it unmodified.
2557 Note that this is probably mitigated by the following observation:
2558- once end_of_function_label is made, it is very likely the target of
2559+ once function_return_label is made, it is very likely the target of
2560 a jump, so filling the delay slot of the RETURN will be much more
2561 difficult. */
2562
2563 static rtx
2564-find_end_label (void)
2565+find_end_label (rtx kind)
2566 {
2567 rtx insn;
2568+ rtx *plabel;
2569+
2570+ if (kind == ret_rtx)
2571+ plabel = &function_return_label;
2572+ else
2573+ plabel = &function_simple_return_label;
2574
2575 /* If we found one previously, return it. */
2576- if (end_of_function_label)
2577- return end_of_function_label;
2578+ if (*plabel)
2579+ return *plabel;
2580
2581 /* Otherwise, see if there is a label at the end of the function. If there
2582 is, it must be that RETURN insns aren't needed, so that is our return
2583@@ -366,44 +384,44 @@ find_end_label (void)
2584
2585 /* When a target threads its epilogue we might already have a
2586 suitable return insn. If so put a label before it for the
2587- end_of_function_label. */
2588+ function_return_label. */
2589 if (BARRIER_P (insn)
2590 && JUMP_P (PREV_INSN (insn))
2591- && GET_CODE (PATTERN (PREV_INSN (insn))) == RETURN)
2592+ && PATTERN (PREV_INSN (insn)) == kind)
2593 {
2594 rtx temp = PREV_INSN (PREV_INSN (insn));
2595- end_of_function_label = gen_label_rtx ();
2596- LABEL_NUSES (end_of_function_label) = 0;
2597+ rtx label = gen_label_rtx ();
2598+ LABEL_NUSES (label) = 0;
2599
2600 /* Put the label before an USE insns that may precede the RETURN insn. */
2601 while (GET_CODE (temp) == USE)
2602 temp = PREV_INSN (temp);
2603
2604- emit_label_after (end_of_function_label, temp);
2605+ emit_label_after (label, temp);
2606+ *plabel = label;
2607 }
2608
2609 else if (LABEL_P (insn))
2610- end_of_function_label = insn;
2611+ *plabel = insn;
2612 else
2613 {
2614- end_of_function_label = gen_label_rtx ();
2615- LABEL_NUSES (end_of_function_label) = 0;
2616+ rtx label = gen_label_rtx ();
2617+ LABEL_NUSES (label) = 0;
2618 /* If the basic block reorder pass moves the return insn to
2619 some other place try to locate it again and put our
2620- end_of_function_label there. */
2621- while (insn && ! (JUMP_P (insn)
2622- && (GET_CODE (PATTERN (insn)) == RETURN)))
2623+ function_return_label there. */
2624+ while (insn && ! (JUMP_P (insn) && (PATTERN (insn) == kind)))
2625 insn = PREV_INSN (insn);
2626 if (insn)
2627 {
2628 insn = PREV_INSN (insn);
2629
2630- /* Put the label before an USE insns that may proceed the
2631+ /* Put the label before an USE insns that may precede the
2632 RETURN insn. */
2633 while (GET_CODE (insn) == USE)
2634 insn = PREV_INSN (insn);
2635
2636- emit_label_after (end_of_function_label, insn);
2637+ emit_label_after (label, insn);
2638 }
2639 else
2640 {
2641@@ -413,19 +431,16 @@ find_end_label (void)
2642 && ! HAVE_return
2643 #endif
2644 )
2645- {
2646- /* The RETURN insn has its delay slot filled so we cannot
2647- emit the label just before it. Since we already have
2648- an epilogue and cannot emit a new RETURN, we cannot
2649- emit the label at all. */
2650- end_of_function_label = NULL_RTX;
2651- return end_of_function_label;
2652- }
2653+ /* The RETURN insn has its delay slot filled so we cannot
2654+ emit the label just before it. Since we already have
2655+ an epilogue and cannot emit a new RETURN, we cannot
2656+ emit the label at all. */
2657+ return NULL_RTX;
2658 #endif /* HAVE_epilogue */
2659
2660 /* Otherwise, make a new label and emit a RETURN and BARRIER,
2661 if needed. */
2662- emit_label (end_of_function_label);
2663+ emit_label (label);
2664 #ifdef HAVE_return
2665 /* We don't bother trying to create a return insn if the
2666 epilogue has filled delay-slots; we would have to try and
2667@@ -437,19 +452,21 @@ find_end_label (void)
2668 /* The return we make may have delay slots too. */
2669 rtx insn = gen_return ();
2670 insn = emit_jump_insn (insn);
2671+ JUMP_LABEL (insn) = ret_rtx;
2672 emit_barrier ();
2673 if (num_delay_slots (insn) > 0)
2674 obstack_ptr_grow (&unfilled_slots_obstack, insn);
2675 }
2676 #endif
2677 }
2678+ *plabel = label;
2679 }
2680
2681 /* Show one additional use for this label so it won't go away until
2682 we are done. */
2683- ++LABEL_NUSES (end_of_function_label);
2684+ ++LABEL_NUSES (*plabel);
2685
2686- return end_of_function_label;
2687+ return *plabel;
2688 }
2689
2690 /* Put INSN and LIST together in a SEQUENCE rtx of LENGTH, and replace
2691@@ -797,10 +814,8 @@ optimize_skip (rtx insn)
2692 if ((next_trial == next_active_insn (JUMP_LABEL (insn))
2693 && ! (next_trial == 0 && crtl->epilogue_delay_list != 0))
2694 || (next_trial != 0
2695- && JUMP_P (next_trial)
2696- && JUMP_LABEL (insn) == JUMP_LABEL (next_trial)
2697- && (simplejump_p (next_trial)
2698- || GET_CODE (PATTERN (next_trial)) == RETURN)))
2699+ && simplejump_or_return_p (next_trial)
2700+ && JUMP_LABEL (insn) == JUMP_LABEL (next_trial)))
2701 {
2702 if (eligible_for_annul_false (insn, 0, trial, flags))
2703 {
2704@@ -819,13 +834,11 @@ optimize_skip (rtx insn)
2705 branch, thread our jump to the target of that branch. Don't
2706 change this into a RETURN here, because it may not accept what
2707 we have in the delay slot. We'll fix this up later. */
2708- if (next_trial && JUMP_P (next_trial)
2709- && (simplejump_p (next_trial)
2710- || GET_CODE (PATTERN (next_trial)) == RETURN))
2711+ if (next_trial && simplejump_or_return_p (next_trial))
2712 {
2713 rtx target_label = JUMP_LABEL (next_trial);
2714- if (target_label == 0)
2715- target_label = find_end_label ();
2716+ if (ANY_RETURN_P (target_label))
2717+ target_label = find_end_label (target_label);
2718
2719 if (target_label)
2720 {
2721@@ -866,7 +879,7 @@ get_jump_flags (rtx insn, rtx label)
2722 if (JUMP_P (insn)
2723 && (condjump_p (insn) || condjump_in_parallel_p (insn))
2724 && INSN_UID (insn) <= max_uid
2725- && label != 0
2726+ && label != 0 && !ANY_RETURN_P (label)
2727 && INSN_UID (label) <= max_uid)
2728 flags
2729 = (uid_to_ruid[INSN_UID (label)] > uid_to_ruid[INSN_UID (insn)])
2730@@ -1038,7 +1051,7 @@ get_branch_condition (rtx insn, rtx targ
2731 pat = XVECEXP (pat, 0, 0);
2732
2733 if (GET_CODE (pat) == RETURN)
2734- return target == 0 ? const_true_rtx : 0;
2735+ return ANY_RETURN_P (target) ? const_true_rtx : 0;
2736
2737 else if (GET_CODE (pat) != SET || SET_DEST (pat) != pc_rtx)
2738 return 0;
2739@@ -1318,7 +1331,11 @@ steal_delay_list_from_target (rtx insn,
2740 }
2741
2742 /* Show the place to which we will be branching. */
2743- *pnew_thread = next_active_insn (JUMP_LABEL (XVECEXP (seq, 0, 0)));
2744+ temp = JUMP_LABEL (XVECEXP (seq, 0, 0));
2745+ if (ANY_RETURN_P (temp))
2746+ *pnew_thread = temp;
2747+ else
2748+ *pnew_thread = next_active_insn (temp);
2749
2750 /* Add any new insns to the delay list and update the count of the
2751 number of slots filled. */
2752@@ -1358,8 +1375,7 @@ steal_delay_list_from_fallthrough (rtx i
2753 /* We can't do anything if SEQ's delay insn isn't an
2754 unconditional branch. */
2755
2756- if (! simplejump_p (XVECEXP (seq, 0, 0))
2757- && GET_CODE (PATTERN (XVECEXP (seq, 0, 0))) != RETURN)
2758+ if (! simplejump_or_return_p (XVECEXP (seq, 0, 0)))
2759 return delay_list;
2760
2761 for (i = 1; i < XVECLEN (seq, 0); i++)
2762@@ -1827,7 +1843,7 @@ own_thread_p (rtx thread, rtx label, int
2763 rtx insn;
2764
2765 /* We don't own the function end. */
2766- if (thread == 0)
2767+ if (ANY_RETURN_P (thread))
2768 return 0;
2769
2770 /* Get the first active insn, or THREAD, if it is an active insn. */
2771@@ -2245,7 +2261,8 @@ fill_simple_delay_slots (int non_jumps_p
2772 && (!JUMP_P (insn)
2773 || ((condjump_p (insn) || condjump_in_parallel_p (insn))
2774 && ! simplejump_p (insn)
2775- && JUMP_LABEL (insn) != 0)))
2776+ && JUMP_LABEL (insn) != 0
2777+ && !ANY_RETURN_P (JUMP_LABEL (insn)))))
2778 {
2779 /* Invariant: If insn is a JUMP_INSN, the insn's jump
2780 label. Otherwise, zero. */
2781@@ -2270,7 +2287,7 @@ fill_simple_delay_slots (int non_jumps_p
2782 target = JUMP_LABEL (insn);
2783 }
2784
2785- if (target == 0)
2786+ if (target == 0 || ANY_RETURN_P (target))
2787 for (trial = next_nonnote_insn (insn); trial; trial = next_trial)
2788 {
2789 next_trial = next_nonnote_insn (trial);
2790@@ -2349,6 +2366,7 @@ fill_simple_delay_slots (int non_jumps_p
2791 && JUMP_P (trial)
2792 && simplejump_p (trial)
2793 && (target == 0 || JUMP_LABEL (trial) == target)
2794+ && !ANY_RETURN_P (JUMP_LABEL (trial))
2795 && (next_trial = next_active_insn (JUMP_LABEL (trial))) != 0
2796 && ! (NONJUMP_INSN_P (next_trial)
2797 && GET_CODE (PATTERN (next_trial)) == SEQUENCE)
2798@@ -2371,7 +2389,7 @@ fill_simple_delay_slots (int non_jumps_p
2799 if (new_label != 0)
2800 new_label = get_label_before (new_label);
2801 else
2802- new_label = find_end_label ();
2803+ new_label = find_end_label (simple_return_rtx);
2804
2805 if (new_label)
2806 {
2807@@ -2503,7 +2521,8 @@ fill_simple_delay_slots (int non_jumps_p
2808
2809 /* Follow any unconditional jump at LABEL;
2810 return the ultimate label reached by any such chain of jumps.
2811- Return null if the chain ultimately leads to a return instruction.
2812+ Return a suitable return rtx if the chain ultimately leads to a
2813+ return instruction.
2814 If LABEL is not followed by a jump, return LABEL.
2815 If the chain loops or we can't find end, return LABEL,
2816 since that tells caller to avoid changing the insn. */
2817@@ -2518,6 +2537,7 @@ follow_jumps (rtx label)
2818
2819 for (depth = 0;
2820 (depth < 10
2821+ && !ANY_RETURN_P (value)
2822 && (insn = next_active_insn (value)) != 0
2823 && JUMP_P (insn)
2824 && ((JUMP_LABEL (insn) != 0 && any_uncondjump_p (insn)
2825@@ -2527,18 +2547,22 @@ follow_jumps (rtx label)
2826 && BARRIER_P (next));
2827 depth++)
2828 {
2829- rtx tem;
2830+ rtx this_label = JUMP_LABEL (insn);
2831
2832 /* If we have found a cycle, make the insn jump to itself. */
2833- if (JUMP_LABEL (insn) == label)
2834+ if (this_label == label)
2835 return label;
2836
2837- tem = next_active_insn (JUMP_LABEL (insn));
2838- if (tem && (GET_CODE (PATTERN (tem)) == ADDR_VEC
2839+ if (!ANY_RETURN_P (this_label))
2840+ {
2841+ rtx tem = next_active_insn (this_label);
2842+ if (tem
2843+ && (GET_CODE (PATTERN (tem)) == ADDR_VEC
2844 || GET_CODE (PATTERN (tem)) == ADDR_DIFF_VEC))
2845- break;
2846+ break;
2847+ }
2848
2849- value = JUMP_LABEL (insn);
2850+ value = this_label;
2851 }
2852 if (depth == 10)
2853 return label;
2854@@ -2901,6 +2925,7 @@ fill_slots_from_thread (rtx insn, rtx co
2855 arithmetic insn after the jump insn and put the arithmetic insn in the
2856 delay slot. If we can't do this, return. */
2857 if (delay_list == 0 && likely && new_thread
2858+ && !ANY_RETURN_P (new_thread)
2859 && NONJUMP_INSN_P (new_thread)
2860 && GET_CODE (PATTERN (new_thread)) != ASM_INPUT
2861 && asm_noperands (PATTERN (new_thread)) < 0)
2862@@ -2985,16 +3010,14 @@ fill_slots_from_thread (rtx insn, rtx co
2863
2864 gcc_assert (thread_if_true);
2865
2866- if (new_thread && JUMP_P (new_thread)
2867- && (simplejump_p (new_thread)
2868- || GET_CODE (PATTERN (new_thread)) == RETURN)
2869+ if (new_thread && simplejump_or_return_p (new_thread)
2870 && redirect_with_delay_list_safe_p (insn,
2871 JUMP_LABEL (new_thread),
2872 delay_list))
2873 new_thread = follow_jumps (JUMP_LABEL (new_thread));
2874
2875- if (new_thread == 0)
2876- label = find_end_label ();
2877+ if (ANY_RETURN_P (new_thread))
2878+ label = find_end_label (new_thread);
2879 else if (LABEL_P (new_thread))
2880 label = new_thread;
2881 else
2882@@ -3340,11 +3363,12 @@ relax_delay_slots (rtx first)
2883 group of consecutive labels. */
2884 if (JUMP_P (insn)
2885 && (condjump_p (insn) || condjump_in_parallel_p (insn))
2886- && (target_label = JUMP_LABEL (insn)) != 0)
2887+ && (target_label = JUMP_LABEL (insn)) != 0
2888+ && !ANY_RETURN_P (target_label))
2889 {
2890 target_label = skip_consecutive_labels (follow_jumps (target_label));
2891- if (target_label == 0)
2892- target_label = find_end_label ();
2893+ if (ANY_RETURN_P (target_label))
2894+ target_label = find_end_label (target_label);
2895
2896 if (target_label && next_active_insn (target_label) == next
2897 && ! condjump_in_parallel_p (insn))
2898@@ -3359,9 +3383,8 @@ relax_delay_slots (rtx first)
2899 /* See if this jump conditionally branches around an unconditional
2900 jump. If so, invert this jump and point it to the target of the
2901 second jump. */
2902- if (next && JUMP_P (next)
2903+ if (next && simplejump_or_return_p (next)
2904 && any_condjump_p (insn)
2905- && (simplejump_p (next) || GET_CODE (PATTERN (next)) == RETURN)
2906 && target_label
2907 && next_active_insn (target_label) == next_active_insn (next)
2908 && no_labels_between_p (insn, next))
2909@@ -3403,8 +3426,7 @@ relax_delay_slots (rtx first)
2910 Don't do this if we expect the conditional branch to be true, because
2911 we would then be making the more common case longer. */
2912
2913- if (JUMP_P (insn)
2914- && (simplejump_p (insn) || GET_CODE (PATTERN (insn)) == RETURN)
2915+ if (simplejump_or_return_p (insn)
2916 && (other = prev_active_insn (insn)) != 0
2917 && any_condjump_p (other)
2918 && no_labels_between_p (other, insn)
2919@@ -3445,10 +3467,10 @@ relax_delay_slots (rtx first)
2920 Only do so if optimizing for size since this results in slower, but
2921 smaller code. */
2922 if (optimize_function_for_size_p (cfun)
2923- && GET_CODE (PATTERN (delay_insn)) == RETURN
2924+ && ANY_RETURN_P (PATTERN (delay_insn))
2925 && next
2926 && JUMP_P (next)
2927- && GET_CODE (PATTERN (next)) == RETURN)
2928+ && PATTERN (next) == PATTERN (delay_insn))
2929 {
2930 rtx after;
2931 int i;
2932@@ -3487,14 +3509,16 @@ relax_delay_slots (rtx first)
2933 continue;
2934
2935 target_label = JUMP_LABEL (delay_insn);
2936+ if (target_label && ANY_RETURN_P (target_label))
2937+ continue;
2938
2939 if (target_label)
2940 {
2941 /* If this jump goes to another unconditional jump, thread it, but
2942 don't convert a jump into a RETURN here. */
2943 trial = skip_consecutive_labels (follow_jumps (target_label));
2944- if (trial == 0)
2945- trial = find_end_label ();
2946+ if (ANY_RETURN_P (trial))
2947+ trial = find_end_label (trial);
2948
2949 if (trial && trial != target_label
2950 && redirect_with_delay_slots_safe_p (delay_insn, trial, insn))
2951@@ -3517,7 +3541,7 @@ relax_delay_slots (rtx first)
2952 later incorrectly compute register live/death info. */
2953 rtx tmp = next_active_insn (trial);
2954 if (tmp == 0)
2955- tmp = find_end_label ();
2956+ tmp = find_end_label (simple_return_rtx);
2957
2958 if (tmp)
2959 {
2960@@ -3537,14 +3561,12 @@ relax_delay_slots (rtx first)
2961 delay list and that insn is redundant, thread the jump. */
2962 if (trial && GET_CODE (PATTERN (trial)) == SEQUENCE
2963 && XVECLEN (PATTERN (trial), 0) == 2
2964- && JUMP_P (XVECEXP (PATTERN (trial), 0, 0))
2965- && (simplejump_p (XVECEXP (PATTERN (trial), 0, 0))
2966- || GET_CODE (PATTERN (XVECEXP (PATTERN (trial), 0, 0))) == RETURN)
2967+ && simplejump_or_return_p (XVECEXP (PATTERN (trial), 0, 0))
2968 && redundant_insn (XVECEXP (PATTERN (trial), 0, 1), insn, 0))
2969 {
2970 target_label = JUMP_LABEL (XVECEXP (PATTERN (trial), 0, 0));
2971- if (target_label == 0)
2972- target_label = find_end_label ();
2973+ if (ANY_RETURN_P (target_label))
2974+ target_label = find_end_label (target_label);
2975
2976 if (target_label
2977 && redirect_with_delay_slots_safe_p (delay_insn, target_label,
2978@@ -3622,16 +3644,15 @@ relax_delay_slots (rtx first)
2979 a RETURN here. */
2980 if (! INSN_ANNULLED_BRANCH_P (delay_insn)
2981 && any_condjump_p (delay_insn)
2982- && next && JUMP_P (next)
2983- && (simplejump_p (next) || GET_CODE (PATTERN (next)) == RETURN)
2984+ && next && simplejump_or_return_p (next)
2985 && next_active_insn (target_label) == next_active_insn (next)
2986 && no_labels_between_p (insn, next))
2987 {
2988 rtx label = JUMP_LABEL (next);
2989 rtx old_label = JUMP_LABEL (delay_insn);
2990
2991- if (label == 0)
2992- label = find_end_label ();
2993+ if (ANY_RETURN_P (label))
2994+ label = find_end_label (label);
2995
2996 /* find_end_label can generate a new label. Check this first. */
2997 if (label
2998@@ -3692,7 +3713,8 @@ static void
2999 make_return_insns (rtx first)
3000 {
3001 rtx insn, jump_insn, pat;
3002- rtx real_return_label = end_of_function_label;
3003+ rtx real_return_label = function_return_label;
3004+ rtx real_simple_return_label = function_simple_return_label;
3005 int slots, i;
3006
3007 #ifdef DELAY_SLOTS_FOR_EPILOGUE
3008@@ -3707,18 +3729,25 @@ make_return_insns (rtx first)
3009 #endif
3010
3011 /* See if there is a RETURN insn in the function other than the one we
3012- made for END_OF_FUNCTION_LABEL. If so, set up anything we can't change
3013+ made for FUNCTION_RETURN_LABEL. If so, set up anything we can't change
3014 into a RETURN to jump to it. */
3015 for (insn = first; insn; insn = NEXT_INSN (insn))
3016- if (JUMP_P (insn) && GET_CODE (PATTERN (insn)) == RETURN)
3017+ if (JUMP_P (insn) && ANY_RETURN_P (PATTERN (insn)))
3018 {
3019- real_return_label = get_label_before (insn);
3020+ rtx t = get_label_before (insn);
3021+ if (PATTERN (insn) == ret_rtx)
3022+ real_return_label = t;
3023+ else
3024+ real_simple_return_label = t;
3025 break;
3026 }
3027
3028 /* Show an extra usage of REAL_RETURN_LABEL so it won't go away if it
3029- was equal to END_OF_FUNCTION_LABEL. */
3030- LABEL_NUSES (real_return_label)++;
3031+ was equal to FUNCTION_RETURN_LABEL. */
3032+ if (real_return_label)
3033+ LABEL_NUSES (real_return_label)++;
3034+ if (real_simple_return_label)
3035+ LABEL_NUSES (real_simple_return_label)++;
3036
3037 /* Clear the list of insns to fill so we can use it. */
3038 obstack_free (&unfilled_slots_obstack, unfilled_firstobj);
3039@@ -3726,13 +3755,27 @@ make_return_insns (rtx first)
3040 for (insn = first; insn; insn = NEXT_INSN (insn))
3041 {
3042 int flags;
3043+ rtx kind, real_label;
3044
3045 /* Only look at filled JUMP_INSNs that go to the end of function
3046 label. */
3047 if (!NONJUMP_INSN_P (insn)
3048 || GET_CODE (PATTERN (insn)) != SEQUENCE
3049- || !JUMP_P (XVECEXP (PATTERN (insn), 0, 0))
3050- || JUMP_LABEL (XVECEXP (PATTERN (insn), 0, 0)) != end_of_function_label)
3051+ || !JUMP_P (XVECEXP (PATTERN (insn), 0, 0)))
3052+ continue;
3053+
3054+ if (JUMP_LABEL (XVECEXP (PATTERN (insn), 0, 0)) == function_return_label)
3055+ {
3056+ kind = ret_rtx;
3057+ real_label = real_return_label;
3058+ }
3059+ else if (JUMP_LABEL (XVECEXP (PATTERN (insn), 0, 0))
3060+ == function_simple_return_label)
3061+ {
3062+ kind = simple_return_rtx;
3063+ real_label = real_simple_return_label;
3064+ }
3065+ else
3066 continue;
3067
3068 pat = PATTERN (insn);
3069@@ -3740,14 +3783,12 @@ make_return_insns (rtx first)
3070
3071 /* If we can't make the jump into a RETURN, try to redirect it to the best
3072 RETURN and go on to the next insn. */
3073- if (! reorg_redirect_jump (jump_insn, NULL_RTX))
3074+ if (! reorg_redirect_jump (jump_insn, kind))
3075 {
3076 /* Make sure redirecting the jump will not invalidate the delay
3077 slot insns. */
3078- if (redirect_with_delay_slots_safe_p (jump_insn,
3079- real_return_label,
3080- insn))
3081- reorg_redirect_jump (jump_insn, real_return_label);
3082+ if (redirect_with_delay_slots_safe_p (jump_insn, real_label, insn))
3083+ reorg_redirect_jump (jump_insn, real_label);
3084 continue;
3085 }
3086
3087@@ -3787,7 +3828,7 @@ make_return_insns (rtx first)
3088 RETURN, delete the SEQUENCE and output the individual insns,
3089 followed by the RETURN. Then set things up so we try to find
3090 insns for its delay slots, if it needs some. */
3091- if (GET_CODE (PATTERN (jump_insn)) == RETURN)
3092+ if (ANY_RETURN_P (PATTERN (jump_insn)))
3093 {
3094 rtx prev = PREV_INSN (insn);
3095
3096@@ -3804,13 +3845,16 @@ make_return_insns (rtx first)
3097 else
3098 /* It is probably more efficient to keep this with its current
3099 delay slot as a branch to a RETURN. */
3100- reorg_redirect_jump (jump_insn, real_return_label);
3101+ reorg_redirect_jump (jump_insn, real_label);
3102 }
3103
3104 /* Now delete REAL_RETURN_LABEL if we never used it. Then try to fill any
3105 new delay slots we have created. */
3106- if (--LABEL_NUSES (real_return_label) == 0)
3107+ if (real_return_label != NULL_RTX && --LABEL_NUSES (real_return_label) == 0)
3108 delete_related_insns (real_return_label);
3109+ if (real_simple_return_label != NULL_RTX
3110+ && --LABEL_NUSES (real_simple_return_label) == 0)
3111+ delete_related_insns (real_simple_return_label);
3112
3113 fill_simple_delay_slots (1);
3114 fill_simple_delay_slots (0);
3115@@ -3878,7 +3922,7 @@ dbr_schedule (rtx first)
3116 init_resource_info (epilogue_insn);
3117
3118 /* Show we haven't computed an end-of-function label yet. */
3119- end_of_function_label = 0;
3120+ function_return_label = function_simple_return_label = NULL_RTX;
3121
3122 /* Initialize the statistics for this function. */
3123 memset (num_insns_needing_delays, 0, sizeof num_insns_needing_delays);
3124@@ -3900,11 +3944,23 @@ dbr_schedule (rtx first)
3125 /* If we made an end of function label, indicate that it is now
3126 safe to delete it by undoing our prior adjustment to LABEL_NUSES.
3127 If it is now unused, delete it. */
3128- if (end_of_function_label && --LABEL_NUSES (end_of_function_label) == 0)
3129- delete_related_insns (end_of_function_label);
3130+ if (function_return_label && --LABEL_NUSES (function_return_label) == 0)
3131+ delete_related_insns (function_return_label);
3132+ if (function_simple_return_label
3133+ && --LABEL_NUSES (function_simple_return_label) == 0)
3134+ delete_related_insns (function_simple_return_label);
3135
3136+#if defined HAVE_return || defined HAVE_simple_return
3137+ if (
3138 #ifdef HAVE_return
3139- if (HAVE_return && end_of_function_label != 0)
3140+ (HAVE_return && function_return_label != 0)
3141+#else
3142+ 0
3143+#endif
3144+#ifdef HAVE_simple_return
3145+ || (HAVE_simple_return && function_simple_return_label != 0)
3146+#endif
3147+ )
3148 make_return_insns (first);
3149 #endif
3150
3151Index: gcc-4_5-branch/gcc/resource.c
3152===================================================================
3153--- gcc-4_5-branch.orig/gcc/resource.c
3154+++ gcc-4_5-branch/gcc/resource.c
3155@@ -495,6 +495,8 @@ find_dead_or_set_registers (rtx target,
3156 || GET_CODE (PATTERN (this_jump_insn)) == RETURN)
3157 {
3158 next = JUMP_LABEL (this_jump_insn);
3159+ if (next && ANY_RETURN_P (next))
3160+ next = NULL_RTX;
3161 if (jump_insn == 0)
3162 {
3163 jump_insn = insn;
3164@@ -562,9 +564,10 @@ find_dead_or_set_registers (rtx target,
3165 AND_COMPL_HARD_REG_SET (scratch, needed.regs);
3166 AND_COMPL_HARD_REG_SET (fallthrough_res.regs, scratch);
3167
3168- find_dead_or_set_registers (JUMP_LABEL (this_jump_insn),
3169- &target_res, 0, jump_count,
3170- target_set, needed);
3171+ if (!ANY_RETURN_P (JUMP_LABEL (this_jump_insn)))
3172+ find_dead_or_set_registers (JUMP_LABEL (this_jump_insn),
3173+ &target_res, 0, jump_count,
3174+ target_set, needed);
3175 find_dead_or_set_registers (next,
3176 &fallthrough_res, 0, jump_count,
3177 set, needed);
3178@@ -1097,6 +1100,8 @@ mark_target_live_regs (rtx insns, rtx ta
3179 struct resources new_resources;
3180 rtx stop_insn = next_active_insn (jump_insn);
3181
3182+ if (jump_target && ANY_RETURN_P (jump_target))
3183+ jump_target = NULL_RTX;
3184 mark_target_live_regs (insns, next_active_insn (jump_target),
3185 &new_resources);
3186 CLEAR_RESOURCE (&set);
3187Index: gcc-4_5-branch/gcc/rtl.c
3188===================================================================
3189--- gcc-4_5-branch.orig/gcc/rtl.c
3190+++ gcc-4_5-branch/gcc/rtl.c
3191@@ -256,6 +256,8 @@ copy_rtx (rtx orig)
3192 case CODE_LABEL:
3193 case PC:
3194 case CC0:
3195+ case RETURN:
3196+ case SIMPLE_RETURN:
3197 case SCRATCH:
3198 /* SCRATCH must be shared because they represent distinct values. */
3199 return orig;
3200Index: gcc-4_5-branch/gcc/rtl.def
3201===================================================================
3202--- gcc-4_5-branch.orig/gcc/rtl.def
3203+++ gcc-4_5-branch/gcc/rtl.def
3204@@ -296,6 +296,10 @@ DEF_RTL_EXPR(CALL, "call", "ee", RTX_EXT
3205
3206 DEF_RTL_EXPR(RETURN, "return", "", RTX_EXTRA)
3207
3208+/* A plain return, to be used on paths that are reached without going
3209+ through the function prologue. */
3210+DEF_RTL_EXPR(SIMPLE_RETURN, "simple_return", "", RTX_EXTRA)
3211+
3212 /* Special for EH return from subroutine. */
3213
3214 DEF_RTL_EXPR(EH_RETURN, "eh_return", "", RTX_EXTRA)
3215Index: gcc-4_5-branch/gcc/rtl.h
3216===================================================================
3217--- gcc-4_5-branch.orig/gcc/rtl.h
3218+++ gcc-4_5-branch/gcc/rtl.h
3219@@ -411,6 +411,10 @@ struct GTY(()) rtvec_def {
3220 (JUMP_P (INSN) && (GET_CODE (PATTERN (INSN)) == ADDR_VEC || \
3221 GET_CODE (PATTERN (INSN)) == ADDR_DIFF_VEC))
3222
3223+/* Predicate yielding nonzero iff X is a return or simple_preturn. */
3224+#define ANY_RETURN_P(X) \
3225+ (GET_CODE (X) == RETURN || GET_CODE (X) == SIMPLE_RETURN)
3226+
3227 /* 1 if X is a unary operator. */
3228
3229 #define UNARY_P(X) \
3230@@ -1998,6 +2002,8 @@ enum global_rtl_index
3231 {
3232 GR_PC,
3233 GR_CC0,
3234+ GR_RETURN,
3235+ GR_SIMPLE_RETURN,
3236 GR_STACK_POINTER,
3237 GR_FRAME_POINTER,
3238 /* For register elimination to work properly these hard_frame_pointer_rtx,
3239@@ -2032,6 +2038,8 @@ extern GTY(()) rtx global_rtl[GR_MAX];
3240
3241 /* Standard pieces of rtx, to be substituted directly into things. */
3242 #define pc_rtx (global_rtl[GR_PC])
3243+#define ret_rtx (global_rtl[GR_RETURN])
3244+#define simple_return_rtx (global_rtl[GR_SIMPLE_RETURN])
3245 #define cc0_rtx (global_rtl[GR_CC0])
3246
3247 /* All references to certain hard regs, except those created
3248Index: gcc-4_5-branch/gcc/rtlanal.c
3249===================================================================
3250--- gcc-4_5-branch.orig/gcc/rtlanal.c
3251+++ gcc-4_5-branch/gcc/rtlanal.c
3252@@ -2673,6 +2673,7 @@ tablejump_p (const_rtx insn, rtx *labelp
3253
3254 if (JUMP_P (insn)
3255 && (label = JUMP_LABEL (insn)) != NULL_RTX
3256+ && !ANY_RETURN_P (label)
3257 && (table = next_active_insn (label)) != NULL_RTX
3258 && JUMP_TABLE_DATA_P (table))
3259 {
3260Index: gcc-4_5-branch/gcc/sched-int.h
3261===================================================================
3262--- gcc-4_5-branch.orig/gcc/sched-int.h
3263+++ gcc-4_5-branch/gcc/sched-int.h
3264@@ -199,7 +199,7 @@ extern int max_issue (struct ready_list
3265
3266 extern void ebb_compute_jump_reg_dependencies (rtx, regset, regset, regset);
3267
3268-extern edge find_fallthru_edge (basic_block);
3269+extern edge find_fallthru_edge_from (basic_block);
3270
3271 extern void (* sched_init_only_bb) (basic_block, basic_block);
3272 extern basic_block (* sched_split_block) (basic_block, rtx);
3273Index: gcc-4_5-branch/gcc/sched-vis.c
3274===================================================================
3275--- gcc-4_5-branch.orig/gcc/sched-vis.c
3276+++ gcc-4_5-branch/gcc/sched-vis.c
3277@@ -549,6 +549,9 @@ print_pattern (char *buf, const_rtx x, i
3278 case RETURN:
3279 sprintf (buf, "return");
3280 break;
3281+ case SIMPLE_RETURN:
3282+ sprintf (buf, "simple_return");
3283+ break;
3284 case CALL:
3285 print_exp (buf, x, verbose);
3286 break;
3287Index: gcc-4_5-branch/gcc/sel-sched-ir.c
3288===================================================================
3289--- gcc-4_5-branch.orig/gcc/sel-sched-ir.c
3290+++ gcc-4_5-branch/gcc/sel-sched-ir.c
3291@@ -686,7 +686,7 @@ merge_fences (fence_t f, insn_t insn,
3292
3293 /* Find fallthrough edge. */
3294 gcc_assert (BLOCK_FOR_INSN (insn)->prev_bb);
3295- candidate = find_fallthru_edge (BLOCK_FOR_INSN (insn)->prev_bb);
3296+ candidate = find_fallthru_edge_from (BLOCK_FOR_INSN (insn)->prev_bb);
3297
3298 if (!candidate
3299 || (candidate->src != BLOCK_FOR_INSN (last_scheduled_insn)
3300Index: gcc-4_5-branch/gcc/sel-sched.c
3301===================================================================
3302--- gcc-4_5-branch.orig/gcc/sel-sched.c
3303+++ gcc-4_5-branch/gcc/sel-sched.c
3304@@ -617,8 +617,8 @@ in_fallthru_bb_p (rtx insn, rtx succ)
3305 if (bb == BLOCK_FOR_INSN (succ))
3306 return true;
3307
3308- if (find_fallthru_edge (bb))
3309- bb = find_fallthru_edge (bb)->dest;
3310+ if (find_fallthru_edge_from (bb))
3311+ bb = find_fallthru_edge_from (bb)->dest;
3312 else
3313 return false;
3314
3315@@ -4911,7 +4911,7 @@ move_cond_jump (rtx insn, bnd_t bnd)
3316 next = PREV_INSN (insn);
3317 BND_TO (bnd) = insn;
3318
3319- ft_edge = find_fallthru_edge (block_from);
3320+ ft_edge = find_fallthru_edge_from (block_from);
3321 block_next = ft_edge->dest;
3322 /* There must be a fallthrough block (or where should go
3323 control flow in case of false jump predicate otherwise?). */
3324Index: gcc-4_5-branch/gcc/vec.h
3325===================================================================
3326--- gcc-4_5-branch.orig/gcc/vec.h
3327+++ gcc-4_5-branch/gcc/vec.h
3328@@ -188,6 +188,18 @@ along with GCC; see the file COPYING3.
3329
3330 #define VEC_iterate(T,V,I,P) (VEC_OP(T,base,iterate)(VEC_BASE(V),I,&(P)))
3331
3332+/* Convenience macro for forward iteration. */
3333+
3334+#define FOR_EACH_VEC_ELT(T, V, I, P) \
3335+ for (I = 0; VEC_iterate (T, (V), (I), (P)); ++(I))
3336+
3337+/* Convenience macro for reverse iteration. */
3338+
3339+#define FOR_EACH_VEC_ELT_REVERSE(T,V,I,P) \
3340+ for (I = VEC_length (T, (V)) - 1; \
3341+ VEC_iterate (T, (V), (I), (P)); \
3342+ (I)--)
3343+
3344 /* Allocate new vector.
3345 VEC(T,A) *VEC_T_A_alloc(int reserve);
3346
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch
new file mode 100644
index 000000000..aa9d6aa36
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99475.patch
@@ -0,0 +1,4217 @@
12011-02-08 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from FSF mainline:
4
5 2010-06-30 H.J. Lu <hongjiu.lu@intel.com>
6
7 PR target/44721
8 * config/i386/i386.md (peephole2 for arithmetic ops with memory):
9 Fix last commit.
10
11 2010-06-30 Richard Guenther <rguenther@suse.de>
12
13 PR target/44722
14 * config/i386/i386.md (peephole2 for fix:SSEMODEI24): Guard
15 against oscillation with reverse peephole2.
16
17 2010-07-01 Bernd Schmidt <bernds@codesourcery.com>
18
19 PR target/44727
20 * config/i386/i386.md (peephole2 for arithmetic ops with memory):
21 Make sure operand 0 dies.
22
232010-12-03 Yao Qi <yao@codesourcery.com>
24
25 * config/arm/arm-ldmstm.ml: Rewrite ldm/stm RTL patterns to fix
26 regressions.
27 * config/arm/ldmstm.md: Regenreate.
28
292010-12-03 Yao Qi <yao@codesourcery.com>
30
31 Backport from FSF mainline:
32
33 2010-08-02 Bernd Schmidt <bernds@codesourcery.com>
34
35 PR target/40457
36 * config/arm/arm.h (arm_regs_in_sequence): Declare.
37 * config/arm/arm-protos.h (emit_ldm_seq, emit_stm_seq,
38 load_multiple_sequence, store_multiple_sequence): Delete
39 declarations.
40 (arm_gen_load_multiple, arm_gen_store_multiple): Adjust
41 declarations.
42 * config/arm/ldmstm.md: New file.
43 * config/arm/arm.c (arm_regs_in_sequence): New array.
44 (load_multiple_sequence): Now static. New args SAVED_ORDER,
45 CHECK_REGS. All callers changed.
46 If SAVED_ORDER is nonnull, copy the computed order into it.
47 If CHECK_REGS is false, don't sort REGS. Handle Thumb mode.
48 (store_multiple_sequence): Now static. New args NOPS_TOTAL,
49 SAVED_ORDER, REG_RTXS and CHECK_REGS. All callers changed.
50 If SAVED_ORDER is nonnull, copy the computed order into it.
51 If CHECK_REGS is false, don't sort REGS. Set up REG_RTXS just
52 like REGS. Handle Thumb mode.
53 (arm_gen_load_multiple_1): New function, broken out of
54 arm_gen_load_multiple.
55 (arm_gen_store_multiple_1): New function, broken out of
56 arm_gen_store_multiple.
57 (arm_gen_multiple_op): New function, with code from
58 arm_gen_load_multiple and arm_gen_store_multiple moved here.
59 (arm_gen_load_multiple, arm_gen_store_multiple): Now just
60 wrappers around arm_gen_multiple_op. Remove argument UP, all callers
61 changed.
62 (gen_ldm_seq, gen_stm_seq, gen_const_stm_seq): New functions.
63 * config/arm/predicates.md (commutative_binary_operator): New.
64 (load_multiple_operation, store_multiple_operation): Handle more
65 variants of these patterns with different starting offsets. Handle
66 Thumb-1.
67 * config/arm/arm.md: Include "ldmstm.md".
68 (ldmsi_postinc4, ldmsi_postinc4_thumb1, ldmsi_postinc3, ldmsi_postinc2,
69 ldmsi4, ldmsi3, ldmsi2, stmsi_postinc4, stmsi_postinc4_thumb1,
70 stmsi_postinc3, stmsi_postinc2, stmsi4, stmsi3, stmsi2 and related
71 peepholes): Delete.
72 * config/arm/ldmstm.md: New file.
73 * config/arm/arm-ldmstm.ml: New file.
74
75 * config/arm/arm.c (arm_rtx_costs_1): Remove second clause from the
76 if statement which adds extra costs to frame-related expressions.
77
78 2010-05-06 Bernd Schmidt <bernds@codesourcery.com>
79
80 * config/arm/arm.h (MAX_LDM_STM_OPS): New macro.
81 * config/arm/arm.c (multiple_operation_profitable_p,
82 compute_offset_order): New static functions.
83 (load_multiple_sequence, store_multiple_sequence): Use them.
84 Replace constant 4 with MAX_LDM_STM_OPS. Compute order[0] from
85 memory offsets, not register numbers.
86 (emit_ldm_seq, emit_stm_seq): Replace constant 4 with MAX_LDM_STM_OPS.
87
88 2010-04-16 Bernd Schmidt <bernds@codesourcery.com>
89
90 * recog.h (struct recog_data): New field is_operator.
91 (struct insn_operand_data): New field is_operator.
92 * recog.c (extract_insn): Set recog_data.is_operator.
93 * genoutput.c (output_operand_data): Emit code to set the
94 is_operator field.
95 * reload.c (find_reloads): Use it rather than testing for an
96 empty constraint string.
97
98=== added file 'gcc/config/arm/arm-ldmstm.ml'
99Index: gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml
100===================================================================
101--- /dev/null
102+++ gcc-4_5-branch/gcc/config/arm/arm-ldmstm.ml
103@@ -0,0 +1,333 @@
104+(* Auto-generate ARM ldm/stm patterns
105+ Copyright (C) 2010 Free Software Foundation, Inc.
106+ Contributed by CodeSourcery.
107+
108+ This file is part of GCC.
109+
110+ GCC is free software; you can redistribute it and/or modify it under
111+ the terms of the GNU General Public License as published by the Free
112+ Software Foundation; either version 3, or (at your option) any later
113+ version.
114+
115+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
116+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
117+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
118+ for more details.
119+
120+ You should have received a copy of the GNU General Public License
121+ along with GCC; see the file COPYING3. If not see
122+ <http://www.gnu.org/licenses/>.
123+
124+ This is an O'Caml program. The O'Caml compiler is available from:
125+
126+ http://caml.inria.fr/
127+
128+ Or from your favourite OS's friendly packaging system. Tested with version
129+ 3.09.2, though other versions will probably work too.
130+
131+ Run with:
132+ ocaml arm-ldmstm.ml >/path/to/gcc/config/arm/ldmstm.ml
133+*)
134+
135+type amode = IA | IB | DA | DB
136+
137+type optype = IN | OUT | INOUT
138+
139+let rec string_of_addrmode addrmode =
140+ match addrmode with
141+ IA -> "ia" | IB -> "ib" | DA -> "da" | DB -> "db"
142+
143+let rec initial_offset addrmode nregs =
144+ match addrmode with
145+ IA -> 0
146+ | IB -> 4
147+ | DA -> -4 * nregs + 4
148+ | DB -> -4 * nregs
149+
150+let rec final_offset addrmode nregs =
151+ match addrmode with
152+ IA -> nregs * 4
153+ | IB -> nregs * 4
154+ | DA -> -4 * nregs
155+ | DB -> -4 * nregs
156+
157+let constr thumb =
158+ if thumb then "l" else "rk"
159+
160+let inout_constr op_type =
161+ match op_type with
162+ OUT -> "="
163+ | INOUT -> "+&"
164+ | IN -> ""
165+
166+let destreg nregs first op_type thumb =
167+ if not first then
168+ Printf.sprintf "(match_dup %d)" (nregs)
169+ else
170+ Printf.sprintf ("(match_operand:SI %d \"s_register_operand\" \"%s%s\")")
171+ (nregs) (inout_constr op_type) (constr thumb)
172+
173+let write_ldm_set thumb nregs offset opnr first =
174+ let indent = " " in
175+ Printf.printf "%s" (if first then " [" else indent);
176+ Printf.printf "(set (match_operand:SI %d \"arm_hard_register_operand\" \"\")\n" opnr;
177+ Printf.printf "%s (mem:SI " indent;
178+ begin if offset != 0 then Printf.printf "(plus:SI " end;
179+ Printf.printf "%s" (destreg nregs first IN thumb);
180+ begin if offset != 0 then Printf.printf "\n%s (const_int %d))" indent offset end;
181+ Printf.printf "))"
182+
183+let write_stm_set thumb nregs offset opnr first =
184+ let indent = " " in
185+ Printf.printf "%s" (if first then " [" else indent);
186+ Printf.printf "(set (mem:SI ";
187+ begin if offset != 0 then Printf.printf "(plus:SI " end;
188+ Printf.printf "%s" (destreg nregs first IN thumb);
189+ begin if offset != 0 then Printf.printf " (const_int %d))" offset end;
190+ Printf.printf ")\n%s (match_operand:SI %d \"arm_hard_register_operand\" \"\"))" indent opnr
191+
192+let write_ldm_peep_set extra_indent nregs opnr first =
193+ let indent = " " ^ extra_indent in
194+ Printf.printf "%s" (if first then extra_indent ^ " [" else indent);
195+ Printf.printf "(set (match_operand:SI %d \"s_register_operand\" \"\")\n" opnr;
196+ Printf.printf "%s (match_operand:SI %d \"memory_operand\" \"\"))" indent (nregs + opnr)
197+
198+let write_stm_peep_set extra_indent nregs opnr first =
199+ let indent = " " ^ extra_indent in
200+ Printf.printf "%s" (if first then extra_indent ^ " [" else indent);
201+ Printf.printf "(set (match_operand:SI %d \"memory_operand\" \"\")\n" (nregs + opnr);
202+ Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\"))" indent opnr
203+
204+let write_any_load optype nregs opnr first =
205+ let indent = " " in
206+ Printf.printf "%s" (if first then " [" else indent);
207+ Printf.printf "(set (match_operand:SI %d \"s_register_operand\" \"\")\n" opnr;
208+ Printf.printf "%s (match_operand:SI %d \"%s\" \"\"))" indent (nregs * 2 + opnr) optype
209+
210+let write_const_store nregs opnr first =
211+ let indent = " " in
212+ Printf.printf "%s(set (match_operand:SI %d \"memory_operand\" \"\")\n" indent (nregs + opnr);
213+ Printf.printf "%s (match_dup %d))" indent opnr
214+
215+let write_const_stm_peep_set nregs opnr first =
216+ write_any_load "const_int_operand" nregs opnr first;
217+ Printf.printf "\n";
218+ write_const_store nregs opnr false
219+
220+
221+let rec write_pat_sets func opnr offset first n_left =
222+ func offset opnr first;
223+ begin
224+ if n_left > 1 then begin
225+ Printf.printf "\n";
226+ write_pat_sets func (opnr + 1) (offset + 4) false (n_left - 1);
227+ end else
228+ Printf.printf "]"
229+ end
230+
231+let rec write_peep_sets func opnr first n_left =
232+ func opnr first;
233+ begin
234+ if n_left > 1 then begin
235+ Printf.printf "\n";
236+ write_peep_sets func (opnr + 1) false (n_left - 1);
237+ end
238+ end
239+
240+let can_thumb addrmode update is_store =
241+ match addrmode, update, is_store with
242+ (* Thumb1 mode only supports IA with update. However, for LDMIA,
243+ if the address register also appears in the list of loaded
244+ registers, the loaded value is stored, hence the RTL pattern
245+ to describe such an insn does not have an update. We check
246+ in the match_parallel predicate that the condition described
247+ above is met. *)
248+ IA, _, false -> true
249+ | IA, true, true -> true
250+ | _ -> false
251+
252+let target addrmode thumb =
253+ match addrmode, thumb with
254+ IA, true -> "TARGET_THUMB1"
255+ | IA, false -> "TARGET_32BIT"
256+ | DB, false -> "TARGET_32BIT"
257+ | _, false -> "TARGET_ARM"
258+
259+let write_pattern_1 name ls addrmode nregs write_set_fn update thumb =
260+ let astr = string_of_addrmode addrmode in
261+ Printf.printf "(define_insn \"*%s%s%d_%s%s\"\n"
262+ (if thumb then "thumb_" else "") name nregs astr
263+ (if update then "_update" else "");
264+ Printf.printf " [(match_parallel 0 \"%s_multiple_operation\"\n" ls;
265+ begin
266+ if update then begin
267+ Printf.printf " [(set %s\n (plus:SI "
268+ (destreg 1 true OUT thumb); (*destreg 2 true IN thumb*)
269+ Printf.printf "(match_operand:SI 2 \"s_register_operand\" \"1\")";
270+ Printf.printf " (const_int %d)))\n"
271+ (final_offset addrmode nregs)
272+ end
273+ end;
274+ write_pat_sets
275+ (write_set_fn thumb (if update then 2 else 1)) (if update then 3 else 2)
276+ (initial_offset addrmode nregs)
277+ (not update) nregs;
278+ Printf.printf ")]\n \"%s && XVECLEN (operands[0], 0) == %d\"\n"
279+ (target addrmode thumb)
280+ (if update then nregs + 1 else nregs);
281+ Printf.printf " \"%s%%(%s%%)\\t%%%d%s, {"
282+ name astr (1) (if update then "!" else "");
283+ for n = 1 to nregs; do
284+ Printf.printf "%%%d%s" (n+(if update then 2 else 1)) (if n < nregs then ", " else "")
285+ done;
286+ Printf.printf "}\"\n";
287+ Printf.printf " [(set_attr \"type\" \"%s%d\")" ls nregs;
288+ begin if not thumb then
289+ Printf.printf "\n (set_attr \"predicable\" \"yes\")";
290+ end;
291+ Printf.printf "])\n\n"
292+
293+let write_ldm_pattern addrmode nregs update =
294+ write_pattern_1 "ldm" "load" addrmode nregs write_ldm_set update false;
295+ begin if can_thumb addrmode update false then
296+ write_pattern_1 "ldm" "load" addrmode nregs write_ldm_set update true;
297+ end
298+
299+let write_stm_pattern addrmode nregs update =
300+ write_pattern_1 "stm" "store" addrmode nregs write_stm_set update false;
301+ begin if can_thumb addrmode update true then
302+ write_pattern_1 "stm" "store" addrmode nregs write_stm_set update true;
303+ end
304+
305+let write_ldm_commutative_peephole thumb =
306+ let nregs = 2 in
307+ Printf.printf "(define_peephole2\n";
308+ write_peep_sets (write_ldm_peep_set "" nregs) 0 true nregs;
309+ let indent = " " in
310+ if thumb then begin
311+ Printf.printf "\n%s(set (match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2);
312+ Printf.printf "%s (match_operator:SI %d \"commutative_binary_operator\"\n" indent (nregs * 2 + 1);
313+ Printf.printf "%s [(match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2 + 2);
314+ Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\")]))]\n" indent (nregs * 2 + 3)
315+ end else begin
316+ Printf.printf "\n%s(parallel\n" indent;
317+ Printf.printf "%s [(set (match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2);
318+ Printf.printf "%s (match_operator:SI %d \"commutative_binary_operator\"\n" indent (nregs * 2 + 1);
319+ Printf.printf "%s [(match_operand:SI %d \"s_register_operand\" \"\")\n" indent (nregs * 2 + 2);
320+ Printf.printf "%s (match_operand:SI %d \"s_register_operand\" \"\")]))\n" indent (nregs * 2 + 3);
321+ Printf.printf "%s (clobber (reg:CC CC_REGNUM))])]\n" indent
322+ end;
323+ Printf.printf " \"(((operands[%d] == operands[0] && operands[%d] == operands[1])\n" (nregs * 2 + 2) (nregs * 2 + 3);
324+ Printf.printf " || (operands[%d] == operands[0] && operands[%d] == operands[1]))\n" (nregs * 2 + 3) (nregs * 2 + 2);
325+ Printf.printf " && peep2_reg_dead_p (%d, operands[0]) && peep2_reg_dead_p (%d, operands[1]))\"\n" (nregs + 1) (nregs + 1);
326+ begin
327+ if thumb then
328+ Printf.printf " [(set (match_dup %d) (match_op_dup %d [(match_dup %d) (match_dup %d)]))]\n"
329+ (nregs * 2) (nregs * 2 + 1) (nregs * 2 + 2) (nregs * 2 + 3)
330+ else begin
331+ Printf.printf " [(parallel\n";
332+ Printf.printf " [(set (match_dup %d) (match_op_dup %d [(match_dup %d) (match_dup %d)]))\n"
333+ (nregs * 2) (nregs * 2 + 1) (nregs * 2 + 2) (nregs * 2 + 3);
334+ Printf.printf " (clobber (reg:CC CC_REGNUM))])]\n"
335+ end
336+ end;
337+ Printf.printf "{\n if (!gen_ldm_seq (operands, %d, true))\n FAIL;\n" nregs;
338+ Printf.printf "})\n\n"
339+
340+let write_ldm_peephole nregs =
341+ Printf.printf "(define_peephole2\n";
342+ write_peep_sets (write_ldm_peep_set "" nregs) 0 true nregs;
343+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
344+ Printf.printf " if (gen_ldm_seq (operands, %d, false))\n DONE;\n else\n FAIL;\n})\n\n" nregs
345+
346+let write_ldm_peephole_b nregs =
347+ if nregs > 2 then begin
348+ Printf.printf "(define_peephole2\n";
349+ write_ldm_peep_set "" nregs 0 true;
350+ Printf.printf "\n (parallel\n";
351+ write_peep_sets (write_ldm_peep_set " " nregs) 1 true (nregs - 1);
352+ Printf.printf "])]\n \"\"\n [(const_int 0)]\n{\n";
353+ Printf.printf " if (gen_ldm_seq (operands, %d, false))\n DONE;\n else\n FAIL;\n})\n\n" nregs
354+ end
355+
356+let write_stm_peephole nregs =
357+ Printf.printf "(define_peephole2\n";
358+ write_peep_sets (write_stm_peep_set "" nregs) 0 true nregs;
359+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
360+ Printf.printf " if (gen_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
361+
362+let write_stm_peephole_b nregs =
363+ if nregs > 2 then begin
364+ Printf.printf "(define_peephole2\n";
365+ write_stm_peep_set "" nregs 0 true;
366+ Printf.printf "\n (parallel\n";
367+ write_peep_sets (write_stm_peep_set "" nregs) 1 true (nregs - 1);
368+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
369+ Printf.printf " if (gen_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
370+ end
371+
372+let write_const_stm_peephole_a nregs =
373+ Printf.printf "(define_peephole2\n";
374+ write_peep_sets (write_const_stm_peep_set nregs) 0 true nregs;
375+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
376+ Printf.printf " if (gen_const_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
377+
378+let write_const_stm_peephole_b nregs =
379+ Printf.printf "(define_peephole2\n";
380+ write_peep_sets (write_any_load "const_int_operand" nregs) 0 true nregs;
381+ Printf.printf "\n";
382+ write_peep_sets (write_const_store nregs) 0 false nregs;
383+ Printf.printf "]\n \"\"\n [(const_int 0)]\n{\n";
384+ Printf.printf " if (gen_const_stm_seq (operands, %d))\n DONE;\n else\n FAIL;\n})\n\n" nregs
385+
386+let patterns () =
387+ let addrmodes = [ IA; IB; DA; DB ] in
388+ let sizes = [ 4; 3; 2] in
389+ List.iter
390+ (fun n ->
391+ List.iter
392+ (fun addrmode ->
393+ write_ldm_pattern addrmode n false;
394+ write_ldm_pattern addrmode n true;
395+ write_stm_pattern addrmode n false;
396+ write_stm_pattern addrmode n true)
397+ addrmodes;
398+ write_ldm_peephole n;
399+ write_ldm_peephole_b n;
400+ write_const_stm_peephole_a n;
401+ write_const_stm_peephole_b n;
402+ write_stm_peephole n;)
403+ sizes;
404+ write_ldm_commutative_peephole false;
405+ write_ldm_commutative_peephole true
406+
407+let print_lines = List.iter (fun s -> Format.printf "%s@\n" s)
408+
409+(* Do it. *)
410+
411+let _ =
412+ print_lines [
413+"/* ARM ldm/stm instruction patterns. This file was automatically generated";
414+" using arm-ldmstm.ml. Please do not edit manually.";
415+"";
416+" Copyright (C) 2010 Free Software Foundation, Inc.";
417+" Contributed by CodeSourcery.";
418+"";
419+" This file is part of GCC.";
420+"";
421+" GCC is free software; you can redistribute it and/or modify it";
422+" under the terms of the GNU General Public License as published";
423+" by the Free Software Foundation; either version 3, or (at your";
424+" option) any later version.";
425+"";
426+" GCC is distributed in the hope that it will be useful, but WITHOUT";
427+" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY";
428+" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public";
429+" License for more details.";
430+"";
431+" You should have received a copy of the GNU General Public License and";
432+" a copy of the GCC Runtime Library Exception along with this program;";
433+" see the files COPYING3 and COPYING.RUNTIME respectively. If not, see";
434+" <http://www.gnu.org/licenses/>. */";
435+""];
436+ patterns ();
437Index: gcc-4_5-branch/gcc/config/arm/arm-protos.h
438===================================================================
439--- gcc-4_5-branch.orig/gcc/config/arm/arm-protos.h
440+++ gcc-4_5-branch/gcc/config/arm/arm-protos.h
441@@ -100,14 +100,11 @@ extern int symbol_mentioned_p (rtx);
442 extern int label_mentioned_p (rtx);
443 extern RTX_CODE minmax_code (rtx);
444 extern int adjacent_mem_locations (rtx, rtx);
445-extern int load_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
446-extern const char *emit_ldm_seq (rtx *, int);
447-extern int store_multiple_sequence (rtx *, int, int *, int *, HOST_WIDE_INT *);
448-extern const char * emit_stm_seq (rtx *, int);
449-extern rtx arm_gen_load_multiple (int, int, rtx, int, int,
450- rtx, HOST_WIDE_INT *);
451-extern rtx arm_gen_store_multiple (int, int, rtx, int, int,
452- rtx, HOST_WIDE_INT *);
453+extern bool gen_ldm_seq (rtx *, int, bool);
454+extern bool gen_stm_seq (rtx *, int);
455+extern bool gen_const_stm_seq (rtx *, int);
456+extern rtx arm_gen_load_multiple (int *, int, rtx, int, rtx, HOST_WIDE_INT *);
457+extern rtx arm_gen_store_multiple (int *, int, rtx, int, rtx, HOST_WIDE_INT *);
458 extern int arm_gen_movmemqi (rtx *);
459 extern enum machine_mode arm_select_cc_mode (RTX_CODE, rtx, rtx);
460 extern enum machine_mode arm_select_dominance_cc_mode (rtx, rtx,
461Index: gcc-4_5-branch/gcc/config/arm/arm.c
462===================================================================
463--- gcc-4_5-branch.orig/gcc/config/arm/arm.c
464+++ gcc-4_5-branch/gcc/config/arm/arm.c
465@@ -753,6 +753,12 @@ static const char * const arm_condition_
466 "hi", "ls", "ge", "lt", "gt", "le", "al", "nv"
467 };
468
469+/* The register numbers in sequence, for passing to arm_gen_load_multiple. */
470+int arm_regs_in_sequence[] =
471+{
472+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
473+};
474+
475 #define ARM_LSL_NAME (TARGET_UNIFIED_ASM ? "lsl" : "asl")
476 #define streq(string1, string2) (strcmp (string1, string2) == 0)
477
478@@ -9680,24 +9686,125 @@ adjacent_mem_locations (rtx a, rtx b)
479 return 0;
480 }
481
482-int
483-load_multiple_sequence (rtx *operands, int nops, int *regs, int *base,
484- HOST_WIDE_INT *load_offset)
485+
486+/* Return true iff it would be profitable to turn a sequence of NOPS loads
487+ or stores (depending on IS_STORE) into a load-multiple or store-multiple
488+ instruction. ADD_OFFSET is nonzero if the base address register needs
489+ to be modified with an add instruction before we can use it. */
490+
491+static bool
492+multiple_operation_profitable_p (bool is_store ATTRIBUTE_UNUSED,
493+ int nops, HOST_WIDE_INT add_offset)
494+ {
495+ /* For ARM8,9 & StrongARM, 2 ldr instructions are faster than an ldm
496+ if the offset isn't small enough. The reason 2 ldrs are faster
497+ is because these ARMs are able to do more than one cache access
498+ in a single cycle. The ARM9 and StrongARM have Harvard caches,
499+ whilst the ARM8 has a double bandwidth cache. This means that
500+ these cores can do both an instruction fetch and a data fetch in
501+ a single cycle, so the trick of calculating the address into a
502+ scratch register (one of the result regs) and then doing a load
503+ multiple actually becomes slower (and no smaller in code size).
504+ That is the transformation
505+
506+ ldr rd1, [rbase + offset]
507+ ldr rd2, [rbase + offset + 4]
508+
509+ to
510+
511+ add rd1, rbase, offset
512+ ldmia rd1, {rd1, rd2}
513+
514+ produces worse code -- '3 cycles + any stalls on rd2' instead of
515+ '2 cycles + any stalls on rd2'. On ARMs with only one cache
516+ access per cycle, the first sequence could never complete in less
517+ than 6 cycles, whereas the ldm sequence would only take 5 and
518+ would make better use of sequential accesses if not hitting the
519+ cache.
520+
521+ We cheat here and test 'arm_ld_sched' which we currently know to
522+ only be true for the ARM8, ARM9 and StrongARM. If this ever
523+ changes, then the test below needs to be reworked. */
524+ if (nops == 2 && arm_ld_sched && add_offset != 0)
525+ return false;
526+
527+ return true;
528+}
529+
530+/* Subroutine of load_multiple_sequence and store_multiple_sequence.
531+ Given an array of UNSORTED_OFFSETS, of which there are NOPS, compute
532+ an array ORDER which describes the sequence to use when accessing the
533+ offsets that produces an ascending order. In this sequence, each
534+ offset must be larger by exactly 4 than the previous one. ORDER[0]
535+ must have been filled in with the lowest offset by the caller.
536+ If UNSORTED_REGS is nonnull, it is an array of register numbers that
537+ we use to verify that ORDER produces an ascending order of registers.
538+ Return true if it was possible to construct such an order, false if
539+ not. */
540+
541+static bool
542+compute_offset_order (int nops, HOST_WIDE_INT *unsorted_offsets, int *order,
543+ int *unsorted_regs)
544 {
545- int unsorted_regs[4];
546- HOST_WIDE_INT unsorted_offsets[4];
547- int order[4];
548- int base_reg = -1;
549 int i;
550+ for (i = 1; i < nops; i++)
551+ {
552+ int j;
553+
554+ order[i] = order[i - 1];
555+ for (j = 0; j < nops; j++)
556+ if (unsorted_offsets[j] == unsorted_offsets[order[i - 1]] + 4)
557+ {
558+ /* We must find exactly one offset that is higher than the
559+ previous one by 4. */
560+ if (order[i] != order[i - 1])
561+ return false;
562+ order[i] = j;
563+ }
564+ if (order[i] == order[i - 1])
565+ return false;
566+ /* The register numbers must be ascending. */
567+ if (unsorted_regs != NULL
568+ && unsorted_regs[order[i]] <= unsorted_regs[order[i - 1]])
569+ return false;
570+ }
571+ return true;
572+}
573+
574+/* Used to determine in a peephole whether a sequence of load
575+ instructions can be changed into a load-multiple instruction.
576+ NOPS is the number of separate load instructions we are examining. The
577+ first NOPS entries in OPERANDS are the destination registers, the
578+ next NOPS entries are memory operands. If this function is
579+ successful, *BASE is set to the common base register of the memory
580+ accesses; *LOAD_OFFSET is set to the first memory location's offset
581+ from that base register.
582+ REGS is an array filled in with the destination register numbers.
583+ SAVED_ORDER (if nonnull), is an array filled in with an order that maps
584+ insn numbers to to an ascending order of stores. If CHECK_REGS is true,
585+ the sequence of registers in REGS matches the loads from ascending memory
586+ locations, and the function verifies that the register numbers are
587+ themselves ascending. If CHECK_REGS is false, the register numbers
588+ are stored in the order they are found in the operands. */
589+static int
590+load_multiple_sequence (rtx *operands, int nops, int *regs, int *saved_order,
591+ int *base, HOST_WIDE_INT *load_offset, bool check_regs)
592+{
593+ int unsorted_regs[MAX_LDM_STM_OPS];
594+ HOST_WIDE_INT unsorted_offsets[MAX_LDM_STM_OPS];
595+ int order[MAX_LDM_STM_OPS];
596+ rtx base_reg_rtx = NULL;
597+ int base_reg = -1;
598+ int i, ldm_case;
599
600 if (low_irq_latency)
601 return 0;
602
603- /* Can only handle 2, 3, or 4 insns at present,
604- though could be easily extended if required. */
605- gcc_assert (nops >= 2 && nops <= 4);
606+ /* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be
607+ easily extended if required. */
608+ gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS);
609
610- memset (order, 0, 4 * sizeof (int));
611+ memset (order, 0, MAX_LDM_STM_OPS * sizeof (int));
612
613 /* Loop over the operands and check that the memory references are
614 suitable (i.e. immediate offsets from the same base register). At
615@@ -9735,32 +9842,30 @@ load_multiple_sequence (rtx *operands, i
616 if (i == 0)
617 {
618 base_reg = REGNO (reg);
619- unsorted_regs[0] = (GET_CODE (operands[i]) == REG
620- ? REGNO (operands[i])
621- : REGNO (SUBREG_REG (operands[i])));
622- order[0] = 0;
623- }
624- else
625- {
626- if (base_reg != (int) REGNO (reg))
627- /* Not addressed from the same base register. */
628+ base_reg_rtx = reg;
629+ if (TARGET_THUMB1 && base_reg > LAST_LO_REGNUM)
630 return 0;
631-
632- unsorted_regs[i] = (GET_CODE (operands[i]) == REG
633- ? REGNO (operands[i])
634- : REGNO (SUBREG_REG (operands[i])));
635- if (unsorted_regs[i] < unsorted_regs[order[0]])
636- order[0] = i;
637 }
638+ else if (base_reg != (int) REGNO (reg))
639+ /* Not addressed from the same base register. */
640+ return 0;
641+
642+ unsorted_regs[i] = (GET_CODE (operands[i]) == REG
643+ ? REGNO (operands[i])
644+ : REGNO (SUBREG_REG (operands[i])));
645
646 /* If it isn't an integer register, or if it overwrites the
647 base register but isn't the last insn in the list, then
648 we can't do this. */
649- if (unsorted_regs[i] < 0 || unsorted_regs[i] > 14
650+ if (unsorted_regs[i] < 0
651+ || (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM)
652+ || unsorted_regs[i] > 14
653 || (i != nops - 1 && unsorted_regs[i] == base_reg))
654 return 0;
655
656 unsorted_offsets[i] = INTVAL (offset);
657+ if (i == 0 || unsorted_offsets[i] < unsorted_offsets[order[0]])
658+ order[0] = i;
659 }
660 else
661 /* Not a suitable memory address. */
662@@ -9769,167 +9874,90 @@ load_multiple_sequence (rtx *operands, i
663
664 /* All the useful information has now been extracted from the
665 operands into unsorted_regs and unsorted_offsets; additionally,
666- order[0] has been set to the lowest numbered register in the
667- list. Sort the registers into order, and check that the memory
668- offsets are ascending and adjacent. */
669-
670- for (i = 1; i < nops; i++)
671- {
672- int j;
673-
674- order[i] = order[i - 1];
675- for (j = 0; j < nops; j++)
676- if (unsorted_regs[j] > unsorted_regs[order[i - 1]]
677- && (order[i] == order[i - 1]
678- || unsorted_regs[j] < unsorted_regs[order[i]]))
679- order[i] = j;
680-
681- /* Have we found a suitable register? if not, one must be used more
682- than once. */
683- if (order[i] == order[i - 1])
684- return 0;
685+ order[0] has been set to the lowest offset in the list. Sort
686+ the offsets into order, verifying that they are adjacent, and
687+ check that the register numbers are ascending. */
688+ if (!compute_offset_order (nops, unsorted_offsets, order,
689+ check_regs ? unsorted_regs : NULL))
690+ return 0;
691
692- /* Is the memory address adjacent and ascending? */
693- if (unsorted_offsets[order[i]] != unsorted_offsets[order[i - 1]] + 4)
694- return 0;
695- }
696+ if (saved_order)
697+ memcpy (saved_order, order, sizeof order);
698
699 if (base)
700 {
701 *base = base_reg;
702
703 for (i = 0; i < nops; i++)
704- regs[i] = unsorted_regs[order[i]];
705+ regs[i] = unsorted_regs[check_regs ? order[i] : i];
706
707 *load_offset = unsorted_offsets[order[0]];
708 }
709
710- if (unsorted_offsets[order[0]] == 0)
711- return 1; /* ldmia */
712-
713- if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
714- return 2; /* ldmib */
715-
716- if (TARGET_ARM && unsorted_offsets[order[nops - 1]] == 0)
717- return 3; /* ldmda */
718-
719- if (unsorted_offsets[order[nops - 1]] == -4)
720- return 4; /* ldmdb */
721-
722- /* For ARM8,9 & StrongARM, 2 ldr instructions are faster than an ldm
723- if the offset isn't small enough. The reason 2 ldrs are faster
724- is because these ARMs are able to do more than one cache access
725- in a single cycle. The ARM9 and StrongARM have Harvard caches,
726- whilst the ARM8 has a double bandwidth cache. This means that
727- these cores can do both an instruction fetch and a data fetch in
728- a single cycle, so the trick of calculating the address into a
729- scratch register (one of the result regs) and then doing a load
730- multiple actually becomes slower (and no smaller in code size).
731- That is the transformation
732-
733- ldr rd1, [rbase + offset]
734- ldr rd2, [rbase + offset + 4]
735-
736- to
737-
738- add rd1, rbase, offset
739- ldmia rd1, {rd1, rd2}
740-
741- produces worse code -- '3 cycles + any stalls on rd2' instead of
742- '2 cycles + any stalls on rd2'. On ARMs with only one cache
743- access per cycle, the first sequence could never complete in less
744- than 6 cycles, whereas the ldm sequence would only take 5 and
745- would make better use of sequential accesses if not hitting the
746- cache.
747-
748- We cheat here and test 'arm_ld_sched' which we currently know to
749- only be true for the ARM8, ARM9 and StrongARM. If this ever
750- changes, then the test below needs to be reworked. */
751- if (nops == 2 && arm_ld_sched)
752+ if (TARGET_THUMB1
753+ && !peep2_reg_dead_p (nops, base_reg_rtx))
754 return 0;
755
756- /* Can't do it without setting up the offset, only do this if it takes
757- no more than one insn. */
758- return (const_ok_for_arm (unsorted_offsets[order[0]])
759- || const_ok_for_arm (-unsorted_offsets[order[0]])) ? 5 : 0;
760-}
761-
762-const char *
763-emit_ldm_seq (rtx *operands, int nops)
764-{
765- int regs[4];
766- int base_reg;
767- HOST_WIDE_INT offset;
768- char buf[100];
769- int i;
770-
771- switch (load_multiple_sequence (operands, nops, regs, &base_reg, &offset))
772- {
773- case 1:
774- strcpy (buf, "ldm%(ia%)\t");
775- break;
776-
777- case 2:
778- strcpy (buf, "ldm%(ib%)\t");
779- break;
780-
781- case 3:
782- strcpy (buf, "ldm%(da%)\t");
783- break;
784-
785- case 4:
786- strcpy (buf, "ldm%(db%)\t");
787- break;
788-
789- case 5:
790- if (offset >= 0)
791- sprintf (buf, "add%%?\t%s%s, %s%s, #%ld", REGISTER_PREFIX,
792- reg_names[regs[0]], REGISTER_PREFIX, reg_names[base_reg],
793- (long) offset);
794- else
795- sprintf (buf, "sub%%?\t%s%s, %s%s, #%ld", REGISTER_PREFIX,
796- reg_names[regs[0]], REGISTER_PREFIX, reg_names[base_reg],
797- (long) -offset);
798- output_asm_insn (buf, operands);
799- base_reg = regs[0];
800- strcpy (buf, "ldm%(ia%)\t");
801- break;
802-
803- default:
804- gcc_unreachable ();
805- }
806-
807- sprintf (buf + strlen (buf), "%s%s, {%s%s", REGISTER_PREFIX,
808- reg_names[base_reg], REGISTER_PREFIX, reg_names[regs[0]]);
809-
810- for (i = 1; i < nops; i++)
811- sprintf (buf + strlen (buf), ", %s%s", REGISTER_PREFIX,
812- reg_names[regs[i]]);
813+ if (unsorted_offsets[order[0]] == 0)
814+ ldm_case = 1; /* ldmia */
815+ else if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
816+ ldm_case = 2; /* ldmib */
817+ else if (TARGET_ARM && unsorted_offsets[order[nops - 1]] == 0)
818+ ldm_case = 3; /* ldmda */
819+ else if (TARGET_32BIT && unsorted_offsets[order[nops - 1]] == -4)
820+ ldm_case = 4; /* ldmdb */
821+ else if (const_ok_for_arm (unsorted_offsets[order[0]])
822+ || const_ok_for_arm (-unsorted_offsets[order[0]]))
823+ ldm_case = 5;
824+ else
825+ return 0;
826
827- strcat (buf, "}\t%@ phole ldm");
828+ if (!multiple_operation_profitable_p (false, nops,
829+ ldm_case == 5
830+ ? unsorted_offsets[order[0]] : 0))
831+ return 0;
832
833- output_asm_insn (buf, operands);
834- return "";
835+ return ldm_case;
836 }
837
838-int
839-store_multiple_sequence (rtx *operands, int nops, int *regs, int *base,
840- HOST_WIDE_INT * load_offset)
841-{
842- int unsorted_regs[4];
843- HOST_WIDE_INT unsorted_offsets[4];
844- int order[4];
845+/* Used to determine in a peephole whether a sequence of store instructions can
846+ be changed into a store-multiple instruction.
847+ NOPS is the number of separate store instructions we are examining.
848+ NOPS_TOTAL is the total number of instructions recognized by the peephole
849+ pattern.
850+ The first NOPS entries in OPERANDS are the source registers, the next
851+ NOPS entries are memory operands. If this function is successful, *BASE is
852+ set to the common base register of the memory accesses; *LOAD_OFFSET is set
853+ to the first memory location's offset from that base register. REGS is an
854+ array filled in with the source register numbers, REG_RTXS (if nonnull) is
855+ likewise filled with the corresponding rtx's.
856+ SAVED_ORDER (if nonnull), is an array filled in with an order that maps insn
857+ numbers to to an ascending order of stores.
858+ If CHECK_REGS is true, the sequence of registers in *REGS matches the stores
859+ from ascending memory locations, and the function verifies that the register
860+ numbers are themselves ascending. If CHECK_REGS is false, the register
861+ numbers are stored in the order they are found in the operands. */
862+static int
863+store_multiple_sequence (rtx *operands, int nops, int nops_total,
864+ int *regs, rtx *reg_rtxs, int *saved_order, int *base,
865+ HOST_WIDE_INT *load_offset, bool check_regs)
866+{
867+ int unsorted_regs[MAX_LDM_STM_OPS];
868+ rtx unsorted_reg_rtxs[MAX_LDM_STM_OPS];
869+ HOST_WIDE_INT unsorted_offsets[MAX_LDM_STM_OPS];
870+ int order[MAX_LDM_STM_OPS];
871 int base_reg = -1;
872- int i;
873+ rtx base_reg_rtx = NULL;
874+ int i, stm_case;
875
876 if (low_irq_latency)
877 return 0;
878
879- /* Can only handle 2, 3, or 4 insns at present, though could be easily
880- extended if required. */
881- gcc_assert (nops >= 2 && nops <= 4);
882+ /* Can only handle up to MAX_LDM_STM_OPS insns at present, though could be
883+ easily extended if required. */
884+ gcc_assert (nops >= 2 && nops <= MAX_LDM_STM_OPS);
885
886- memset (order, 0, 4 * sizeof (int));
887+ memset (order, 0, MAX_LDM_STM_OPS * sizeof (int));
888
889 /* Loop over the operands and check that the memory references are
890 suitable (i.e. immediate offsets from the same base register). At
891@@ -9964,32 +9992,32 @@ store_multiple_sequence (rtx *operands,
892 && (GET_CODE (offset = XEXP (XEXP (operands[nops + i], 0), 1))
893 == CONST_INT)))
894 {
895+ unsorted_reg_rtxs[i] = (GET_CODE (operands[i]) == REG
896+ ? operands[i] : SUBREG_REG (operands[i]));
897+ unsorted_regs[i] = REGNO (unsorted_reg_rtxs[i]);
898+
899 if (i == 0)
900 {
901 base_reg = REGNO (reg);
902- unsorted_regs[0] = (GET_CODE (operands[i]) == REG
903- ? REGNO (operands[i])
904- : REGNO (SUBREG_REG (operands[i])));
905- order[0] = 0;
906- }
907- else
908- {
909- if (base_reg != (int) REGNO (reg))
910- /* Not addressed from the same base register. */
911+ base_reg_rtx = reg;
912+ if (TARGET_THUMB1 && base_reg > LAST_LO_REGNUM)
913 return 0;
914-
915- unsorted_regs[i] = (GET_CODE (operands[i]) == REG
916- ? REGNO (operands[i])
917- : REGNO (SUBREG_REG (operands[i])));
918- if (unsorted_regs[i] < unsorted_regs[order[0]])
919- order[0] = i;
920 }
921+ else if (base_reg != (int) REGNO (reg))
922+ /* Not addressed from the same base register. */
923+ return 0;
924
925 /* If it isn't an integer register, then we can't do this. */
926- if (unsorted_regs[i] < 0 || unsorted_regs[i] > 14)
927+ if (unsorted_regs[i] < 0
928+ || (TARGET_THUMB1 && unsorted_regs[i] > LAST_LO_REGNUM)
929+ || (TARGET_THUMB2 && unsorted_regs[i] == base_reg)
930+ || (TARGET_THUMB2 && unsorted_regs[i] == SP_REGNUM)
931+ || unsorted_regs[i] > 14)
932 return 0;
933
934 unsorted_offsets[i] = INTVAL (offset);
935+ if (i == 0 || unsorted_offsets[i] < unsorted_offsets[order[0]])
936+ order[0] = i;
937 }
938 else
939 /* Not a suitable memory address. */
940@@ -9998,111 +10026,65 @@ store_multiple_sequence (rtx *operands,
941
942 /* All the useful information has now been extracted from the
943 operands into unsorted_regs and unsorted_offsets; additionally,
944- order[0] has been set to the lowest numbered register in the
945- list. Sort the registers into order, and check that the memory
946- offsets are ascending and adjacent. */
947-
948- for (i = 1; i < nops; i++)
949- {
950- int j;
951-
952- order[i] = order[i - 1];
953- for (j = 0; j < nops; j++)
954- if (unsorted_regs[j] > unsorted_regs[order[i - 1]]
955- && (order[i] == order[i - 1]
956- || unsorted_regs[j] < unsorted_regs[order[i]]))
957- order[i] = j;
958-
959- /* Have we found a suitable register? if not, one must be used more
960- than once. */
961- if (order[i] == order[i - 1])
962- return 0;
963+ order[0] has been set to the lowest offset in the list. Sort
964+ the offsets into order, verifying that they are adjacent, and
965+ check that the register numbers are ascending. */
966+ if (!compute_offset_order (nops, unsorted_offsets, order,
967+ check_regs ? unsorted_regs : NULL))
968+ return 0;
969
970- /* Is the memory address adjacent and ascending? */
971- if (unsorted_offsets[order[i]] != unsorted_offsets[order[i - 1]] + 4)
972- return 0;
973- }
974+ if (saved_order)
975+ memcpy (saved_order, order, sizeof order);
976
977 if (base)
978 {
979 *base = base_reg;
980
981 for (i = 0; i < nops; i++)
982- regs[i] = unsorted_regs[order[i]];
983+ {
984+ regs[i] = unsorted_regs[check_regs ? order[i] : i];
985+ if (reg_rtxs)
986+ reg_rtxs[i] = unsorted_reg_rtxs[check_regs ? order[i] : i];
987+ }
988
989 *load_offset = unsorted_offsets[order[0]];
990 }
991
992- if (unsorted_offsets[order[0]] == 0)
993- return 1; /* stmia */
994-
995- if (unsorted_offsets[order[0]] == 4)
996- return 2; /* stmib */
997-
998- if (unsorted_offsets[order[nops - 1]] == 0)
999- return 3; /* stmda */
1000-
1001- if (unsorted_offsets[order[nops - 1]] == -4)
1002- return 4; /* stmdb */
1003-
1004- return 0;
1005-}
1006-
1007-const char *
1008-emit_stm_seq (rtx *operands, int nops)
1009-{
1010- int regs[4];
1011- int base_reg;
1012- HOST_WIDE_INT offset;
1013- char buf[100];
1014- int i;
1015-
1016- switch (store_multiple_sequence (operands, nops, regs, &base_reg, &offset))
1017- {
1018- case 1:
1019- strcpy (buf, "stm%(ia%)\t");
1020- break;
1021-
1022- case 2:
1023- strcpy (buf, "stm%(ib%)\t");
1024- break;
1025-
1026- case 3:
1027- strcpy (buf, "stm%(da%)\t");
1028- break;
1029-
1030- case 4:
1031- strcpy (buf, "stm%(db%)\t");
1032- break;
1033-
1034- default:
1035- gcc_unreachable ();
1036- }
1037-
1038- sprintf (buf + strlen (buf), "%s%s, {%s%s", REGISTER_PREFIX,
1039- reg_names[base_reg], REGISTER_PREFIX, reg_names[regs[0]]);
1040+ if (TARGET_THUMB1
1041+ && !peep2_reg_dead_p (nops_total, base_reg_rtx))
1042+ return 0;
1043
1044- for (i = 1; i < nops; i++)
1045- sprintf (buf + strlen (buf), ", %s%s", REGISTER_PREFIX,
1046- reg_names[regs[i]]);
1047+ if (unsorted_offsets[order[0]] == 0)
1048+ stm_case = 1; /* stmia */
1049+ else if (TARGET_ARM && unsorted_offsets[order[0]] == 4)
1050+ stm_case = 2; /* stmib */
1051+ else if (TARGET_ARM && unsorted_offsets[order[nops - 1]] == 0)
1052+ stm_case = 3; /* stmda */
1053+ else if (TARGET_32BIT && unsorted_offsets[order[nops - 1]] == -4)
1054+ stm_case = 4; /* stmdb */
1055+ else
1056+ return 0;
1057
1058- strcat (buf, "}\t%@ phole stm");
1059+ if (!multiple_operation_profitable_p (false, nops, 0))
1060+ return 0;
1061
1062- output_asm_insn (buf, operands);
1063- return "";
1064+ return stm_case;
1065 }
1066
1067 /* Routines for use in generating RTL. */
1068
1069-rtx
1070-arm_gen_load_multiple (int base_regno, int count, rtx from, int up,
1071- int write_back, rtx basemem, HOST_WIDE_INT *offsetp)
1072+/* Generate a load-multiple instruction. COUNT is the number of loads in
1073+ the instruction; REGS and MEMS are arrays containing the operands.
1074+ BASEREG is the base register to be used in addressing the memory operands.
1075+ WBACK_OFFSET is nonzero if the instruction should update the base
1076+ register. */
1077+
1078+static rtx
1079+arm_gen_load_multiple_1 (int count, int *regs, rtx *mems, rtx basereg,
1080+ HOST_WIDE_INT wback_offset)
1081 {
1082- HOST_WIDE_INT offset = *offsetp;
1083 int i = 0, j;
1084 rtx result;
1085- int sign = up ? 1 : -1;
1086- rtx mem, addr;
1087
1088 /* XScale has load-store double instructions, but they have stricter
1089 alignment requirements than load-store multiple, so we cannot
1090@@ -10139,18 +10121,10 @@ arm_gen_load_multiple (int base_regno, i
1091 start_sequence ();
1092
1093 for (i = 0; i < count; i++)
1094- {
1095- addr = plus_constant (from, i * 4 * sign);
1096- mem = adjust_automodify_address (basemem, SImode, addr, offset);
1097- emit_move_insn (gen_rtx_REG (SImode, base_regno + i), mem);
1098- offset += 4 * sign;
1099- }
1100+ emit_move_insn (gen_rtx_REG (SImode, regs[i]), mems[i]);
1101
1102- if (write_back)
1103- {
1104- emit_move_insn (from, plus_constant (from, count * 4 * sign));
1105- *offsetp = offset;
1106- }
1107+ if (wback_offset != 0)
1108+ emit_move_insn (basereg, plus_constant (basereg, wback_offset));
1109
1110 seq = get_insns ();
1111 end_sequence ();
1112@@ -10159,41 +10133,40 @@ arm_gen_load_multiple (int base_regno, i
1113 }
1114
1115 result = gen_rtx_PARALLEL (VOIDmode,
1116- rtvec_alloc (count + (write_back ? 1 : 0)));
1117- if (write_back)
1118+ rtvec_alloc (count + (wback_offset != 0 ? 1 : 0)));
1119+ if (wback_offset != 0)
1120 {
1121 XVECEXP (result, 0, 0)
1122- = gen_rtx_SET (VOIDmode, from, plus_constant (from, count * 4 * sign));
1123+ = gen_rtx_SET (VOIDmode, basereg,
1124+ plus_constant (basereg, wback_offset));
1125 i = 1;
1126 count++;
1127 }
1128
1129 for (j = 0; i < count; i++, j++)
1130- {
1131- addr = plus_constant (from, j * 4 * sign);
1132- mem = adjust_automodify_address_nv (basemem, SImode, addr, offset);
1133- XVECEXP (result, 0, i)
1134- = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, base_regno + j), mem);
1135- offset += 4 * sign;
1136- }
1137-
1138- if (write_back)
1139- *offsetp = offset;
1140+ XVECEXP (result, 0, i)
1141+ = gen_rtx_SET (VOIDmode, gen_rtx_REG (SImode, regs[j]), mems[j]);
1142
1143 return result;
1144 }
1145
1146-rtx
1147-arm_gen_store_multiple (int base_regno, int count, rtx to, int up,
1148- int write_back, rtx basemem, HOST_WIDE_INT *offsetp)
1149+/* Generate a store-multiple instruction. COUNT is the number of stores in
1150+ the instruction; REGS and MEMS are arrays containing the operands.
1151+ BASEREG is the base register to be used in addressing the memory operands.
1152+ WBACK_OFFSET is nonzero if the instruction should update the base
1153+ register. */
1154+
1155+static rtx
1156+arm_gen_store_multiple_1 (int count, int *regs, rtx *mems, rtx basereg,
1157+ HOST_WIDE_INT wback_offset)
1158 {
1159- HOST_WIDE_INT offset = *offsetp;
1160 int i = 0, j;
1161 rtx result;
1162- int sign = up ? 1 : -1;
1163- rtx mem, addr;
1164
1165- /* See arm_gen_load_multiple for discussion of
1166+ if (GET_CODE (basereg) == PLUS)
1167+ basereg = XEXP (basereg, 0);
1168+
1169+ /* See arm_gen_load_multiple_1 for discussion of
1170 the pros/cons of ldm/stm usage for XScale. */
1171 if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
1172 {
1173@@ -10202,18 +10175,10 @@ arm_gen_store_multiple (int base_regno,
1174 start_sequence ();
1175
1176 for (i = 0; i < count; i++)
1177- {
1178- addr = plus_constant (to, i * 4 * sign);
1179- mem = adjust_automodify_address (basemem, SImode, addr, offset);
1180- emit_move_insn (mem, gen_rtx_REG (SImode, base_regno + i));
1181- offset += 4 * sign;
1182- }
1183+ emit_move_insn (mems[i], gen_rtx_REG (SImode, regs[i]));
1184
1185- if (write_back)
1186- {
1187- emit_move_insn (to, plus_constant (to, count * 4 * sign));
1188- *offsetp = offset;
1189- }
1190+ if (wback_offset != 0)
1191+ emit_move_insn (basereg, plus_constant (basereg, wback_offset));
1192
1193 seq = get_insns ();
1194 end_sequence ();
1195@@ -10222,29 +10187,319 @@ arm_gen_store_multiple (int base_regno,
1196 }
1197
1198 result = gen_rtx_PARALLEL (VOIDmode,
1199- rtvec_alloc (count + (write_back ? 1 : 0)));
1200- if (write_back)
1201+ rtvec_alloc (count + (wback_offset != 0 ? 1 : 0)));
1202+ if (wback_offset != 0)
1203 {
1204 XVECEXP (result, 0, 0)
1205- = gen_rtx_SET (VOIDmode, to,
1206- plus_constant (to, count * 4 * sign));
1207+ = gen_rtx_SET (VOIDmode, basereg,
1208+ plus_constant (basereg, wback_offset));
1209 i = 1;
1210 count++;
1211 }
1212
1213 for (j = 0; i < count; i++, j++)
1214+ XVECEXP (result, 0, i)
1215+ = gen_rtx_SET (VOIDmode, mems[j], gen_rtx_REG (SImode, regs[j]));
1216+
1217+ return result;
1218+}
1219+
1220+/* Generate either a load-multiple or a store-multiple instruction. This
1221+ function can be used in situations where we can start with a single MEM
1222+ rtx and adjust its address upwards.
1223+ COUNT is the number of operations in the instruction, not counting a
1224+ possible update of the base register. REGS is an array containing the
1225+ register operands.
1226+ BASEREG is the base register to be used in addressing the memory operands,
1227+ which are constructed from BASEMEM.
1228+ WRITE_BACK specifies whether the generated instruction should include an
1229+ update of the base register.
1230+ OFFSETP is used to pass an offset to and from this function; this offset
1231+ is not used when constructing the address (instead BASEMEM should have an
1232+ appropriate offset in its address), it is used only for setting
1233+ MEM_OFFSET. It is updated only if WRITE_BACK is true.*/
1234+
1235+static rtx
1236+arm_gen_multiple_op (bool is_load, int *regs, int count, rtx basereg,
1237+ bool write_back, rtx basemem, HOST_WIDE_INT *offsetp)
1238+{
1239+ rtx mems[MAX_LDM_STM_OPS];
1240+ HOST_WIDE_INT offset = *offsetp;
1241+ int i;
1242+
1243+ gcc_assert (count <= MAX_LDM_STM_OPS);
1244+
1245+ if (GET_CODE (basereg) == PLUS)
1246+ basereg = XEXP (basereg, 0);
1247+
1248+ for (i = 0; i < count; i++)
1249 {
1250- addr = plus_constant (to, j * 4 * sign);
1251- mem = adjust_automodify_address_nv (basemem, SImode, addr, offset);
1252- XVECEXP (result, 0, i)
1253- = gen_rtx_SET (VOIDmode, mem, gen_rtx_REG (SImode, base_regno + j));
1254- offset += 4 * sign;
1255+ rtx addr = plus_constant (basereg, i * 4);
1256+ mems[i] = adjust_automodify_address_nv (basemem, SImode, addr, offset);
1257+ offset += 4;
1258 }
1259
1260 if (write_back)
1261 *offsetp = offset;
1262
1263- return result;
1264+ if (is_load)
1265+ return arm_gen_load_multiple_1 (count, regs, mems, basereg,
1266+ write_back ? 4 * count : 0);
1267+ else
1268+ return arm_gen_store_multiple_1 (count, regs, mems, basereg,
1269+ write_back ? 4 * count : 0);
1270+}
1271+
1272+rtx
1273+arm_gen_load_multiple (int *regs, int count, rtx basereg, int write_back,
1274+ rtx basemem, HOST_WIDE_INT *offsetp)
1275+{
1276+ return arm_gen_multiple_op (TRUE, regs, count, basereg, write_back, basemem,
1277+ offsetp);
1278+}
1279+
1280+rtx
1281+arm_gen_store_multiple (int *regs, int count, rtx basereg, int write_back,
1282+ rtx basemem, HOST_WIDE_INT *offsetp)
1283+{
1284+ return arm_gen_multiple_op (FALSE, regs, count, basereg, write_back, basemem,
1285+ offsetp);
1286+}
1287+
1288+/* Called from a peephole2 expander to turn a sequence of loads into an
1289+ LDM instruction. OPERANDS are the operands found by the peephole matcher;
1290+ NOPS indicates how many separate loads we are trying to combine. SORT_REGS
1291+ is true if we can reorder the registers because they are used commutatively
1292+ subsequently.
1293+ Returns true iff we could generate a new instruction. */
1294+
1295+bool
1296+gen_ldm_seq (rtx *operands, int nops, bool sort_regs)
1297+{
1298+ int regs[MAX_LDM_STM_OPS], mem_order[MAX_LDM_STM_OPS];
1299+ rtx mems[MAX_LDM_STM_OPS];
1300+ int i, j, base_reg;
1301+ rtx base_reg_rtx;
1302+ HOST_WIDE_INT offset;
1303+ int write_back = FALSE;
1304+ int ldm_case;
1305+ rtx addr;
1306+
1307+ ldm_case = load_multiple_sequence (operands, nops, regs, mem_order,
1308+ &base_reg, &offset, !sort_regs);
1309+
1310+ if (ldm_case == 0)
1311+ return false;
1312+
1313+ if (sort_regs)
1314+ for (i = 0; i < nops - 1; i++)
1315+ for (j = i + 1; j < nops; j++)
1316+ if (regs[i] > regs[j])
1317+ {
1318+ int t = regs[i];
1319+ regs[i] = regs[j];
1320+ regs[j] = t;
1321+ }
1322+ base_reg_rtx = gen_rtx_REG (Pmode, base_reg);
1323+
1324+ if (TARGET_THUMB1)
1325+ {
1326+ gcc_assert (peep2_reg_dead_p (nops, base_reg_rtx));
1327+ gcc_assert (ldm_case == 1 || ldm_case == 5);
1328+ write_back = TRUE;
1329+ }
1330+
1331+ if (ldm_case == 5)
1332+ {
1333+ rtx newbase = TARGET_THUMB1 ? base_reg_rtx : gen_rtx_REG (SImode, regs[0]);
1334+ emit_insn (gen_addsi3 (newbase, base_reg_rtx, GEN_INT (offset)));
1335+ offset = 0;
1336+ if (!TARGET_THUMB1)
1337+ {
1338+ base_reg = regs[0];
1339+ base_reg_rtx = newbase;
1340+ }
1341+ }
1342+
1343+ for (i = 0; i < nops; i++)
1344+ {
1345+ addr = plus_constant (base_reg_rtx, offset + i * 4);
1346+ mems[i] = adjust_automodify_address_nv (operands[nops + mem_order[i]],
1347+ SImode, addr, 0);
1348+ }
1349+ emit_insn (arm_gen_load_multiple_1 (nops, regs, mems, base_reg_rtx,
1350+ write_back ? offset + i * 4 : 0));
1351+ return true;
1352+}
1353+
1354+/* Called from a peephole2 expander to turn a sequence of stores into an
1355+ STM instruction. OPERANDS are the operands found by the peephole matcher;
1356+ NOPS indicates how many separate stores we are trying to combine.
1357+ Returns true iff we could generate a new instruction. */
1358+
1359+bool
1360+gen_stm_seq (rtx *operands, int nops)
1361+{
1362+ int i;
1363+ int regs[MAX_LDM_STM_OPS], mem_order[MAX_LDM_STM_OPS];
1364+ rtx mems[MAX_LDM_STM_OPS];
1365+ int base_reg;
1366+ rtx base_reg_rtx;
1367+ HOST_WIDE_INT offset;
1368+ int write_back = FALSE;
1369+ int stm_case;
1370+ rtx addr;
1371+ bool base_reg_dies;
1372+
1373+ stm_case = store_multiple_sequence (operands, nops, nops, regs, NULL,
1374+ mem_order, &base_reg, &offset, true);
1375+
1376+ if (stm_case == 0)
1377+ return false;
1378+
1379+ base_reg_rtx = gen_rtx_REG (Pmode, base_reg);
1380+
1381+ base_reg_dies = peep2_reg_dead_p (nops, base_reg_rtx);
1382+ if (TARGET_THUMB1)
1383+ {
1384+ gcc_assert (base_reg_dies);
1385+ write_back = TRUE;
1386+ }
1387+
1388+ if (stm_case == 5)
1389+ {
1390+ gcc_assert (base_reg_dies);
1391+ emit_insn (gen_addsi3 (base_reg_rtx, base_reg_rtx, GEN_INT (offset)));
1392+ offset = 0;
1393+ }
1394+
1395+ addr = plus_constant (base_reg_rtx, offset);
1396+
1397+ for (i = 0; i < nops; i++)
1398+ {
1399+ addr = plus_constant (base_reg_rtx, offset + i * 4);
1400+ mems[i] = adjust_automodify_address_nv (operands[nops + mem_order[i]],
1401+ SImode, addr, 0);
1402+ }
1403+ emit_insn (arm_gen_store_multiple_1 (nops, regs, mems, base_reg_rtx,
1404+ write_back ? offset + i * 4 : 0));
1405+ return true;
1406+}
1407+
1408+/* Called from a peephole2 expander to turn a sequence of stores that are
1409+ preceded by constant loads into an STM instruction. OPERANDS are the
1410+ operands found by the peephole matcher; NOPS indicates how many
1411+ separate stores we are trying to combine; there are 2 * NOPS
1412+ instructions in the peephole.
1413+ Returns true iff we could generate a new instruction. */
1414+
1415+bool
1416+gen_const_stm_seq (rtx *operands, int nops)
1417+{
1418+ int regs[MAX_LDM_STM_OPS], sorted_regs[MAX_LDM_STM_OPS];
1419+ int reg_order[MAX_LDM_STM_OPS], mem_order[MAX_LDM_STM_OPS];
1420+ rtx reg_rtxs[MAX_LDM_STM_OPS], orig_reg_rtxs[MAX_LDM_STM_OPS];
1421+ rtx mems[MAX_LDM_STM_OPS];
1422+ int base_reg;
1423+ rtx base_reg_rtx;
1424+ HOST_WIDE_INT offset;
1425+ int write_back = FALSE;
1426+ int stm_case;
1427+ rtx addr;
1428+ bool base_reg_dies;
1429+ int i, j;
1430+ HARD_REG_SET allocated;
1431+
1432+ stm_case = store_multiple_sequence (operands, nops, 2 * nops, regs, reg_rtxs,
1433+ mem_order, &base_reg, &offset, false);
1434+
1435+ if (stm_case == 0)
1436+ return false;
1437+
1438+ memcpy (orig_reg_rtxs, reg_rtxs, sizeof orig_reg_rtxs);
1439+
1440+ /* If the same register is used more than once, try to find a free
1441+ register. */
1442+ CLEAR_HARD_REG_SET (allocated);
1443+ for (i = 0; i < nops; i++)
1444+ {
1445+ for (j = i + 1; j < nops; j++)
1446+ if (regs[i] == regs[j])
1447+ {
1448+ rtx t = peep2_find_free_register (0, nops * 2,
1449+ TARGET_THUMB1 ? "l" : "r",
1450+ SImode, &allocated);
1451+ if (t == NULL_RTX)
1452+ return false;
1453+ reg_rtxs[i] = t;
1454+ regs[i] = REGNO (t);
1455+ }
1456+ }
1457+
1458+ /* Compute an ordering that maps the register numbers to an ascending
1459+ sequence. */
1460+ reg_order[0] = 0;
1461+ for (i = 0; i < nops; i++)
1462+ if (regs[i] < regs[reg_order[0]])
1463+ reg_order[0] = i;
1464+
1465+ for (i = 1; i < nops; i++)
1466+ {
1467+ int this_order = reg_order[i - 1];
1468+ for (j = 0; j < nops; j++)
1469+ if (regs[j] > regs[reg_order[i - 1]]
1470+ && (this_order == reg_order[i - 1]
1471+ || regs[j] < regs[this_order]))
1472+ this_order = j;
1473+ reg_order[i] = this_order;
1474+ }
1475+
1476+ /* Ensure that registers that must be live after the instruction end
1477+ up with the correct value. */
1478+ for (i = 0; i < nops; i++)
1479+ {
1480+ int this_order = reg_order[i];
1481+ if ((this_order != mem_order[i]
1482+ || orig_reg_rtxs[this_order] != reg_rtxs[this_order])
1483+ && !peep2_reg_dead_p (nops * 2, orig_reg_rtxs[this_order]))
1484+ return false;
1485+ }
1486+
1487+ /* Load the constants. */
1488+ for (i = 0; i < nops; i++)
1489+ {
1490+ rtx op = operands[2 * nops + mem_order[i]];
1491+ sorted_regs[i] = regs[reg_order[i]];
1492+ emit_move_insn (reg_rtxs[reg_order[i]], op);
1493+ }
1494+
1495+ base_reg_rtx = gen_rtx_REG (Pmode, base_reg);
1496+
1497+ base_reg_dies = peep2_reg_dead_p (nops * 2, base_reg_rtx);
1498+ if (TARGET_THUMB1)
1499+ {
1500+ gcc_assert (base_reg_dies);
1501+ write_back = TRUE;
1502+ }
1503+
1504+ if (stm_case == 5)
1505+ {
1506+ gcc_assert (base_reg_dies);
1507+ emit_insn (gen_addsi3 (base_reg_rtx, base_reg_rtx, GEN_INT (offset)));
1508+ offset = 0;
1509+ }
1510+
1511+ addr = plus_constant (base_reg_rtx, offset);
1512+
1513+ for (i = 0; i < nops; i++)
1514+ {
1515+ addr = plus_constant (base_reg_rtx, offset + i * 4);
1516+ mems[i] = adjust_automodify_address_nv (operands[nops + mem_order[i]],
1517+ SImode, addr, 0);
1518+ }
1519+ emit_insn (arm_gen_store_multiple_1 (nops, sorted_regs, mems, base_reg_rtx,
1520+ write_back ? offset + i * 4 : 0));
1521+ return true;
1522 }
1523
1524 int
1525@@ -10280,20 +10535,21 @@ arm_gen_movmemqi (rtx *operands)
1526 for (i = 0; in_words_to_go >= 2; i+=4)
1527 {
1528 if (in_words_to_go > 4)
1529- emit_insn (arm_gen_load_multiple (0, 4, src, TRUE, TRUE,
1530- srcbase, &srcoffset));
1531+ emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, 4, src,
1532+ TRUE, srcbase, &srcoffset));
1533 else
1534- emit_insn (arm_gen_load_multiple (0, in_words_to_go, src, TRUE,
1535- FALSE, srcbase, &srcoffset));
1536+ emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, in_words_to_go,
1537+ src, FALSE, srcbase,
1538+ &srcoffset));
1539
1540 if (out_words_to_go)
1541 {
1542 if (out_words_to_go > 4)
1543- emit_insn (arm_gen_store_multiple (0, 4, dst, TRUE, TRUE,
1544- dstbase, &dstoffset));
1545+ emit_insn (arm_gen_store_multiple (arm_regs_in_sequence, 4, dst,
1546+ TRUE, dstbase, &dstoffset));
1547 else if (out_words_to_go != 1)
1548- emit_insn (arm_gen_store_multiple (0, out_words_to_go,
1549- dst, TRUE,
1550+ emit_insn (arm_gen_store_multiple (arm_regs_in_sequence,
1551+ out_words_to_go, dst,
1552 (last_bytes == 0
1553 ? FALSE : TRUE),
1554 dstbase, &dstoffset));
1555Index: gcc-4_5-branch/gcc/config/arm/arm.h
1556===================================================================
1557--- gcc-4_5-branch.orig/gcc/config/arm/arm.h
1558+++ gcc-4_5-branch/gcc/config/arm/arm.h
1559@@ -1143,6 +1143,9 @@ extern int arm_structure_size_boundary;
1560 ((MODE) == TImode || (MODE) == EImode || (MODE) == OImode \
1561 || (MODE) == CImode || (MODE) == XImode)
1562
1563+/* The register numbers in sequence, for passing to arm_gen_load_multiple. */
1564+extern int arm_regs_in_sequence[];
1565+
1566 /* The order in which register should be allocated. It is good to use ip
1567 since no saving is required (though calls clobber it) and it never contains
1568 function parameters. It is quite good to use lr since other calls may
1569@@ -2823,4 +2826,8 @@ enum arm_builtins
1570 #define NEED_INDICATE_EXEC_STACK 0
1571 #endif
1572
1573+/* The maximum number of parallel loads or stores we support in an ldm/stm
1574+ instruction. */
1575+#define MAX_LDM_STM_OPS 4
1576+
1577 #endif /* ! GCC_ARM_H */
1578Index: gcc-4_5-branch/gcc/config/arm/arm.md
1579===================================================================
1580--- gcc-4_5-branch.orig/gcc/config/arm/arm.md
1581+++ gcc-4_5-branch/gcc/config/arm/arm.md
1582@@ -6282,7 +6282,7 @@
1583
1584 ;; load- and store-multiple insns
1585 ;; The arm can load/store any set of registers, provided that they are in
1586-;; ascending order; but that is beyond GCC so stick with what it knows.
1587+;; ascending order, but these expanders assume a contiguous set.
1588
1589 (define_expand "load_multiple"
1590 [(match_par_dup 3 [(set (match_operand:SI 0 "" "")
1591@@ -6303,126 +6303,12 @@
1592 FAIL;
1593
1594 operands[3]
1595- = arm_gen_load_multiple (REGNO (operands[0]), INTVAL (operands[2]),
1596+ = arm_gen_load_multiple (arm_regs_in_sequence + REGNO (operands[0]),
1597+ INTVAL (operands[2]),
1598 force_reg (SImode, XEXP (operands[1], 0)),
1599- TRUE, FALSE, operands[1], &offset);
1600+ FALSE, operands[1], &offset);
1601 })
1602
1603-;; Load multiple with write-back
1604-
1605-(define_insn "*ldmsi_postinc4"
1606- [(match_parallel 0 "load_multiple_operation"
1607- [(set (match_operand:SI 1 "s_register_operand" "=r")
1608- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1609- (const_int 16)))
1610- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1611- (mem:SI (match_dup 2)))
1612- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1613- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
1614- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1615- (mem:SI (plus:SI (match_dup 2) (const_int 8))))
1616- (set (match_operand:SI 6 "arm_hard_register_operand" "")
1617- (mem:SI (plus:SI (match_dup 2) (const_int 12))))])]
1618- "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
1619- "ldm%(ia%)\\t%1!, {%3, %4, %5, %6}"
1620- [(set_attr "type" "load4")
1621- (set_attr "predicable" "yes")]
1622-)
1623-
1624-(define_insn "*ldmsi_postinc4_thumb1"
1625- [(match_parallel 0 "load_multiple_operation"
1626- [(set (match_operand:SI 1 "s_register_operand" "=l")
1627- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1628- (const_int 16)))
1629- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1630- (mem:SI (match_dup 2)))
1631- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1632- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
1633- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1634- (mem:SI (plus:SI (match_dup 2) (const_int 8))))
1635- (set (match_operand:SI 6 "arm_hard_register_operand" "")
1636- (mem:SI (plus:SI (match_dup 2) (const_int 12))))])]
1637- "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
1638- "ldmia\\t%1!, {%3, %4, %5, %6}"
1639- [(set_attr "type" "load4")]
1640-)
1641-
1642-(define_insn "*ldmsi_postinc3"
1643- [(match_parallel 0 "load_multiple_operation"
1644- [(set (match_operand:SI 1 "s_register_operand" "=r")
1645- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1646- (const_int 12)))
1647- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1648- (mem:SI (match_dup 2)))
1649- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1650- (mem:SI (plus:SI (match_dup 2) (const_int 4))))
1651- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1652- (mem:SI (plus:SI (match_dup 2) (const_int 8))))])]
1653- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1654- "ldm%(ia%)\\t%1!, {%3, %4, %5}"
1655- [(set_attr "type" "load3")
1656- (set_attr "predicable" "yes")]
1657-)
1658-
1659-(define_insn "*ldmsi_postinc2"
1660- [(match_parallel 0 "load_multiple_operation"
1661- [(set (match_operand:SI 1 "s_register_operand" "=r")
1662- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1663- (const_int 8)))
1664- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1665- (mem:SI (match_dup 2)))
1666- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1667- (mem:SI (plus:SI (match_dup 2) (const_int 4))))])]
1668- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1669- "ldm%(ia%)\\t%1!, {%3, %4}"
1670- [(set_attr "type" "load2")
1671- (set_attr "predicable" "yes")]
1672-)
1673-
1674-;; Ordinary load multiple
1675-
1676-(define_insn "*ldmsi4"
1677- [(match_parallel 0 "load_multiple_operation"
1678- [(set (match_operand:SI 2 "arm_hard_register_operand" "")
1679- (mem:SI (match_operand:SI 1 "s_register_operand" "r")))
1680- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1681- (mem:SI (plus:SI (match_dup 1) (const_int 4))))
1682- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1683- (mem:SI (plus:SI (match_dup 1) (const_int 8))))
1684- (set (match_operand:SI 5 "arm_hard_register_operand" "")
1685- (mem:SI (plus:SI (match_dup 1) (const_int 12))))])]
1686- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1687- "ldm%(ia%)\\t%1, {%2, %3, %4, %5}"
1688- [(set_attr "type" "load4")
1689- (set_attr "predicable" "yes")]
1690-)
1691-
1692-(define_insn "*ldmsi3"
1693- [(match_parallel 0 "load_multiple_operation"
1694- [(set (match_operand:SI 2 "arm_hard_register_operand" "")
1695- (mem:SI (match_operand:SI 1 "s_register_operand" "r")))
1696- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1697- (mem:SI (plus:SI (match_dup 1) (const_int 4))))
1698- (set (match_operand:SI 4 "arm_hard_register_operand" "")
1699- (mem:SI (plus:SI (match_dup 1) (const_int 8))))])]
1700- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1701- "ldm%(ia%)\\t%1, {%2, %3, %4}"
1702- [(set_attr "type" "load3")
1703- (set_attr "predicable" "yes")]
1704-)
1705-
1706-(define_insn "*ldmsi2"
1707- [(match_parallel 0 "load_multiple_operation"
1708- [(set (match_operand:SI 2 "arm_hard_register_operand" "")
1709- (mem:SI (match_operand:SI 1 "s_register_operand" "r")))
1710- (set (match_operand:SI 3 "arm_hard_register_operand" "")
1711- (mem:SI (plus:SI (match_dup 1) (const_int 4))))])]
1712- "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
1713- "ldm%(ia%)\\t%1, {%2, %3}"
1714- [(set_attr "type" "load2")
1715- (set_attr "predicable" "yes")]
1716-)
1717-
1718 (define_expand "store_multiple"
1719 [(match_par_dup 3 [(set (match_operand:SI 0 "" "")
1720 (match_operand:SI 1 "" ""))
1721@@ -6442,125 +6328,12 @@
1722 FAIL;
1723
1724 operands[3]
1725- = arm_gen_store_multiple (REGNO (operands[1]), INTVAL (operands[2]),
1726+ = arm_gen_store_multiple (arm_regs_in_sequence + REGNO (operands[1]),
1727+ INTVAL (operands[2]),
1728 force_reg (SImode, XEXP (operands[0], 0)),
1729- TRUE, FALSE, operands[0], &offset);
1730+ FALSE, operands[0], &offset);
1731 })
1732
1733-;; Store multiple with write-back
1734-
1735-(define_insn "*stmsi_postinc4"
1736- [(match_parallel 0 "store_multiple_operation"
1737- [(set (match_operand:SI 1 "s_register_operand" "=r")
1738- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1739- (const_int 16)))
1740- (set (mem:SI (match_dup 2))
1741- (match_operand:SI 3 "arm_hard_register_operand" ""))
1742- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1743- (match_operand:SI 4 "arm_hard_register_operand" ""))
1744- (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
1745- (match_operand:SI 5 "arm_hard_register_operand" ""))
1746- (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
1747- (match_operand:SI 6 "arm_hard_register_operand" ""))])]
1748- "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
1749- "stm%(ia%)\\t%1!, {%3, %4, %5, %6}"
1750- [(set_attr "predicable" "yes")
1751- (set_attr "type" "store4")]
1752-)
1753-
1754-(define_insn "*stmsi_postinc4_thumb1"
1755- [(match_parallel 0 "store_multiple_operation"
1756- [(set (match_operand:SI 1 "s_register_operand" "=l")
1757- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1758- (const_int 16)))
1759- (set (mem:SI (match_dup 2))
1760- (match_operand:SI 3 "arm_hard_register_operand" ""))
1761- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1762- (match_operand:SI 4 "arm_hard_register_operand" ""))
1763- (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
1764- (match_operand:SI 5 "arm_hard_register_operand" ""))
1765- (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
1766- (match_operand:SI 6 "arm_hard_register_operand" ""))])]
1767- "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
1768- "stmia\\t%1!, {%3, %4, %5, %6}"
1769- [(set_attr "type" "store4")]
1770-)
1771-
1772-(define_insn "*stmsi_postinc3"
1773- [(match_parallel 0 "store_multiple_operation"
1774- [(set (match_operand:SI 1 "s_register_operand" "=r")
1775- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1776- (const_int 12)))
1777- (set (mem:SI (match_dup 2))
1778- (match_operand:SI 3 "arm_hard_register_operand" ""))
1779- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1780- (match_operand:SI 4 "arm_hard_register_operand" ""))
1781- (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
1782- (match_operand:SI 5 "arm_hard_register_operand" ""))])]
1783- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1784- "stm%(ia%)\\t%1!, {%3, %4, %5}"
1785- [(set_attr "predicable" "yes")
1786- (set_attr "type" "store3")]
1787-)
1788-
1789-(define_insn "*stmsi_postinc2"
1790- [(match_parallel 0 "store_multiple_operation"
1791- [(set (match_operand:SI 1 "s_register_operand" "=r")
1792- (plus:SI (match_operand:SI 2 "s_register_operand" "1")
1793- (const_int 8)))
1794- (set (mem:SI (match_dup 2))
1795- (match_operand:SI 3 "arm_hard_register_operand" ""))
1796- (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
1797- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
1798- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1799- "stm%(ia%)\\t%1!, {%3, %4}"
1800- [(set_attr "predicable" "yes")
1801- (set_attr "type" "store2")]
1802-)
1803-
1804-;; Ordinary store multiple
1805-
1806-(define_insn "*stmsi4"
1807- [(match_parallel 0 "store_multiple_operation"
1808- [(set (mem:SI (match_operand:SI 1 "s_register_operand" "r"))
1809- (match_operand:SI 2 "arm_hard_register_operand" ""))
1810- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
1811- (match_operand:SI 3 "arm_hard_register_operand" ""))
1812- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
1813- (match_operand:SI 4 "arm_hard_register_operand" ""))
1814- (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
1815- (match_operand:SI 5 "arm_hard_register_operand" ""))])]
1816- "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
1817- "stm%(ia%)\\t%1, {%2, %3, %4, %5}"
1818- [(set_attr "predicable" "yes")
1819- (set_attr "type" "store4")]
1820-)
1821-
1822-(define_insn "*stmsi3"
1823- [(match_parallel 0 "store_multiple_operation"
1824- [(set (mem:SI (match_operand:SI 1 "s_register_operand" "r"))
1825- (match_operand:SI 2 "arm_hard_register_operand" ""))
1826- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
1827- (match_operand:SI 3 "arm_hard_register_operand" ""))
1828- (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
1829- (match_operand:SI 4 "arm_hard_register_operand" ""))])]
1830- "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
1831- "stm%(ia%)\\t%1, {%2, %3, %4}"
1832- [(set_attr "predicable" "yes")
1833- (set_attr "type" "store3")]
1834-)
1835-
1836-(define_insn "*stmsi2"
1837- [(match_parallel 0 "store_multiple_operation"
1838- [(set (mem:SI (match_operand:SI 1 "s_register_operand" "r"))
1839- (match_operand:SI 2 "arm_hard_register_operand" ""))
1840- (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
1841- (match_operand:SI 3 "arm_hard_register_operand" ""))])]
1842- "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
1843- "stm%(ia%)\\t%1, {%2, %3}"
1844- [(set_attr "predicable" "yes")
1845- (set_attr "type" "store2")]
1846-)
1847
1848 ;; Move a block of memory if it is word aligned and MORE than 2 words long.
1849 ;; We could let this apply for blocks of less than this, but it clobbers so
1850@@ -9031,8 +8804,8 @@
1851 if (REGNO (reg) == R0_REGNUM)
1852 {
1853 /* On thumb we have to use a write-back instruction. */
1854- emit_insn (arm_gen_store_multiple (R0_REGNUM, 4, addr, TRUE,
1855- TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1856+ emit_insn (arm_gen_store_multiple (arm_regs_in_sequence, 4, addr,
1857+ TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1858 size = TARGET_ARM ? 16 : 0;
1859 }
1860 else
1861@@ -9078,8 +8851,8 @@
1862 if (REGNO (reg) == R0_REGNUM)
1863 {
1864 /* On thumb we have to use a write-back instruction. */
1865- emit_insn (arm_gen_load_multiple (R0_REGNUM, 4, addr, TRUE,
1866- TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1867+ emit_insn (arm_gen_load_multiple (arm_regs_in_sequence, 4, addr,
1868+ TARGET_THUMB ? TRUE : FALSE, mem, &offset));
1869 size = TARGET_ARM ? 16 : 0;
1870 }
1871 else
1872@@ -10672,87 +10445,6 @@
1873 ""
1874 )
1875
1876-; Peepholes to spot possible load- and store-multiples, if the ordering is
1877-; reversed, check that the memory references aren't volatile.
1878-
1879-(define_peephole
1880- [(set (match_operand:SI 0 "s_register_operand" "=rk")
1881- (match_operand:SI 4 "memory_operand" "m"))
1882- (set (match_operand:SI 1 "s_register_operand" "=rk")
1883- (match_operand:SI 5 "memory_operand" "m"))
1884- (set (match_operand:SI 2 "s_register_operand" "=rk")
1885- (match_operand:SI 6 "memory_operand" "m"))
1886- (set (match_operand:SI 3 "s_register_operand" "=rk")
1887- (match_operand:SI 7 "memory_operand" "m"))]
1888- "TARGET_ARM && load_multiple_sequence (operands, 4, NULL, NULL, NULL)"
1889- "*
1890- return emit_ldm_seq (operands, 4);
1891- "
1892-)
1893-
1894-(define_peephole
1895- [(set (match_operand:SI 0 "s_register_operand" "=rk")
1896- (match_operand:SI 3 "memory_operand" "m"))
1897- (set (match_operand:SI 1 "s_register_operand" "=rk")
1898- (match_operand:SI 4 "memory_operand" "m"))
1899- (set (match_operand:SI 2 "s_register_operand" "=rk")
1900- (match_operand:SI 5 "memory_operand" "m"))]
1901- "TARGET_ARM && load_multiple_sequence (operands, 3, NULL, NULL, NULL)"
1902- "*
1903- return emit_ldm_seq (operands, 3);
1904- "
1905-)
1906-
1907-(define_peephole
1908- [(set (match_operand:SI 0 "s_register_operand" "=rk")
1909- (match_operand:SI 2 "memory_operand" "m"))
1910- (set (match_operand:SI 1 "s_register_operand" "=rk")
1911- (match_operand:SI 3 "memory_operand" "m"))]
1912- "TARGET_ARM && load_multiple_sequence (operands, 2, NULL, NULL, NULL)"
1913- "*
1914- return emit_ldm_seq (operands, 2);
1915- "
1916-)
1917-
1918-(define_peephole
1919- [(set (match_operand:SI 4 "memory_operand" "=m")
1920- (match_operand:SI 0 "s_register_operand" "rk"))
1921- (set (match_operand:SI 5 "memory_operand" "=m")
1922- (match_operand:SI 1 "s_register_operand" "rk"))
1923- (set (match_operand:SI 6 "memory_operand" "=m")
1924- (match_operand:SI 2 "s_register_operand" "rk"))
1925- (set (match_operand:SI 7 "memory_operand" "=m")
1926- (match_operand:SI 3 "s_register_operand" "rk"))]
1927- "TARGET_ARM && store_multiple_sequence (operands, 4, NULL, NULL, NULL)"
1928- "*
1929- return emit_stm_seq (operands, 4);
1930- "
1931-)
1932-
1933-(define_peephole
1934- [(set (match_operand:SI 3 "memory_operand" "=m")
1935- (match_operand:SI 0 "s_register_operand" "rk"))
1936- (set (match_operand:SI 4 "memory_operand" "=m")
1937- (match_operand:SI 1 "s_register_operand" "rk"))
1938- (set (match_operand:SI 5 "memory_operand" "=m")
1939- (match_operand:SI 2 "s_register_operand" "rk"))]
1940- "TARGET_ARM && store_multiple_sequence (operands, 3, NULL, NULL, NULL)"
1941- "*
1942- return emit_stm_seq (operands, 3);
1943- "
1944-)
1945-
1946-(define_peephole
1947- [(set (match_operand:SI 2 "memory_operand" "=m")
1948- (match_operand:SI 0 "s_register_operand" "rk"))
1949- (set (match_operand:SI 3 "memory_operand" "=m")
1950- (match_operand:SI 1 "s_register_operand" "rk"))]
1951- "TARGET_ARM && store_multiple_sequence (operands, 2, NULL, NULL, NULL)"
1952- "*
1953- return emit_stm_seq (operands, 2);
1954- "
1955-)
1956-
1957 (define_split
1958 [(set (match_operand:SI 0 "s_register_operand" "")
1959 (and:SI (ge:SI (match_operand:SI 1 "s_register_operand" "")
1960@@ -11554,6 +11246,8 @@
1961 "
1962 )
1963
1964+;; Load the load/store multiple patterns
1965+(include "ldmstm.md")
1966 ;; Load the FPA co-processor patterns
1967 (include "fpa.md")
1968 ;; Load the Maverick co-processor patterns
1969Index: gcc-4_5-branch/gcc/config/arm/ldmstm.md
1970===================================================================
1971--- /dev/null
1972+++ gcc-4_5-branch/gcc/config/arm/ldmstm.md
1973@@ -0,0 +1,1191 @@
1974+/* ARM ldm/stm instruction patterns. This file was automatically generated
1975+ using arm-ldmstm.ml. Please do not edit manually.
1976+
1977+ Copyright (C) 2010 Free Software Foundation, Inc.
1978+ Contributed by CodeSourcery.
1979+
1980+ This file is part of GCC.
1981+
1982+ GCC is free software; you can redistribute it and/or modify it
1983+ under the terms of the GNU General Public License as published
1984+ by the Free Software Foundation; either version 3, or (at your
1985+ option) any later version.
1986+
1987+ GCC is distributed in the hope that it will be useful, but WITHOUT
1988+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
1989+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
1990+ License for more details.
1991+
1992+ You should have received a copy of the GNU General Public License and
1993+ a copy of the GCC Runtime Library Exception along with this program;
1994+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
1995+ <http://www.gnu.org/licenses/>. */
1996+
1997+(define_insn "*ldm4_ia"
1998+ [(match_parallel 0 "load_multiple_operation"
1999+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2000+ (mem:SI (match_operand:SI 1 "s_register_operand" "rk")))
2001+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2002+ (mem:SI (plus:SI (match_dup 1)
2003+ (const_int 4))))
2004+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2005+ (mem:SI (plus:SI (match_dup 1)
2006+ (const_int 8))))
2007+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2008+ (mem:SI (plus:SI (match_dup 1)
2009+ (const_int 12))))])]
2010+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2011+ "ldm%(ia%)\t%1, {%2, %3, %4, %5}"
2012+ [(set_attr "type" "load4")
2013+ (set_attr "predicable" "yes")])
2014+
2015+(define_insn "*thumb_ldm4_ia"
2016+ [(match_parallel 0 "load_multiple_operation"
2017+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2018+ (mem:SI (match_operand:SI 1 "s_register_operand" "l")))
2019+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2020+ (mem:SI (plus:SI (match_dup 1)
2021+ (const_int 4))))
2022+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2023+ (mem:SI (plus:SI (match_dup 1)
2024+ (const_int 8))))
2025+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2026+ (mem:SI (plus:SI (match_dup 1)
2027+ (const_int 12))))])]
2028+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
2029+ "ldm%(ia%)\t%1, {%2, %3, %4, %5}"
2030+ [(set_attr "type" "load4")])
2031+
2032+(define_insn "*ldm4_ia_update"
2033+ [(match_parallel 0 "load_multiple_operation"
2034+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2035+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2036+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2037+ (mem:SI (match_dup 2)))
2038+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2039+ (mem:SI (plus:SI (match_dup 2)
2040+ (const_int 4))))
2041+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2042+ (mem:SI (plus:SI (match_dup 2)
2043+ (const_int 8))))
2044+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2045+ (mem:SI (plus:SI (match_dup 2)
2046+ (const_int 12))))])]
2047+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2048+ "ldm%(ia%)\t%1!, {%3, %4, %5, %6}"
2049+ [(set_attr "type" "load4")
2050+ (set_attr "predicable" "yes")])
2051+
2052+(define_insn "*thumb_ldm4_ia_update"
2053+ [(match_parallel 0 "load_multiple_operation"
2054+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2055+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2056+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2057+ (mem:SI (match_dup 2)))
2058+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2059+ (mem:SI (plus:SI (match_dup 2)
2060+ (const_int 4))))
2061+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2062+ (mem:SI (plus:SI (match_dup 2)
2063+ (const_int 8))))
2064+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2065+ (mem:SI (plus:SI (match_dup 2)
2066+ (const_int 12))))])]
2067+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
2068+ "ldm%(ia%)\t%1!, {%3, %4, %5, %6}"
2069+ [(set_attr "type" "load4")])
2070+
2071+(define_insn "*stm4_ia"
2072+ [(match_parallel 0 "store_multiple_operation"
2073+ [(set (mem:SI (match_operand:SI 1 "s_register_operand" "rk"))
2074+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2075+ (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
2076+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2077+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2078+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2079+ (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
2080+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2081+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2082+ "stm%(ia%)\t%1, {%2, %3, %4, %5}"
2083+ [(set_attr "type" "store4")
2084+ (set_attr "predicable" "yes")])
2085+
2086+(define_insn "*stm4_ia_update"
2087+ [(match_parallel 0 "store_multiple_operation"
2088+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2089+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2090+ (set (mem:SI (match_dup 2))
2091+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2092+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2093+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2094+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2095+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2096+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2097+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2098+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2099+ "stm%(ia%)\t%1!, {%3, %4, %5, %6}"
2100+ [(set_attr "type" "store4")
2101+ (set_attr "predicable" "yes")])
2102+
2103+(define_insn "*thumb_stm4_ia_update"
2104+ [(match_parallel 0 "store_multiple_operation"
2105+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2106+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2107+ (set (mem:SI (match_dup 2))
2108+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2109+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2110+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2111+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2112+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2113+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2114+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2115+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 5"
2116+ "stm%(ia%)\t%1!, {%3, %4, %5, %6}"
2117+ [(set_attr "type" "store4")])
2118+
2119+(define_insn "*ldm4_ib"
2120+ [(match_parallel 0 "load_multiple_operation"
2121+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2122+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2123+ (const_int 4))))
2124+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2125+ (mem:SI (plus:SI (match_dup 1)
2126+ (const_int 8))))
2127+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2128+ (mem:SI (plus:SI (match_dup 1)
2129+ (const_int 12))))
2130+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2131+ (mem:SI (plus:SI (match_dup 1)
2132+ (const_int 16))))])]
2133+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2134+ "ldm%(ib%)\t%1, {%2, %3, %4, %5}"
2135+ [(set_attr "type" "load4")
2136+ (set_attr "predicable" "yes")])
2137+
2138+(define_insn "*ldm4_ib_update"
2139+ [(match_parallel 0 "load_multiple_operation"
2140+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2141+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2142+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2143+ (mem:SI (plus:SI (match_dup 2)
2144+ (const_int 4))))
2145+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2146+ (mem:SI (plus:SI (match_dup 2)
2147+ (const_int 8))))
2148+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2149+ (mem:SI (plus:SI (match_dup 2)
2150+ (const_int 12))))
2151+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2152+ (mem:SI (plus:SI (match_dup 2)
2153+ (const_int 16))))])]
2154+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2155+ "ldm%(ib%)\t%1!, {%3, %4, %5, %6}"
2156+ [(set_attr "type" "load4")
2157+ (set_attr "predicable" "yes")])
2158+
2159+(define_insn "*stm4_ib"
2160+ [(match_parallel 0 "store_multiple_operation"
2161+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int 4)))
2162+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2163+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2164+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2165+ (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
2166+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2167+ (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
2168+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2169+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2170+ "stm%(ib%)\t%1, {%2, %3, %4, %5}"
2171+ [(set_attr "type" "store4")
2172+ (set_attr "predicable" "yes")])
2173+
2174+(define_insn "*stm4_ib_update"
2175+ [(match_parallel 0 "store_multiple_operation"
2176+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2177+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 16)))
2178+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2179+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2180+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2181+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2182+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2183+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2184+ (set (mem:SI (plus:SI (match_dup 2) (const_int 16)))
2185+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2186+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2187+ "stm%(ib%)\t%1!, {%3, %4, %5, %6}"
2188+ [(set_attr "type" "store4")
2189+ (set_attr "predicable" "yes")])
2190+
2191+(define_insn "*ldm4_da"
2192+ [(match_parallel 0 "load_multiple_operation"
2193+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2194+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2195+ (const_int -12))))
2196+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2197+ (mem:SI (plus:SI (match_dup 1)
2198+ (const_int -8))))
2199+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2200+ (mem:SI (plus:SI (match_dup 1)
2201+ (const_int -4))))
2202+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2203+ (mem:SI (match_dup 1)))])]
2204+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2205+ "ldm%(da%)\t%1, {%2, %3, %4, %5}"
2206+ [(set_attr "type" "load4")
2207+ (set_attr "predicable" "yes")])
2208+
2209+(define_insn "*ldm4_da_update"
2210+ [(match_parallel 0 "load_multiple_operation"
2211+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2212+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2213+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2214+ (mem:SI (plus:SI (match_dup 2)
2215+ (const_int -12))))
2216+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2217+ (mem:SI (plus:SI (match_dup 2)
2218+ (const_int -8))))
2219+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2220+ (mem:SI (plus:SI (match_dup 2)
2221+ (const_int -4))))
2222+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2223+ (mem:SI (match_dup 2)))])]
2224+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2225+ "ldm%(da%)\t%1!, {%3, %4, %5, %6}"
2226+ [(set_attr "type" "load4")
2227+ (set_attr "predicable" "yes")])
2228+
2229+(define_insn "*stm4_da"
2230+ [(match_parallel 0 "store_multiple_operation"
2231+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -12)))
2232+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2233+ (set (mem:SI (plus:SI (match_dup 1) (const_int -8)))
2234+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2235+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2236+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2237+ (set (mem:SI (match_dup 1))
2238+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2239+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2240+ "stm%(da%)\t%1, {%2, %3, %4, %5}"
2241+ [(set_attr "type" "store4")
2242+ (set_attr "predicable" "yes")])
2243+
2244+(define_insn "*stm4_da_update"
2245+ [(match_parallel 0 "store_multiple_operation"
2246+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2247+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2248+ (set (mem:SI (plus:SI (match_dup 2) (const_int -12)))
2249+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2250+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2251+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2252+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2253+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2254+ (set (mem:SI (match_dup 2))
2255+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2256+ "TARGET_ARM && XVECLEN (operands[0], 0) == 5"
2257+ "stm%(da%)\t%1!, {%3, %4, %5, %6}"
2258+ [(set_attr "type" "store4")
2259+ (set_attr "predicable" "yes")])
2260+
2261+(define_insn "*ldm4_db"
2262+ [(match_parallel 0 "load_multiple_operation"
2263+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2264+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2265+ (const_int -16))))
2266+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2267+ (mem:SI (plus:SI (match_dup 1)
2268+ (const_int -12))))
2269+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2270+ (mem:SI (plus:SI (match_dup 1)
2271+ (const_int -8))))
2272+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2273+ (mem:SI (plus:SI (match_dup 1)
2274+ (const_int -4))))])]
2275+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2276+ "ldm%(db%)\t%1, {%2, %3, %4, %5}"
2277+ [(set_attr "type" "load4")
2278+ (set_attr "predicable" "yes")])
2279+
2280+(define_insn "*ldm4_db_update"
2281+ [(match_parallel 0 "load_multiple_operation"
2282+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2283+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2284+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2285+ (mem:SI (plus:SI (match_dup 2)
2286+ (const_int -16))))
2287+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2288+ (mem:SI (plus:SI (match_dup 2)
2289+ (const_int -12))))
2290+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2291+ (mem:SI (plus:SI (match_dup 2)
2292+ (const_int -8))))
2293+ (set (match_operand:SI 6 "arm_hard_register_operand" "")
2294+ (mem:SI (plus:SI (match_dup 2)
2295+ (const_int -4))))])]
2296+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2297+ "ldm%(db%)\t%1!, {%3, %4, %5, %6}"
2298+ [(set_attr "type" "load4")
2299+ (set_attr "predicable" "yes")])
2300+
2301+(define_insn "*stm4_db"
2302+ [(match_parallel 0 "store_multiple_operation"
2303+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -16)))
2304+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2305+ (set (mem:SI (plus:SI (match_dup 1) (const_int -12)))
2306+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2307+ (set (mem:SI (plus:SI (match_dup 1) (const_int -8)))
2308+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2309+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2310+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2311+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2312+ "stm%(db%)\t%1, {%2, %3, %4, %5}"
2313+ [(set_attr "type" "store4")
2314+ (set_attr "predicable" "yes")])
2315+
2316+(define_insn "*stm4_db_update"
2317+ [(match_parallel 0 "store_multiple_operation"
2318+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2319+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -16)))
2320+ (set (mem:SI (plus:SI (match_dup 2) (const_int -16)))
2321+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2322+ (set (mem:SI (plus:SI (match_dup 2) (const_int -12)))
2323+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2324+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2325+ (match_operand:SI 5 "arm_hard_register_operand" ""))
2326+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2327+ (match_operand:SI 6 "arm_hard_register_operand" ""))])]
2328+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 5"
2329+ "stm%(db%)\t%1!, {%3, %4, %5, %6}"
2330+ [(set_attr "type" "store4")
2331+ (set_attr "predicable" "yes")])
2332+
2333+(define_peephole2
2334+ [(set (match_operand:SI 0 "s_register_operand" "")
2335+ (match_operand:SI 4 "memory_operand" ""))
2336+ (set (match_operand:SI 1 "s_register_operand" "")
2337+ (match_operand:SI 5 "memory_operand" ""))
2338+ (set (match_operand:SI 2 "s_register_operand" "")
2339+ (match_operand:SI 6 "memory_operand" ""))
2340+ (set (match_operand:SI 3 "s_register_operand" "")
2341+ (match_operand:SI 7 "memory_operand" ""))]
2342+ ""
2343+ [(const_int 0)]
2344+{
2345+ if (gen_ldm_seq (operands, 4, false))
2346+ DONE;
2347+ else
2348+ FAIL;
2349+})
2350+
2351+(define_peephole2
2352+ [(set (match_operand:SI 0 "s_register_operand" "")
2353+ (match_operand:SI 4 "memory_operand" ""))
2354+ (parallel
2355+ [(set (match_operand:SI 1 "s_register_operand" "")
2356+ (match_operand:SI 5 "memory_operand" ""))
2357+ (set (match_operand:SI 2 "s_register_operand" "")
2358+ (match_operand:SI 6 "memory_operand" ""))
2359+ (set (match_operand:SI 3 "s_register_operand" "")
2360+ (match_operand:SI 7 "memory_operand" ""))])]
2361+ ""
2362+ [(const_int 0)]
2363+{
2364+ if (gen_ldm_seq (operands, 4, false))
2365+ DONE;
2366+ else
2367+ FAIL;
2368+})
2369+
2370+(define_peephole2
2371+ [(set (match_operand:SI 0 "s_register_operand" "")
2372+ (match_operand:SI 8 "const_int_operand" ""))
2373+ (set (match_operand:SI 4 "memory_operand" "")
2374+ (match_dup 0))
2375+ (set (match_operand:SI 1 "s_register_operand" "")
2376+ (match_operand:SI 9 "const_int_operand" ""))
2377+ (set (match_operand:SI 5 "memory_operand" "")
2378+ (match_dup 1))
2379+ (set (match_operand:SI 2 "s_register_operand" "")
2380+ (match_operand:SI 10 "const_int_operand" ""))
2381+ (set (match_operand:SI 6 "memory_operand" "")
2382+ (match_dup 2))
2383+ (set (match_operand:SI 3 "s_register_operand" "")
2384+ (match_operand:SI 11 "const_int_operand" ""))
2385+ (set (match_operand:SI 7 "memory_operand" "")
2386+ (match_dup 3))]
2387+ ""
2388+ [(const_int 0)]
2389+{
2390+ if (gen_const_stm_seq (operands, 4))
2391+ DONE;
2392+ else
2393+ FAIL;
2394+})
2395+
2396+(define_peephole2
2397+ [(set (match_operand:SI 0 "s_register_operand" "")
2398+ (match_operand:SI 8 "const_int_operand" ""))
2399+ (set (match_operand:SI 1 "s_register_operand" "")
2400+ (match_operand:SI 9 "const_int_operand" ""))
2401+ (set (match_operand:SI 2 "s_register_operand" "")
2402+ (match_operand:SI 10 "const_int_operand" ""))
2403+ (set (match_operand:SI 3 "s_register_operand" "")
2404+ (match_operand:SI 11 "const_int_operand" ""))
2405+ (set (match_operand:SI 4 "memory_operand" "")
2406+ (match_dup 0))
2407+ (set (match_operand:SI 5 "memory_operand" "")
2408+ (match_dup 1))
2409+ (set (match_operand:SI 6 "memory_operand" "")
2410+ (match_dup 2))
2411+ (set (match_operand:SI 7 "memory_operand" "")
2412+ (match_dup 3))]
2413+ ""
2414+ [(const_int 0)]
2415+{
2416+ if (gen_const_stm_seq (operands, 4))
2417+ DONE;
2418+ else
2419+ FAIL;
2420+})
2421+
2422+(define_peephole2
2423+ [(set (match_operand:SI 4 "memory_operand" "")
2424+ (match_operand:SI 0 "s_register_operand" ""))
2425+ (set (match_operand:SI 5 "memory_operand" "")
2426+ (match_operand:SI 1 "s_register_operand" ""))
2427+ (set (match_operand:SI 6 "memory_operand" "")
2428+ (match_operand:SI 2 "s_register_operand" ""))
2429+ (set (match_operand:SI 7 "memory_operand" "")
2430+ (match_operand:SI 3 "s_register_operand" ""))]
2431+ ""
2432+ [(const_int 0)]
2433+{
2434+ if (gen_stm_seq (operands, 4))
2435+ DONE;
2436+ else
2437+ FAIL;
2438+})
2439+
2440+(define_insn "*ldm3_ia"
2441+ [(match_parallel 0 "load_multiple_operation"
2442+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2443+ (mem:SI (match_operand:SI 1 "s_register_operand" "rk")))
2444+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2445+ (mem:SI (plus:SI (match_dup 1)
2446+ (const_int 4))))
2447+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2448+ (mem:SI (plus:SI (match_dup 1)
2449+ (const_int 8))))])]
2450+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2451+ "ldm%(ia%)\t%1, {%2, %3, %4}"
2452+ [(set_attr "type" "load3")
2453+ (set_attr "predicable" "yes")])
2454+
2455+(define_insn "*thumb_ldm3_ia"
2456+ [(match_parallel 0 "load_multiple_operation"
2457+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2458+ (mem:SI (match_operand:SI 1 "s_register_operand" "l")))
2459+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2460+ (mem:SI (plus:SI (match_dup 1)
2461+ (const_int 4))))
2462+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2463+ (mem:SI (plus:SI (match_dup 1)
2464+ (const_int 8))))])]
2465+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
2466+ "ldm%(ia%)\t%1, {%2, %3, %4}"
2467+ [(set_attr "type" "load3")])
2468+
2469+(define_insn "*ldm3_ia_update"
2470+ [(match_parallel 0 "load_multiple_operation"
2471+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2472+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2473+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2474+ (mem:SI (match_dup 2)))
2475+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2476+ (mem:SI (plus:SI (match_dup 2)
2477+ (const_int 4))))
2478+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2479+ (mem:SI (plus:SI (match_dup 2)
2480+ (const_int 8))))])]
2481+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2482+ "ldm%(ia%)\t%1!, {%3, %4, %5}"
2483+ [(set_attr "type" "load3")
2484+ (set_attr "predicable" "yes")])
2485+
2486+(define_insn "*thumb_ldm3_ia_update"
2487+ [(match_parallel 0 "load_multiple_operation"
2488+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2489+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2490+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2491+ (mem:SI (match_dup 2)))
2492+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2493+ (mem:SI (plus:SI (match_dup 2)
2494+ (const_int 4))))
2495+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2496+ (mem:SI (plus:SI (match_dup 2)
2497+ (const_int 8))))])]
2498+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
2499+ "ldm%(ia%)\t%1!, {%3, %4, %5}"
2500+ [(set_attr "type" "load3")])
2501+
2502+(define_insn "*stm3_ia"
2503+ [(match_parallel 0 "store_multiple_operation"
2504+ [(set (mem:SI (match_operand:SI 1 "s_register_operand" "rk"))
2505+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2506+ (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
2507+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2508+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2509+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2510+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2511+ "stm%(ia%)\t%1, {%2, %3, %4}"
2512+ [(set_attr "type" "store3")
2513+ (set_attr "predicable" "yes")])
2514+
2515+(define_insn "*stm3_ia_update"
2516+ [(match_parallel 0 "store_multiple_operation"
2517+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2518+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2519+ (set (mem:SI (match_dup 2))
2520+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2521+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2522+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2523+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2524+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2525+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2526+ "stm%(ia%)\t%1!, {%3, %4, %5}"
2527+ [(set_attr "type" "store3")
2528+ (set_attr "predicable" "yes")])
2529+
2530+(define_insn "*thumb_stm3_ia_update"
2531+ [(match_parallel 0 "store_multiple_operation"
2532+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2533+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2534+ (set (mem:SI (match_dup 2))
2535+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2536+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2537+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2538+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2539+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2540+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 4"
2541+ "stm%(ia%)\t%1!, {%3, %4, %5}"
2542+ [(set_attr "type" "store3")])
2543+
2544+(define_insn "*ldm3_ib"
2545+ [(match_parallel 0 "load_multiple_operation"
2546+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2547+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2548+ (const_int 4))))
2549+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2550+ (mem:SI (plus:SI (match_dup 1)
2551+ (const_int 8))))
2552+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2553+ (mem:SI (plus:SI (match_dup 1)
2554+ (const_int 12))))])]
2555+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2556+ "ldm%(ib%)\t%1, {%2, %3, %4}"
2557+ [(set_attr "type" "load3")
2558+ (set_attr "predicable" "yes")])
2559+
2560+(define_insn "*ldm3_ib_update"
2561+ [(match_parallel 0 "load_multiple_operation"
2562+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2563+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2564+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2565+ (mem:SI (plus:SI (match_dup 2)
2566+ (const_int 4))))
2567+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2568+ (mem:SI (plus:SI (match_dup 2)
2569+ (const_int 8))))
2570+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2571+ (mem:SI (plus:SI (match_dup 2)
2572+ (const_int 12))))])]
2573+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2574+ "ldm%(ib%)\t%1!, {%3, %4, %5}"
2575+ [(set_attr "type" "load3")
2576+ (set_attr "predicable" "yes")])
2577+
2578+(define_insn "*stm3_ib"
2579+ [(match_parallel 0 "store_multiple_operation"
2580+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int 4)))
2581+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2582+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2583+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2584+ (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
2585+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2586+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2587+ "stm%(ib%)\t%1, {%2, %3, %4}"
2588+ [(set_attr "type" "store3")
2589+ (set_attr "predicable" "yes")])
2590+
2591+(define_insn "*stm3_ib_update"
2592+ [(match_parallel 0 "store_multiple_operation"
2593+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2594+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 12)))
2595+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2596+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2597+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2598+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2599+ (set (mem:SI (plus:SI (match_dup 2) (const_int 12)))
2600+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2601+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2602+ "stm%(ib%)\t%1!, {%3, %4, %5}"
2603+ [(set_attr "type" "store3")
2604+ (set_attr "predicable" "yes")])
2605+
2606+(define_insn "*ldm3_da"
2607+ [(match_parallel 0 "load_multiple_operation"
2608+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2609+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2610+ (const_int -8))))
2611+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2612+ (mem:SI (plus:SI (match_dup 1)
2613+ (const_int -4))))
2614+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2615+ (mem:SI (match_dup 1)))])]
2616+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2617+ "ldm%(da%)\t%1, {%2, %3, %4}"
2618+ [(set_attr "type" "load3")
2619+ (set_attr "predicable" "yes")])
2620+
2621+(define_insn "*ldm3_da_update"
2622+ [(match_parallel 0 "load_multiple_operation"
2623+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2624+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2625+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2626+ (mem:SI (plus:SI (match_dup 2)
2627+ (const_int -8))))
2628+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2629+ (mem:SI (plus:SI (match_dup 2)
2630+ (const_int -4))))
2631+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2632+ (mem:SI (match_dup 2)))])]
2633+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2634+ "ldm%(da%)\t%1!, {%3, %4, %5}"
2635+ [(set_attr "type" "load3")
2636+ (set_attr "predicable" "yes")])
2637+
2638+(define_insn "*stm3_da"
2639+ [(match_parallel 0 "store_multiple_operation"
2640+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -8)))
2641+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2642+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2643+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2644+ (set (mem:SI (match_dup 1))
2645+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2646+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2647+ "stm%(da%)\t%1, {%2, %3, %4}"
2648+ [(set_attr "type" "store3")
2649+ (set_attr "predicable" "yes")])
2650+
2651+(define_insn "*stm3_da_update"
2652+ [(match_parallel 0 "store_multiple_operation"
2653+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2654+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2655+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2656+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2657+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2658+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2659+ (set (mem:SI (match_dup 2))
2660+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2661+ "TARGET_ARM && XVECLEN (operands[0], 0) == 4"
2662+ "stm%(da%)\t%1!, {%3, %4, %5}"
2663+ [(set_attr "type" "store3")
2664+ (set_attr "predicable" "yes")])
2665+
2666+(define_insn "*ldm3_db"
2667+ [(match_parallel 0 "load_multiple_operation"
2668+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2669+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2670+ (const_int -12))))
2671+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2672+ (mem:SI (plus:SI (match_dup 1)
2673+ (const_int -8))))
2674+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2675+ (mem:SI (plus:SI (match_dup 1)
2676+ (const_int -4))))])]
2677+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2678+ "ldm%(db%)\t%1, {%2, %3, %4}"
2679+ [(set_attr "type" "load3")
2680+ (set_attr "predicable" "yes")])
2681+
2682+(define_insn "*ldm3_db_update"
2683+ [(match_parallel 0 "load_multiple_operation"
2684+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2685+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2686+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2687+ (mem:SI (plus:SI (match_dup 2)
2688+ (const_int -12))))
2689+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2690+ (mem:SI (plus:SI (match_dup 2)
2691+ (const_int -8))))
2692+ (set (match_operand:SI 5 "arm_hard_register_operand" "")
2693+ (mem:SI (plus:SI (match_dup 2)
2694+ (const_int -4))))])]
2695+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2696+ "ldm%(db%)\t%1!, {%3, %4, %5}"
2697+ [(set_attr "type" "load3")
2698+ (set_attr "predicable" "yes")])
2699+
2700+(define_insn "*stm3_db"
2701+ [(match_parallel 0 "store_multiple_operation"
2702+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -12)))
2703+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2704+ (set (mem:SI (plus:SI (match_dup 1) (const_int -8)))
2705+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2706+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
2707+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2708+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2709+ "stm%(db%)\t%1, {%2, %3, %4}"
2710+ [(set_attr "type" "store3")
2711+ (set_attr "predicable" "yes")])
2712+
2713+(define_insn "*stm3_db_update"
2714+ [(match_parallel 0 "store_multiple_operation"
2715+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2716+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -12)))
2717+ (set (mem:SI (plus:SI (match_dup 2) (const_int -12)))
2718+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2719+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
2720+ (match_operand:SI 4 "arm_hard_register_operand" ""))
2721+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2722+ (match_operand:SI 5 "arm_hard_register_operand" ""))])]
2723+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 4"
2724+ "stm%(db%)\t%1!, {%3, %4, %5}"
2725+ [(set_attr "type" "store3")
2726+ (set_attr "predicable" "yes")])
2727+
2728+(define_peephole2
2729+ [(set (match_operand:SI 0 "s_register_operand" "")
2730+ (match_operand:SI 3 "memory_operand" ""))
2731+ (set (match_operand:SI 1 "s_register_operand" "")
2732+ (match_operand:SI 4 "memory_operand" ""))
2733+ (set (match_operand:SI 2 "s_register_operand" "")
2734+ (match_operand:SI 5 "memory_operand" ""))]
2735+ ""
2736+ [(const_int 0)]
2737+{
2738+ if (gen_ldm_seq (operands, 3, false))
2739+ DONE;
2740+ else
2741+ FAIL;
2742+})
2743+
2744+(define_peephole2
2745+ [(set (match_operand:SI 0 "s_register_operand" "")
2746+ (match_operand:SI 3 "memory_operand" ""))
2747+ (parallel
2748+ [(set (match_operand:SI 1 "s_register_operand" "")
2749+ (match_operand:SI 4 "memory_operand" ""))
2750+ (set (match_operand:SI 2 "s_register_operand" "")
2751+ (match_operand:SI 5 "memory_operand" ""))])]
2752+ ""
2753+ [(const_int 0)]
2754+{
2755+ if (gen_ldm_seq (operands, 3, false))
2756+ DONE;
2757+ else
2758+ FAIL;
2759+})
2760+
2761+(define_peephole2
2762+ [(set (match_operand:SI 0 "s_register_operand" "")
2763+ (match_operand:SI 6 "const_int_operand" ""))
2764+ (set (match_operand:SI 3 "memory_operand" "")
2765+ (match_dup 0))
2766+ (set (match_operand:SI 1 "s_register_operand" "")
2767+ (match_operand:SI 7 "const_int_operand" ""))
2768+ (set (match_operand:SI 4 "memory_operand" "")
2769+ (match_dup 1))
2770+ (set (match_operand:SI 2 "s_register_operand" "")
2771+ (match_operand:SI 8 "const_int_operand" ""))
2772+ (set (match_operand:SI 5 "memory_operand" "")
2773+ (match_dup 2))]
2774+ ""
2775+ [(const_int 0)]
2776+{
2777+ if (gen_const_stm_seq (operands, 3))
2778+ DONE;
2779+ else
2780+ FAIL;
2781+})
2782+
2783+(define_peephole2
2784+ [(set (match_operand:SI 0 "s_register_operand" "")
2785+ (match_operand:SI 6 "const_int_operand" ""))
2786+ (set (match_operand:SI 1 "s_register_operand" "")
2787+ (match_operand:SI 7 "const_int_operand" ""))
2788+ (set (match_operand:SI 2 "s_register_operand" "")
2789+ (match_operand:SI 8 "const_int_operand" ""))
2790+ (set (match_operand:SI 3 "memory_operand" "")
2791+ (match_dup 0))
2792+ (set (match_operand:SI 4 "memory_operand" "")
2793+ (match_dup 1))
2794+ (set (match_operand:SI 5 "memory_operand" "")
2795+ (match_dup 2))]
2796+ ""
2797+ [(const_int 0)]
2798+{
2799+ if (gen_const_stm_seq (operands, 3))
2800+ DONE;
2801+ else
2802+ FAIL;
2803+})
2804+
2805+(define_peephole2
2806+ [(set (match_operand:SI 3 "memory_operand" "")
2807+ (match_operand:SI 0 "s_register_operand" ""))
2808+ (set (match_operand:SI 4 "memory_operand" "")
2809+ (match_operand:SI 1 "s_register_operand" ""))
2810+ (set (match_operand:SI 5 "memory_operand" "")
2811+ (match_operand:SI 2 "s_register_operand" ""))]
2812+ ""
2813+ [(const_int 0)]
2814+{
2815+ if (gen_stm_seq (operands, 3))
2816+ DONE;
2817+ else
2818+ FAIL;
2819+})
2820+
2821+(define_insn "*ldm2_ia"
2822+ [(match_parallel 0 "load_multiple_operation"
2823+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2824+ (mem:SI (match_operand:SI 1 "s_register_operand" "rk")))
2825+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2826+ (mem:SI (plus:SI (match_dup 1)
2827+ (const_int 4))))])]
2828+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
2829+ "ldm%(ia%)\t%1, {%2, %3}"
2830+ [(set_attr "type" "load2")
2831+ (set_attr "predicable" "yes")])
2832+
2833+(define_insn "*thumb_ldm2_ia"
2834+ [(match_parallel 0 "load_multiple_operation"
2835+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2836+ (mem:SI (match_operand:SI 1 "s_register_operand" "l")))
2837+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2838+ (mem:SI (plus:SI (match_dup 1)
2839+ (const_int 4))))])]
2840+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 2"
2841+ "ldm%(ia%)\t%1, {%2, %3}"
2842+ [(set_attr "type" "load2")])
2843+
2844+(define_insn "*ldm2_ia_update"
2845+ [(match_parallel 0 "load_multiple_operation"
2846+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2847+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2848+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2849+ (mem:SI (match_dup 2)))
2850+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2851+ (mem:SI (plus:SI (match_dup 2)
2852+ (const_int 4))))])]
2853+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2854+ "ldm%(ia%)\t%1!, {%3, %4}"
2855+ [(set_attr "type" "load2")
2856+ (set_attr "predicable" "yes")])
2857+
2858+(define_insn "*thumb_ldm2_ia_update"
2859+ [(match_parallel 0 "load_multiple_operation"
2860+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2861+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2862+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2863+ (mem:SI (match_dup 2)))
2864+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2865+ (mem:SI (plus:SI (match_dup 2)
2866+ (const_int 4))))])]
2867+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
2868+ "ldm%(ia%)\t%1!, {%3, %4}"
2869+ [(set_attr "type" "load2")])
2870+
2871+(define_insn "*stm2_ia"
2872+ [(match_parallel 0 "store_multiple_operation"
2873+ [(set (mem:SI (match_operand:SI 1 "s_register_operand" "rk"))
2874+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2875+ (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
2876+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
2877+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
2878+ "stm%(ia%)\t%1, {%2, %3}"
2879+ [(set_attr "type" "store2")
2880+ (set_attr "predicable" "yes")])
2881+
2882+(define_insn "*stm2_ia_update"
2883+ [(match_parallel 0 "store_multiple_operation"
2884+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2885+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2886+ (set (mem:SI (match_dup 2))
2887+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2888+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2889+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2890+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
2891+ "stm%(ia%)\t%1!, {%3, %4}"
2892+ [(set_attr "type" "store2")
2893+ (set_attr "predicable" "yes")])
2894+
2895+(define_insn "*thumb_stm2_ia_update"
2896+ [(match_parallel 0 "store_multiple_operation"
2897+ [(set (match_operand:SI 1 "s_register_operand" "=l")
2898+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2899+ (set (mem:SI (match_dup 2))
2900+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2901+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2902+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2903+ "TARGET_THUMB1 && XVECLEN (operands[0], 0) == 3"
2904+ "stm%(ia%)\t%1!, {%3, %4}"
2905+ [(set_attr "type" "store2")])
2906+
2907+(define_insn "*ldm2_ib"
2908+ [(match_parallel 0 "load_multiple_operation"
2909+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2910+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2911+ (const_int 4))))
2912+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2913+ (mem:SI (plus:SI (match_dup 1)
2914+ (const_int 8))))])]
2915+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2916+ "ldm%(ib%)\t%1, {%2, %3}"
2917+ [(set_attr "type" "load2")
2918+ (set_attr "predicable" "yes")])
2919+
2920+(define_insn "*ldm2_ib_update"
2921+ [(match_parallel 0 "load_multiple_operation"
2922+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2923+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2924+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2925+ (mem:SI (plus:SI (match_dup 2)
2926+ (const_int 4))))
2927+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2928+ (mem:SI (plus:SI (match_dup 2)
2929+ (const_int 8))))])]
2930+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2931+ "ldm%(ib%)\t%1!, {%3, %4}"
2932+ [(set_attr "type" "load2")
2933+ (set_attr "predicable" "yes")])
2934+
2935+(define_insn "*stm2_ib"
2936+ [(match_parallel 0 "store_multiple_operation"
2937+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int 4)))
2938+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2939+ (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
2940+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
2941+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2942+ "stm%(ib%)\t%1, {%2, %3}"
2943+ [(set_attr "type" "store2")
2944+ (set_attr "predicable" "yes")])
2945+
2946+(define_insn "*stm2_ib_update"
2947+ [(match_parallel 0 "store_multiple_operation"
2948+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2949+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int 8)))
2950+ (set (mem:SI (plus:SI (match_dup 2) (const_int 4)))
2951+ (match_operand:SI 3 "arm_hard_register_operand" ""))
2952+ (set (mem:SI (plus:SI (match_dup 2) (const_int 8)))
2953+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
2954+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2955+ "stm%(ib%)\t%1!, {%3, %4}"
2956+ [(set_attr "type" "store2")
2957+ (set_attr "predicable" "yes")])
2958+
2959+(define_insn "*ldm2_da"
2960+ [(match_parallel 0 "load_multiple_operation"
2961+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
2962+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
2963+ (const_int -4))))
2964+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2965+ (mem:SI (match_dup 1)))])]
2966+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2967+ "ldm%(da%)\t%1, {%2, %3}"
2968+ [(set_attr "type" "load2")
2969+ (set_attr "predicable" "yes")])
2970+
2971+(define_insn "*ldm2_da_update"
2972+ [(match_parallel 0 "load_multiple_operation"
2973+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2974+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
2975+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
2976+ (mem:SI (plus:SI (match_dup 2)
2977+ (const_int -4))))
2978+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
2979+ (mem:SI (match_dup 2)))])]
2980+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
2981+ "ldm%(da%)\t%1!, {%3, %4}"
2982+ [(set_attr "type" "load2")
2983+ (set_attr "predicable" "yes")])
2984+
2985+(define_insn "*stm2_da"
2986+ [(match_parallel 0 "store_multiple_operation"
2987+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -4)))
2988+ (match_operand:SI 2 "arm_hard_register_operand" ""))
2989+ (set (mem:SI (match_dup 1))
2990+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
2991+ "TARGET_ARM && XVECLEN (operands[0], 0) == 2"
2992+ "stm%(da%)\t%1, {%2, %3}"
2993+ [(set_attr "type" "store2")
2994+ (set_attr "predicable" "yes")])
2995+
2996+(define_insn "*stm2_da_update"
2997+ [(match_parallel 0 "store_multiple_operation"
2998+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
2999+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3000+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
3001+ (match_operand:SI 3 "arm_hard_register_operand" ""))
3002+ (set (mem:SI (match_dup 2))
3003+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
3004+ "TARGET_ARM && XVECLEN (operands[0], 0) == 3"
3005+ "stm%(da%)\t%1!, {%3, %4}"
3006+ [(set_attr "type" "store2")
3007+ (set_attr "predicable" "yes")])
3008+
3009+(define_insn "*ldm2_db"
3010+ [(match_parallel 0 "load_multiple_operation"
3011+ [(set (match_operand:SI 2 "arm_hard_register_operand" "")
3012+ (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk")
3013+ (const_int -8))))
3014+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
3015+ (mem:SI (plus:SI (match_dup 1)
3016+ (const_int -4))))])]
3017+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
3018+ "ldm%(db%)\t%1, {%2, %3}"
3019+ [(set_attr "type" "load2")
3020+ (set_attr "predicable" "yes")])
3021+
3022+(define_insn "*ldm2_db_update"
3023+ [(match_parallel 0 "load_multiple_operation"
3024+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
3025+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3026+ (set (match_operand:SI 3 "arm_hard_register_operand" "")
3027+ (mem:SI (plus:SI (match_dup 2)
3028+ (const_int -8))))
3029+ (set (match_operand:SI 4 "arm_hard_register_operand" "")
3030+ (mem:SI (plus:SI (match_dup 2)
3031+ (const_int -4))))])]
3032+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
3033+ "ldm%(db%)\t%1!, {%3, %4}"
3034+ [(set_attr "type" "load2")
3035+ (set_attr "predicable" "yes")])
3036+
3037+(define_insn "*stm2_db"
3038+ [(match_parallel 0 "store_multiple_operation"
3039+ [(set (mem:SI (plus:SI (match_operand:SI 1 "s_register_operand" "rk") (const_int -8)))
3040+ (match_operand:SI 2 "arm_hard_register_operand" ""))
3041+ (set (mem:SI (plus:SI (match_dup 1) (const_int -4)))
3042+ (match_operand:SI 3 "arm_hard_register_operand" ""))])]
3043+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 2"
3044+ "stm%(db%)\t%1, {%2, %3}"
3045+ [(set_attr "type" "store2")
3046+ (set_attr "predicable" "yes")])
3047+
3048+(define_insn "*stm2_db_update"
3049+ [(match_parallel 0 "store_multiple_operation"
3050+ [(set (match_operand:SI 1 "s_register_operand" "=rk")
3051+ (plus:SI (match_operand:SI 2 "s_register_operand" "1") (const_int -8)))
3052+ (set (mem:SI (plus:SI (match_dup 2) (const_int -8)))
3053+ (match_operand:SI 3 "arm_hard_register_operand" ""))
3054+ (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
3055+ (match_operand:SI 4 "arm_hard_register_operand" ""))])]
3056+ "TARGET_32BIT && XVECLEN (operands[0], 0) == 3"
3057+ "stm%(db%)\t%1!, {%3, %4}"
3058+ [(set_attr "type" "store2")
3059+ (set_attr "predicable" "yes")])
3060+
3061+(define_peephole2
3062+ [(set (match_operand:SI 0 "s_register_operand" "")
3063+ (match_operand:SI 2 "memory_operand" ""))
3064+ (set (match_operand:SI 1 "s_register_operand" "")
3065+ (match_operand:SI 3 "memory_operand" ""))]
3066+ ""
3067+ [(const_int 0)]
3068+{
3069+ if (gen_ldm_seq (operands, 2, false))
3070+ DONE;
3071+ else
3072+ FAIL;
3073+})
3074+
3075+(define_peephole2
3076+ [(set (match_operand:SI 0 "s_register_operand" "")
3077+ (match_operand:SI 4 "const_int_operand" ""))
3078+ (set (match_operand:SI 2 "memory_operand" "")
3079+ (match_dup 0))
3080+ (set (match_operand:SI 1 "s_register_operand" "")
3081+ (match_operand:SI 5 "const_int_operand" ""))
3082+ (set (match_operand:SI 3 "memory_operand" "")
3083+ (match_dup 1))]
3084+ ""
3085+ [(const_int 0)]
3086+{
3087+ if (gen_const_stm_seq (operands, 2))
3088+ DONE;
3089+ else
3090+ FAIL;
3091+})
3092+
3093+(define_peephole2
3094+ [(set (match_operand:SI 0 "s_register_operand" "")
3095+ (match_operand:SI 4 "const_int_operand" ""))
3096+ (set (match_operand:SI 1 "s_register_operand" "")
3097+ (match_operand:SI 5 "const_int_operand" ""))
3098+ (set (match_operand:SI 2 "memory_operand" "")
3099+ (match_dup 0))
3100+ (set (match_operand:SI 3 "memory_operand" "")
3101+ (match_dup 1))]
3102+ ""
3103+ [(const_int 0)]
3104+{
3105+ if (gen_const_stm_seq (operands, 2))
3106+ DONE;
3107+ else
3108+ FAIL;
3109+})
3110+
3111+(define_peephole2
3112+ [(set (match_operand:SI 2 "memory_operand" "")
3113+ (match_operand:SI 0 "s_register_operand" ""))
3114+ (set (match_operand:SI 3 "memory_operand" "")
3115+ (match_operand:SI 1 "s_register_operand" ""))]
3116+ ""
3117+ [(const_int 0)]
3118+{
3119+ if (gen_stm_seq (operands, 2))
3120+ DONE;
3121+ else
3122+ FAIL;
3123+})
3124+
3125+(define_peephole2
3126+ [(set (match_operand:SI 0 "s_register_operand" "")
3127+ (match_operand:SI 2 "memory_operand" ""))
3128+ (set (match_operand:SI 1 "s_register_operand" "")
3129+ (match_operand:SI 3 "memory_operand" ""))
3130+ (parallel
3131+ [(set (match_operand:SI 4 "s_register_operand" "")
3132+ (match_operator:SI 5 "commutative_binary_operator"
3133+ [(match_operand:SI 6 "s_register_operand" "")
3134+ (match_operand:SI 7 "s_register_operand" "")]))
3135+ (clobber (reg:CC CC_REGNUM))])]
3136+ "(((operands[6] == operands[0] && operands[7] == operands[1])
3137+ || (operands[7] == operands[0] && operands[6] == operands[1]))
3138+ && peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, operands[1]))"
3139+ [(parallel
3140+ [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))
3141+ (clobber (reg:CC CC_REGNUM))])]
3142+{
3143+ if (!gen_ldm_seq (operands, 2, true))
3144+ FAIL;
3145+})
3146+
3147+(define_peephole2
3148+ [(set (match_operand:SI 0 "s_register_operand" "")
3149+ (match_operand:SI 2 "memory_operand" ""))
3150+ (set (match_operand:SI 1 "s_register_operand" "")
3151+ (match_operand:SI 3 "memory_operand" ""))
3152+ (set (match_operand:SI 4 "s_register_operand" "")
3153+ (match_operator:SI 5 "commutative_binary_operator"
3154+ [(match_operand:SI 6 "s_register_operand" "")
3155+ (match_operand:SI 7 "s_register_operand" "")]))]
3156+ "(((operands[6] == operands[0] && operands[7] == operands[1])
3157+ || (operands[7] == operands[0] && operands[6] == operands[1]))
3158+ && peep2_reg_dead_p (3, operands[0]) && peep2_reg_dead_p (3, operands[1]))"
3159+ [(set (match_dup 4) (match_op_dup 5 [(match_dup 6) (match_dup 7)]))]
3160+{
3161+ if (!gen_ldm_seq (operands, 2, true))
3162+ FAIL;
3163+})
3164+
3165Index: gcc-4_5-branch/gcc/config/arm/predicates.md
3166===================================================================
3167--- gcc-4_5-branch.orig/gcc/config/arm/predicates.md
3168+++ gcc-4_5-branch/gcc/config/arm/predicates.md
3169@@ -211,6 +211,11 @@
3170 (and (match_code "ior,xor,and")
3171 (match_test "mode == GET_MODE (op)")))
3172
3173+;; True for commutative operators
3174+(define_special_predicate "commutative_binary_operator"
3175+ (and (match_code "ior,xor,and,plus")
3176+ (match_test "mode == GET_MODE (op)")))
3177+
3178 ;; True for shift operators.
3179 (define_special_predicate "shift_operator"
3180 (and (ior (ior (and (match_code "mult")
3181@@ -334,16 +339,20 @@
3182 (match_code "parallel")
3183 {
3184 HOST_WIDE_INT count = XVECLEN (op, 0);
3185- int dest_regno;
3186+ unsigned dest_regno;
3187 rtx src_addr;
3188 HOST_WIDE_INT i = 1, base = 0;
3189+ HOST_WIDE_INT offset = 0;
3190 rtx elt;
3191+ bool addr_reg_loaded = false;
3192+ bool update = false;
3193
3194 if (low_irq_latency)
3195 return false;
3196
3197 if (count <= 1
3198- || GET_CODE (XVECEXP (op, 0, 0)) != SET)
3199+ || GET_CODE (XVECEXP (op, 0, 0)) != SET
3200+ || !REG_P (SET_DEST (XVECEXP (op, 0, 0))))
3201 return false;
3202
3203 /* Check to see if this might be a write-back. */
3204@@ -351,6 +360,7 @@
3205 {
3206 i++;
3207 base = 1;
3208+ update = true;
3209
3210 /* Now check it more carefully. */
3211 if (GET_CODE (SET_DEST (elt)) != REG
3212@@ -369,6 +379,15 @@
3213
3214 dest_regno = REGNO (SET_DEST (XVECEXP (op, 0, i - 1)));
3215 src_addr = XEXP (SET_SRC (XVECEXP (op, 0, i - 1)), 0);
3216+ if (GET_CODE (src_addr) == PLUS)
3217+ {
3218+ if (GET_CODE (XEXP (src_addr, 1)) != CONST_INT)
3219+ return false;
3220+ offset = INTVAL (XEXP (src_addr, 1));
3221+ src_addr = XEXP (src_addr, 0);
3222+ }
3223+ if (!REG_P (src_addr))
3224+ return false;
3225
3226 for (; i < count; i++)
3227 {
3228@@ -377,16 +396,28 @@
3229 if (GET_CODE (elt) != SET
3230 || GET_CODE (SET_DEST (elt)) != REG
3231 || GET_MODE (SET_DEST (elt)) != SImode
3232- || REGNO (SET_DEST (elt)) != (unsigned int)(dest_regno + i - base)
3233+ || REGNO (SET_DEST (elt)) <= dest_regno
3234 || GET_CODE (SET_SRC (elt)) != MEM
3235 || GET_MODE (SET_SRC (elt)) != SImode
3236- || GET_CODE (XEXP (SET_SRC (elt), 0)) != PLUS
3237- || !rtx_equal_p (XEXP (XEXP (SET_SRC (elt), 0), 0), src_addr)
3238- || GET_CODE (XEXP (XEXP (SET_SRC (elt), 0), 1)) != CONST_INT
3239- || INTVAL (XEXP (XEXP (SET_SRC (elt), 0), 1)) != (i - base) * 4)
3240+ || ((GET_CODE (XEXP (SET_SRC (elt), 0)) != PLUS
3241+ || !rtx_equal_p (XEXP (XEXP (SET_SRC (elt), 0), 0), src_addr)
3242+ || GET_CODE (XEXP (XEXP (SET_SRC (elt), 0), 1)) != CONST_INT
3243+ || INTVAL (XEXP (XEXP (SET_SRC (elt), 0), 1)) != offset + (i - base) * 4)
3244+ && (!REG_P (XEXP (SET_SRC (elt), 0))
3245+ || offset + (i - base) * 4 != 0)))
3246 return false;
3247+ dest_regno = REGNO (SET_DEST (elt));
3248+ if (dest_regno == REGNO (src_addr))
3249+ addr_reg_loaded = true;
3250 }
3251-
3252+ /* For Thumb, we only have updating instructions. If the pattern does
3253+ not describe an update, it must be because the address register is
3254+ in the list of loaded registers - on the hardware, this has the effect
3255+ of overriding the update. */
3256+ if (update && addr_reg_loaded)
3257+ return false;
3258+ if (TARGET_THUMB1)
3259+ return update || addr_reg_loaded;
3260 return true;
3261 })
3262
3263@@ -394,9 +425,9 @@
3264 (match_code "parallel")
3265 {
3266 HOST_WIDE_INT count = XVECLEN (op, 0);
3267- int src_regno;
3268+ unsigned src_regno;
3269 rtx dest_addr;
3270- HOST_WIDE_INT i = 1, base = 0;
3271+ HOST_WIDE_INT i = 1, base = 0, offset = 0;
3272 rtx elt;
3273
3274 if (low_irq_latency)
3275@@ -430,6 +461,16 @@
3276 src_regno = REGNO (SET_SRC (XVECEXP (op, 0, i - 1)));
3277 dest_addr = XEXP (SET_DEST (XVECEXP (op, 0, i - 1)), 0);
3278
3279+ if (GET_CODE (dest_addr) == PLUS)
3280+ {
3281+ if (GET_CODE (XEXP (dest_addr, 1)) != CONST_INT)
3282+ return false;
3283+ offset = INTVAL (XEXP (dest_addr, 1));
3284+ dest_addr = XEXP (dest_addr, 0);
3285+ }
3286+ if (!REG_P (dest_addr))
3287+ return false;
3288+
3289 for (; i < count; i++)
3290 {
3291 elt = XVECEXP (op, 0, i);
3292@@ -437,14 +478,17 @@
3293 if (GET_CODE (elt) != SET
3294 || GET_CODE (SET_SRC (elt)) != REG
3295 || GET_MODE (SET_SRC (elt)) != SImode
3296- || REGNO (SET_SRC (elt)) != (unsigned int)(src_regno + i - base)
3297+ || REGNO (SET_SRC (elt)) <= src_regno
3298 || GET_CODE (SET_DEST (elt)) != MEM
3299 || GET_MODE (SET_DEST (elt)) != SImode
3300- || GET_CODE (XEXP (SET_DEST (elt), 0)) != PLUS
3301- || !rtx_equal_p (XEXP (XEXP (SET_DEST (elt), 0), 0), dest_addr)
3302- || GET_CODE (XEXP (XEXP (SET_DEST (elt), 0), 1)) != CONST_INT
3303- || INTVAL (XEXP (XEXP (SET_DEST (elt), 0), 1)) != (i - base) * 4)
3304+ || ((GET_CODE (XEXP (SET_DEST (elt), 0)) != PLUS
3305+ || !rtx_equal_p (XEXP (XEXP (SET_DEST (elt), 0), 0), dest_addr)
3306+ || GET_CODE (XEXP (XEXP (SET_DEST (elt), 0), 1)) != CONST_INT
3307+ || INTVAL (XEXP (XEXP (SET_DEST (elt), 0), 1)) != offset + (i - base) * 4)
3308+ && (!REG_P (XEXP (SET_DEST (elt), 0))
3309+ || offset + (i - base) * 4 != 0)))
3310 return false;
3311+ src_regno = REGNO (SET_SRC (elt));
3312 }
3313
3314 return true;
3315Index: gcc-4_5-branch/gcc/config/i386/i386.md
3316===================================================================
3317--- gcc-4_5-branch.orig/gcc/config/i386/i386.md
3318+++ gcc-4_5-branch/gcc/config/i386/i386.md
3319@@ -4934,6 +4934,7 @@
3320 (set (match_operand:SSEMODEI24 2 "register_operand" "")
3321 (fix:SSEMODEI24 (match_dup 0)))]
3322 "TARGET_SHORTEN_X87_SSE
3323+ && !(TARGET_AVOID_VECTOR_DECODE && optimize_insn_for_speed_p ())
3324 && peep2_reg_dead_p (2, operands[0])"
3325 [(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))]
3326 "")
3327@@ -20036,15 +20037,14 @@
3328 ;; leal (%edx,%eax,4), %eax
3329
3330 (define_peephole2
3331- [(parallel [(set (match_operand 0 "register_operand" "")
3332+ [(match_scratch:P 5 "r")
3333+ (parallel [(set (match_operand 0 "register_operand" "")
3334 (ashift (match_operand 1 "register_operand" "")
3335 (match_operand 2 "const_int_operand" "")))
3336 (clobber (reg:CC FLAGS_REG))])
3337- (set (match_operand 3 "register_operand")
3338- (match_operand 4 "x86_64_general_operand" ""))
3339- (parallel [(set (match_operand 5 "register_operand" "")
3340- (plus (match_operand 6 "register_operand" "")
3341- (match_operand 7 "register_operand" "")))
3342+ (parallel [(set (match_operand 3 "register_operand" "")
3343+ (plus (match_dup 0)
3344+ (match_operand 4 "x86_64_general_operand" "")))
3345 (clobber (reg:CC FLAGS_REG))])]
3346 "INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) <= 3
3347 /* Validate MODE for lea. */
3348@@ -20053,31 +20053,27 @@
3349 || GET_MODE (operands[0]) == HImode))
3350 || GET_MODE (operands[0]) == SImode
3351 || (TARGET_64BIT && GET_MODE (operands[0]) == DImode))
3352+ && (rtx_equal_p (operands[0], operands[3])
3353+ || peep2_reg_dead_p (2, operands[0]))
3354 /* We reorder load and the shift. */
3355- && !rtx_equal_p (operands[1], operands[3])
3356- && !reg_overlap_mentioned_p (operands[0], operands[4])
3357- /* Last PLUS must consist of operand 0 and 3. */
3358- && !rtx_equal_p (operands[0], operands[3])
3359- && (rtx_equal_p (operands[3], operands[6])
3360- || rtx_equal_p (operands[3], operands[7]))
3361- && (rtx_equal_p (operands[0], operands[6])
3362- || rtx_equal_p (operands[0], operands[7]))
3363- /* The intermediate operand 0 must die or be same as output. */
3364- && (rtx_equal_p (operands[0], operands[5])
3365- || peep2_reg_dead_p (3, operands[0]))"
3366- [(set (match_dup 3) (match_dup 4))
3367+ && !reg_overlap_mentioned_p (operands[0], operands[4])"
3368+ [(set (match_dup 5) (match_dup 4))
3369 (set (match_dup 0) (match_dup 1))]
3370 {
3371- enum machine_mode mode = GET_MODE (operands[5]) == DImode ? DImode : SImode;
3372+ enum machine_mode mode = GET_MODE (operands[1]) == DImode ? DImode : SImode;
3373 int scale = 1 << INTVAL (operands[2]);
3374 rtx index = gen_lowpart (Pmode, operands[1]);
3375- rtx base = gen_lowpart (Pmode, operands[3]);
3376- rtx dest = gen_lowpart (mode, operands[5]);
3377+ rtx base = gen_lowpart (Pmode, operands[5]);
3378+ rtx dest = gen_lowpart (mode, operands[3]);
3379
3380 operands[1] = gen_rtx_PLUS (Pmode, base,
3381 gen_rtx_MULT (Pmode, index, GEN_INT (scale)));
3382+ operands[5] = base;
3383 if (mode != Pmode)
3384- operands[1] = gen_rtx_SUBREG (mode, operands[1], 0);
3385+ {
3386+ operands[1] = gen_rtx_SUBREG (mode, operands[1], 0);
3387+ operands[5] = gen_rtx_SUBREG (mode, operands[5], 0);
3388+ }
3389 operands[0] = dest;
3390 })
3391
3392Index: gcc-4_5-branch/gcc/df-problems.c
3393===================================================================
3394--- gcc-4_5-branch.orig/gcc/df-problems.c
3395+++ gcc-4_5-branch/gcc/df-problems.c
3396@@ -3748,9 +3748,22 @@ df_simulate_find_defs (rtx insn, bitmap
3397 for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
3398 {
3399 df_ref def = *def_rec;
3400- /* If the def is to only part of the reg, it does
3401- not kill the other defs that reach here. */
3402- if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
3403+ bitmap_set_bit (defs, DF_REF_REGNO (def));
3404+ }
3405+}
3406+
3407+/* Find the set of real DEFs, which are not clobbers, for INSN. */
3408+
3409+void
3410+df_simulate_find_noclobber_defs (rtx insn, bitmap defs)
3411+{
3412+ df_ref *def_rec;
3413+ unsigned int uid = INSN_UID (insn);
3414+
3415+ for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
3416+ {
3417+ df_ref def = *def_rec;
3418+ if (!(DF_REF_FLAGS (def) & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER)))
3419 bitmap_set_bit (defs, DF_REF_REGNO (def));
3420 }
3421 }
3422@@ -3921,7 +3934,7 @@ df_simulate_initialize_forwards (basic_b
3423 {
3424 df_ref def = *def_rec;
3425 if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
3426- bitmap_clear_bit (live, DF_REF_REGNO (def));
3427+ bitmap_set_bit (live, DF_REF_REGNO (def));
3428 }
3429 }
3430
3431@@ -3942,7 +3955,7 @@ df_simulate_one_insn_forwards (basic_blo
3432 while here the scan is performed forwards! So, first assume that the
3433 def is live, and if this is not true REG_UNUSED notes will rectify the
3434 situation. */
3435- df_simulate_find_defs (insn, live);
3436+ df_simulate_find_noclobber_defs (insn, live);
3437
3438 /* Clear all of the registers that go dead. */
3439 for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
3440Index: gcc-4_5-branch/gcc/df.h
3441===================================================================
3442--- gcc-4_5-branch.orig/gcc/df.h
3443+++ gcc-4_5-branch/gcc/df.h
3444@@ -978,6 +978,7 @@ extern void df_note_add_problem (void);
3445 extern void df_md_add_problem (void);
3446 extern void df_md_simulate_artificial_defs_at_top (basic_block, bitmap);
3447 extern void df_md_simulate_one_insn (basic_block, rtx, bitmap);
3448+extern void df_simulate_find_noclobber_defs (rtx, bitmap);
3449 extern void df_simulate_find_defs (rtx, bitmap);
3450 extern void df_simulate_defs (rtx, bitmap);
3451 extern void df_simulate_uses (rtx, bitmap);
3452Index: gcc-4_5-branch/gcc/fwprop.c
3453===================================================================
3454--- gcc-4_5-branch.orig/gcc/fwprop.c
3455+++ gcc-4_5-branch/gcc/fwprop.c
3456@@ -228,7 +228,10 @@ single_def_use_enter_block (struct dom_w
3457
3458 process_uses (df_get_artificial_uses (bb_index), DF_REF_AT_TOP);
3459 process_defs (df_get_artificial_defs (bb_index), DF_REF_AT_TOP);
3460- df_simulate_initialize_forwards (bb, local_lr);
3461+
3462+ /* We don't call df_simulate_initialize_forwards, as it may overestimate
3463+ the live registers if there are unused artificial defs. We prefer
3464+ liveness to be underestimated. */
3465
3466 FOR_BB_INSNS (bb, insn)
3467 if (INSN_P (insn))
3468Index: gcc-4_5-branch/gcc/genoutput.c
3469===================================================================
3470--- gcc-4_5-branch.orig/gcc/genoutput.c
3471+++ gcc-4_5-branch/gcc/genoutput.c
3472@@ -266,6 +266,8 @@ output_operand_data (void)
3473
3474 printf (" %d,\n", d->strict_low);
3475
3476+ printf (" %d,\n", d->constraint == NULL ? 1 : 0);
3477+
3478 printf (" %d\n", d->eliminable);
3479
3480 printf(" },\n");
3481Index: gcc-4_5-branch/gcc/genrecog.c
3482===================================================================
3483--- gcc-4_5-branch.orig/gcc/genrecog.c
3484+++ gcc-4_5-branch/gcc/genrecog.c
3485@@ -1782,20 +1782,11 @@ change_state (const char *oldpos, const
3486 int odepth = strlen (oldpos);
3487 int ndepth = strlen (newpos);
3488 int depth;
3489- int old_has_insn, new_has_insn;
3490
3491 /* Pop up as many levels as necessary. */
3492 for (depth = odepth; strncmp (oldpos, newpos, depth) != 0; --depth)
3493 continue;
3494
3495- /* Hunt for the last [A-Z] in both strings. */
3496- for (old_has_insn = odepth - 1; old_has_insn >= 0; --old_has_insn)
3497- if (ISUPPER (oldpos[old_has_insn]))
3498- break;
3499- for (new_has_insn = ndepth - 1; new_has_insn >= 0; --new_has_insn)
3500- if (ISUPPER (newpos[new_has_insn]))
3501- break;
3502-
3503 /* Go down to desired level. */
3504 while (depth < ndepth)
3505 {
3506Index: gcc-4_5-branch/gcc/ifcvt.c
3507===================================================================
3508--- gcc-4_5-branch.orig/gcc/ifcvt.c
3509+++ gcc-4_5-branch/gcc/ifcvt.c
3510@@ -4011,6 +4011,7 @@ dead_or_predicable (basic_block test_bb,
3511 basic_block new_dest = dest_edge->dest;
3512 rtx head, end, jump, earliest = NULL_RTX, old_dest;
3513 bitmap merge_set = NULL;
3514+ bitmap merge_set_noclobber = NULL;
3515 /* Number of pending changes. */
3516 int n_validated_changes = 0;
3517 rtx new_dest_label;
3518@@ -4169,6 +4170,7 @@ dead_or_predicable (basic_block test_bb,
3519 end of the block. */
3520
3521 merge_set = BITMAP_ALLOC (&reg_obstack);
3522+ merge_set_noclobber = BITMAP_ALLOC (&reg_obstack);
3523
3524 /* If we allocated new pseudos (e.g. in the conditional move
3525 expander called from noce_emit_cmove), we must resize the
3526@@ -4187,6 +4189,7 @@ dead_or_predicable (basic_block test_bb,
3527 df_ref def = *def_rec;
3528 bitmap_set_bit (merge_set, DF_REF_REGNO (def));
3529 }
3530+ df_simulate_find_noclobber_defs (insn, merge_set_noclobber);
3531 }
3532 }
3533
3534@@ -4197,7 +4200,7 @@ dead_or_predicable (basic_block test_bb,
3535 unsigned i;
3536 bitmap_iterator bi;
3537
3538- EXECUTE_IF_SET_IN_BITMAP (merge_set, 0, i, bi)
3539+ EXECUTE_IF_SET_IN_BITMAP (merge_set_noclobber, 0, i, bi)
3540 {
3541 if (i < FIRST_PSEUDO_REGISTER
3542 && ! fixed_regs[i]
3543@@ -4233,7 +4236,7 @@ dead_or_predicable (basic_block test_bb,
3544 TEST_SET & DF_LIVE_IN (merge_bb)
3545 are empty. */
3546
3547- if (bitmap_intersect_p (merge_set, test_set)
3548+ if (bitmap_intersect_p (merge_set_noclobber, test_set)
3549 || bitmap_intersect_p (merge_set, test_live)
3550 || bitmap_intersect_p (test_set, df_get_live_in (merge_bb)))
3551 intersect = true;
3552@@ -4320,6 +4323,7 @@ dead_or_predicable (basic_block test_bb,
3553 remove_reg_equal_equiv_notes_for_regno (i);
3554
3555 BITMAP_FREE (merge_set);
3556+ BITMAP_FREE (merge_set_noclobber);
3557 }
3558
3559 reorder_insns (head, end, PREV_INSN (earliest));
3560@@ -4340,7 +4344,10 @@ dead_or_predicable (basic_block test_bb,
3561 cancel_changes (0);
3562 fail:
3563 if (merge_set)
3564- BITMAP_FREE (merge_set);
3565+ {
3566+ BITMAP_FREE (merge_set);
3567+ BITMAP_FREE (merge_set_noclobber);
3568+ }
3569 return FALSE;
3570 }
3571
3572Index: gcc-4_5-branch/gcc/recog.c
3573===================================================================
3574--- gcc-4_5-branch.orig/gcc/recog.c
3575+++ gcc-4_5-branch/gcc/recog.c
3576@@ -2082,6 +2082,7 @@ extract_insn (rtx insn)
3577 recog_data.operand_loc,
3578 recog_data.constraints,
3579 recog_data.operand_mode, NULL);
3580+ memset (recog_data.is_operator, 0, sizeof recog_data.is_operator);
3581 if (noperands > 0)
3582 {
3583 const char *p = recog_data.constraints[0];
3584@@ -2111,6 +2112,7 @@ extract_insn (rtx insn)
3585 for (i = 0; i < noperands; i++)
3586 {
3587 recog_data.constraints[i] = insn_data[icode].operand[i].constraint;
3588+ recog_data.is_operator[i] = insn_data[icode].operand[i].is_operator;
3589 recog_data.operand_mode[i] = insn_data[icode].operand[i].mode;
3590 /* VOIDmode match_operands gets mode from their real operand. */
3591 if (recog_data.operand_mode[i] == VOIDmode)
3592@@ -2909,6 +2911,10 @@ struct peep2_insn_data
3593
3594 static struct peep2_insn_data peep2_insn_data[MAX_INSNS_PER_PEEP2 + 1];
3595 static int peep2_current;
3596+
3597+static bool peep2_do_rebuild_jump_labels;
3598+static bool peep2_do_cleanup_cfg;
3599+
3600 /* The number of instructions available to match a peep2. */
3601 int peep2_current_count;
3602
3603@@ -2917,6 +2923,16 @@ int peep2_current_count;
3604 DF_LIVE_OUT for the block. */
3605 #define PEEP2_EOB pc_rtx
3606
3607+/* Wrap N to fit into the peep2_insn_data buffer. */
3608+
3609+static int
3610+peep2_buf_position (int n)
3611+{
3612+ if (n >= MAX_INSNS_PER_PEEP2 + 1)
3613+ n -= MAX_INSNS_PER_PEEP2 + 1;
3614+ return n;
3615+}
3616+
3617 /* Return the Nth non-note insn after `current', or return NULL_RTX if it
3618 does not exist. Used by the recognizer to find the next insn to match
3619 in a multi-insn pattern. */
3620@@ -2926,9 +2942,7 @@ peep2_next_insn (int n)
3621 {
3622 gcc_assert (n <= peep2_current_count);
3623
3624- n += peep2_current;
3625- if (n >= MAX_INSNS_PER_PEEP2 + 1)
3626- n -= MAX_INSNS_PER_PEEP2 + 1;
3627+ n = peep2_buf_position (peep2_current + n);
3628
3629 return peep2_insn_data[n].insn;
3630 }
3631@@ -2941,9 +2955,7 @@ peep2_regno_dead_p (int ofs, int regno)
3632 {
3633 gcc_assert (ofs < MAX_INSNS_PER_PEEP2 + 1);
3634
3635- ofs += peep2_current;
3636- if (ofs >= MAX_INSNS_PER_PEEP2 + 1)
3637- ofs -= MAX_INSNS_PER_PEEP2 + 1;
3638+ ofs = peep2_buf_position (peep2_current + ofs);
3639
3640 gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX);
3641
3642@@ -2959,9 +2971,7 @@ peep2_reg_dead_p (int ofs, rtx reg)
3643
3644 gcc_assert (ofs < MAX_INSNS_PER_PEEP2 + 1);
3645
3646- ofs += peep2_current;
3647- if (ofs >= MAX_INSNS_PER_PEEP2 + 1)
3648- ofs -= MAX_INSNS_PER_PEEP2 + 1;
3649+ ofs = peep2_buf_position (peep2_current + ofs);
3650
3651 gcc_assert (peep2_insn_data[ofs].insn != NULL_RTX);
3652
3653@@ -2996,12 +3006,8 @@ peep2_find_free_register (int from, int
3654 gcc_assert (from < MAX_INSNS_PER_PEEP2 + 1);
3655 gcc_assert (to < MAX_INSNS_PER_PEEP2 + 1);
3656
3657- from += peep2_current;
3658- if (from >= MAX_INSNS_PER_PEEP2 + 1)
3659- from -= MAX_INSNS_PER_PEEP2 + 1;
3660- to += peep2_current;
3661- if (to >= MAX_INSNS_PER_PEEP2 + 1)
3662- to -= MAX_INSNS_PER_PEEP2 + 1;
3663+ from = peep2_buf_position (peep2_current + from);
3664+ to = peep2_buf_position (peep2_current + to);
3665
3666 gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
3667 REG_SET_TO_HARD_REG_SET (live, peep2_insn_data[from].live_before);
3668@@ -3010,8 +3016,7 @@ peep2_find_free_register (int from, int
3669 {
3670 HARD_REG_SET this_live;
3671
3672- if (++from >= MAX_INSNS_PER_PEEP2 + 1)
3673- from = 0;
3674+ from = peep2_buf_position (from + 1);
3675 gcc_assert (peep2_insn_data[from].insn != NULL_RTX);
3676 REG_SET_TO_HARD_REG_SET (this_live, peep2_insn_data[from].live_before);
3677 IOR_HARD_REG_SET (live, this_live);
3678@@ -3104,19 +3109,234 @@ peep2_reinit_state (regset live)
3679 COPY_REG_SET (peep2_insn_data[MAX_INSNS_PER_PEEP2].live_before, live);
3680 }
3681
3682+/* While scanning basic block BB, we found a match of length MATCH_LEN,
3683+ starting at INSN. Perform the replacement, removing the old insns and
3684+ replacing them with ATTEMPT. Returns the last insn emitted. */
3685+
3686+static rtx
3687+peep2_attempt (basic_block bb, rtx insn, int match_len, rtx attempt)
3688+{
3689+ int i;
3690+ rtx last, note, before_try, x;
3691+ bool was_call = false;
3692+
3693+ /* If we are splitting a CALL_INSN, look for the CALL_INSN
3694+ in SEQ and copy our CALL_INSN_FUNCTION_USAGE and other
3695+ cfg-related call notes. */
3696+ for (i = 0; i <= match_len; ++i)
3697+ {
3698+ int j;
3699+ rtx old_insn, new_insn, note;
3700+
3701+ j = peep2_buf_position (peep2_current + i);
3702+ old_insn = peep2_insn_data[j].insn;
3703+ if (!CALL_P (old_insn))
3704+ continue;
3705+ was_call = true;
3706+
3707+ new_insn = attempt;
3708+ while (new_insn != NULL_RTX)
3709+ {
3710+ if (CALL_P (new_insn))
3711+ break;
3712+ new_insn = NEXT_INSN (new_insn);
3713+ }
3714+
3715+ gcc_assert (new_insn != NULL_RTX);
3716+
3717+ CALL_INSN_FUNCTION_USAGE (new_insn)
3718+ = CALL_INSN_FUNCTION_USAGE (old_insn);
3719+
3720+ for (note = REG_NOTES (old_insn);
3721+ note;
3722+ note = XEXP (note, 1))
3723+ switch (REG_NOTE_KIND (note))
3724+ {
3725+ case REG_NORETURN:
3726+ case REG_SETJMP:
3727+ add_reg_note (new_insn, REG_NOTE_KIND (note),
3728+ XEXP (note, 0));
3729+ break;
3730+ default:
3731+ /* Discard all other reg notes. */
3732+ break;
3733+ }
3734+
3735+ /* Croak if there is another call in the sequence. */
3736+ while (++i <= match_len)
3737+ {
3738+ j = peep2_buf_position (peep2_current + i);
3739+ old_insn = peep2_insn_data[j].insn;
3740+ gcc_assert (!CALL_P (old_insn));
3741+ }
3742+ break;
3743+ }
3744+
3745+ i = peep2_buf_position (peep2_current + match_len);
3746+
3747+ note = find_reg_note (peep2_insn_data[i].insn, REG_EH_REGION, NULL_RTX);
3748+
3749+ /* Replace the old sequence with the new. */
3750+ last = emit_insn_after_setloc (attempt,
3751+ peep2_insn_data[i].insn,
3752+ INSN_LOCATOR (peep2_insn_data[i].insn));
3753+ before_try = PREV_INSN (insn);
3754+ delete_insn_chain (insn, peep2_insn_data[i].insn, false);
3755+
3756+ /* Re-insert the EH_REGION notes. */
3757+ if (note || (was_call && nonlocal_goto_handler_labels))
3758+ {
3759+ edge eh_edge;
3760+ edge_iterator ei;
3761+
3762+ FOR_EACH_EDGE (eh_edge, ei, bb->succs)
3763+ if (eh_edge->flags & (EDGE_EH | EDGE_ABNORMAL_CALL))
3764+ break;
3765+
3766+ if (note)
3767+ copy_reg_eh_region_note_backward (note, last, before_try);
3768+
3769+ if (eh_edge)
3770+ for (x = last; x != before_try; x = PREV_INSN (x))
3771+ if (x != BB_END (bb)
3772+ && (can_throw_internal (x)
3773+ || can_nonlocal_goto (x)))
3774+ {
3775+ edge nfte, nehe;
3776+ int flags;
3777+
3778+ nfte = split_block (bb, x);
3779+ flags = (eh_edge->flags
3780+ & (EDGE_EH | EDGE_ABNORMAL));
3781+ if (CALL_P (x))
3782+ flags |= EDGE_ABNORMAL_CALL;
3783+ nehe = make_edge (nfte->src, eh_edge->dest,
3784+ flags);
3785+
3786+ nehe->probability = eh_edge->probability;
3787+ nfte->probability
3788+ = REG_BR_PROB_BASE - nehe->probability;
3789+
3790+ peep2_do_cleanup_cfg |= purge_dead_edges (nfte->dest);
3791+ bb = nfte->src;
3792+ eh_edge = nehe;
3793+ }
3794+
3795+ /* Converting possibly trapping insn to non-trapping is
3796+ possible. Zap dummy outgoing edges. */
3797+ peep2_do_cleanup_cfg |= purge_dead_edges (bb);
3798+ }
3799+
3800+ /* If we generated a jump instruction, it won't have
3801+ JUMP_LABEL set. Recompute after we're done. */
3802+ for (x = last; x != before_try; x = PREV_INSN (x))
3803+ if (JUMP_P (x))
3804+ {
3805+ peep2_do_rebuild_jump_labels = true;
3806+ break;
3807+ }
3808+
3809+ return last;
3810+}
3811+
3812+/* After performing a replacement in basic block BB, fix up the life
3813+ information in our buffer. LAST is the last of the insns that we
3814+ emitted as a replacement. PREV is the insn before the start of
3815+ the replacement. MATCH_LEN is the number of instructions that were
3816+ matched, and which now need to be replaced in the buffer. */
3817+
3818+static void
3819+peep2_update_life (basic_block bb, int match_len, rtx last, rtx prev)
3820+{
3821+ int i = peep2_buf_position (peep2_current + match_len + 1);
3822+ rtx x;
3823+ regset_head live;
3824+
3825+ INIT_REG_SET (&live);
3826+ COPY_REG_SET (&live, peep2_insn_data[i].live_before);
3827+
3828+ gcc_assert (peep2_current_count >= match_len + 1);
3829+ peep2_current_count -= match_len + 1;
3830+
3831+ x = last;
3832+ do
3833+ {
3834+ if (INSN_P (x))
3835+ {
3836+ df_insn_rescan (x);
3837+ if (peep2_current_count < MAX_INSNS_PER_PEEP2)
3838+ {
3839+ peep2_current_count++;
3840+ if (--i < 0)
3841+ i = MAX_INSNS_PER_PEEP2;
3842+ peep2_insn_data[i].insn = x;
3843+ df_simulate_one_insn_backwards (bb, x, &live);
3844+ COPY_REG_SET (peep2_insn_data[i].live_before, &live);
3845+ }
3846+ }
3847+ x = PREV_INSN (x);
3848+ }
3849+ while (x != prev);
3850+ CLEAR_REG_SET (&live);
3851+
3852+ peep2_current = i;
3853+}
3854+
3855+/* Add INSN, which is in BB, at the end of the peep2 insn buffer if possible.
3856+ Return true if we added it, false otherwise. The caller will try to match
3857+ peepholes against the buffer if we return false; otherwise it will try to
3858+ add more instructions to the buffer. */
3859+
3860+static bool
3861+peep2_fill_buffer (basic_block bb, rtx insn, regset live)
3862+{
3863+ int pos;
3864+
3865+ /* Once we have filled the maximum number of insns the buffer can hold,
3866+ allow the caller to match the insns against peepholes. We wait until
3867+ the buffer is full in case the target has similar peepholes of different
3868+ length; we always want to match the longest if possible. */
3869+ if (peep2_current_count == MAX_INSNS_PER_PEEP2)
3870+ return false;
3871+
3872+ /* If an insn has RTX_FRAME_RELATED_P set, peephole substitution would lose
3873+ the REG_FRAME_RELATED_EXPR that is attached. */
3874+ if (RTX_FRAME_RELATED_P (insn))
3875+ {
3876+ /* Let the buffer drain first. */
3877+ if (peep2_current_count > 0)
3878+ return false;
3879+ /* Step over the insn then return true without adding the insn
3880+ to the buffer; this will cause us to process the next
3881+ insn. */
3882+ df_simulate_one_insn_forwards (bb, insn, live);
3883+ return true;
3884+ }
3885+
3886+ pos = peep2_buf_position (peep2_current + peep2_current_count);
3887+ peep2_insn_data[pos].insn = insn;
3888+ COPY_REG_SET (peep2_insn_data[pos].live_before, live);
3889+ peep2_current_count++;
3890+
3891+ df_simulate_one_insn_forwards (bb, insn, live);
3892+ return true;
3893+}
3894+
3895 /* Perform the peephole2 optimization pass. */
3896
3897 static void
3898 peephole2_optimize (void)
3899 {
3900- rtx insn, prev;
3901+ rtx insn;
3902 bitmap live;
3903 int i;
3904 basic_block bb;
3905- bool do_cleanup_cfg = false;
3906- bool do_rebuild_jump_labels = false;
3907+
3908+ peep2_do_cleanup_cfg = false;
3909+ peep2_do_rebuild_jump_labels = false;
3910
3911 df_set_flags (DF_LR_RUN_DCE);
3912+ df_note_add_problem ();
3913 df_analyze ();
3914
3915 /* Initialize the regsets we're going to use. */
3916@@ -3126,214 +3346,59 @@ peephole2_optimize (void)
3917
3918 FOR_EACH_BB_REVERSE (bb)
3919 {
3920+ bool past_end = false;
3921+ int pos;
3922+
3923 rtl_profile_for_bb (bb);
3924
3925 /* Start up propagation. */
3926- bitmap_copy (live, DF_LR_OUT (bb));
3927- df_simulate_initialize_backwards (bb, live);
3928+ bitmap_copy (live, DF_LR_IN (bb));
3929+ df_simulate_initialize_forwards (bb, live);
3930 peep2_reinit_state (live);
3931
3932- for (insn = BB_END (bb); ; insn = prev)
3933+ insn = BB_HEAD (bb);
3934+ for (;;)
3935 {
3936- prev = PREV_INSN (insn);
3937- if (NONDEBUG_INSN_P (insn))
3938- {
3939- rtx attempt, before_try, x;
3940- int match_len;
3941- rtx note;
3942- bool was_call = false;
3943-
3944- /* Record this insn. */
3945- if (--peep2_current < 0)
3946- peep2_current = MAX_INSNS_PER_PEEP2;
3947- if (peep2_current_count < MAX_INSNS_PER_PEEP2
3948- && peep2_insn_data[peep2_current].insn == NULL_RTX)
3949- peep2_current_count++;
3950- peep2_insn_data[peep2_current].insn = insn;
3951- df_simulate_one_insn_backwards (bb, insn, live);
3952- COPY_REG_SET (peep2_insn_data[peep2_current].live_before, live);
3953-
3954- if (RTX_FRAME_RELATED_P (insn))
3955- {
3956- /* If an insn has RTX_FRAME_RELATED_P set, peephole
3957- substitution would lose the
3958- REG_FRAME_RELATED_EXPR that is attached. */
3959- peep2_reinit_state (live);
3960- attempt = NULL;
3961- }
3962- else
3963- /* Match the peephole. */
3964- attempt = peephole2_insns (PATTERN (insn), insn, &match_len);
3965-
3966- if (attempt != NULL)
3967- {
3968- /* If we are splitting a CALL_INSN, look for the CALL_INSN
3969- in SEQ and copy our CALL_INSN_FUNCTION_USAGE and other
3970- cfg-related call notes. */
3971- for (i = 0; i <= match_len; ++i)
3972- {
3973- int j;
3974- rtx old_insn, new_insn, note;
3975+ rtx attempt, head;
3976+ int match_len;
3977
3978- j = i + peep2_current;
3979- if (j >= MAX_INSNS_PER_PEEP2 + 1)
3980- j -= MAX_INSNS_PER_PEEP2 + 1;
3981- old_insn = peep2_insn_data[j].insn;
3982- if (!CALL_P (old_insn))
3983- continue;
3984- was_call = true;
3985-
3986- new_insn = attempt;
3987- while (new_insn != NULL_RTX)
3988- {
3989- if (CALL_P (new_insn))
3990- break;
3991- new_insn = NEXT_INSN (new_insn);
3992- }
3993-
3994- gcc_assert (new_insn != NULL_RTX);
3995-
3996- CALL_INSN_FUNCTION_USAGE (new_insn)
3997- = CALL_INSN_FUNCTION_USAGE (old_insn);
3998-
3999- for (note = REG_NOTES (old_insn);
4000- note;
4001- note = XEXP (note, 1))
4002- switch (REG_NOTE_KIND (note))
4003- {
4004- case REG_NORETURN:
4005- case REG_SETJMP:
4006- add_reg_note (new_insn, REG_NOTE_KIND (note),
4007- XEXP (note, 0));
4008- break;
4009- default:
4010- /* Discard all other reg notes. */
4011- break;
4012- }
4013-
4014- /* Croak if there is another call in the sequence. */
4015- while (++i <= match_len)
4016- {
4017- j = i + peep2_current;
4018- if (j >= MAX_INSNS_PER_PEEP2 + 1)
4019- j -= MAX_INSNS_PER_PEEP2 + 1;
4020- old_insn = peep2_insn_data[j].insn;
4021- gcc_assert (!CALL_P (old_insn));
4022- }
4023- break;
4024- }
4025-
4026- i = match_len + peep2_current;
4027- if (i >= MAX_INSNS_PER_PEEP2 + 1)
4028- i -= MAX_INSNS_PER_PEEP2 + 1;
4029-
4030- note = find_reg_note (peep2_insn_data[i].insn,
4031- REG_EH_REGION, NULL_RTX);
4032-
4033- /* Replace the old sequence with the new. */
4034- attempt = emit_insn_after_setloc (attempt,
4035- peep2_insn_data[i].insn,
4036- INSN_LOCATOR (peep2_insn_data[i].insn));
4037- before_try = PREV_INSN (insn);
4038- delete_insn_chain (insn, peep2_insn_data[i].insn, false);
4039-
4040- /* Re-insert the EH_REGION notes. */
4041- if (note || (was_call && nonlocal_goto_handler_labels))
4042- {
4043- edge eh_edge;
4044- edge_iterator ei;
4045-
4046- FOR_EACH_EDGE (eh_edge, ei, bb->succs)
4047- if (eh_edge->flags & (EDGE_EH | EDGE_ABNORMAL_CALL))
4048- break;
4049-
4050- if (note)
4051- copy_reg_eh_region_note_backward (note, attempt,
4052- before_try);
4053-
4054- if (eh_edge)
4055- for (x = attempt ; x != before_try ; x = PREV_INSN (x))
4056- if (x != BB_END (bb)
4057- && (can_throw_internal (x)
4058- || can_nonlocal_goto (x)))
4059- {
4060- edge nfte, nehe;
4061- int flags;
4062-
4063- nfte = split_block (bb, x);
4064- flags = (eh_edge->flags
4065- & (EDGE_EH | EDGE_ABNORMAL));
4066- if (CALL_P (x))
4067- flags |= EDGE_ABNORMAL_CALL;
4068- nehe = make_edge (nfte->src, eh_edge->dest,
4069- flags);
4070-
4071- nehe->probability = eh_edge->probability;
4072- nfte->probability
4073- = REG_BR_PROB_BASE - nehe->probability;
4074-
4075- do_cleanup_cfg |= purge_dead_edges (nfte->dest);
4076- bb = nfte->src;
4077- eh_edge = nehe;
4078- }
4079-
4080- /* Converting possibly trapping insn to non-trapping is
4081- possible. Zap dummy outgoing edges. */
4082- do_cleanup_cfg |= purge_dead_edges (bb);
4083- }
4084+ if (!past_end && !NONDEBUG_INSN_P (insn))
4085+ {
4086+ next_insn:
4087+ insn = NEXT_INSN (insn);
4088+ if (insn == NEXT_INSN (BB_END (bb)))
4089+ past_end = true;
4090+ continue;
4091+ }
4092+ if (!past_end && peep2_fill_buffer (bb, insn, live))
4093+ goto next_insn;
4094
4095- if (targetm.have_conditional_execution ())
4096- {
4097- for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
4098- peep2_insn_data[i].insn = NULL_RTX;
4099- peep2_insn_data[peep2_current].insn = PEEP2_EOB;
4100- peep2_current_count = 0;
4101- }
4102- else
4103- {
4104- /* Back up lifetime information past the end of the
4105- newly created sequence. */
4106- if (++i >= MAX_INSNS_PER_PEEP2 + 1)
4107- i = 0;
4108- bitmap_copy (live, peep2_insn_data[i].live_before);
4109-
4110- /* Update life information for the new sequence. */
4111- x = attempt;
4112- do
4113- {
4114- if (INSN_P (x))
4115- {
4116- if (--i < 0)
4117- i = MAX_INSNS_PER_PEEP2;
4118- if (peep2_current_count < MAX_INSNS_PER_PEEP2
4119- && peep2_insn_data[i].insn == NULL_RTX)
4120- peep2_current_count++;
4121- peep2_insn_data[i].insn = x;
4122- df_insn_rescan (x);
4123- df_simulate_one_insn_backwards (bb, x, live);
4124- bitmap_copy (peep2_insn_data[i].live_before,
4125- live);
4126- }
4127- x = PREV_INSN (x);
4128- }
4129- while (x != prev);
4130+ /* If we did not fill an empty buffer, it signals the end of the
4131+ block. */
4132+ if (peep2_current_count == 0)
4133+ break;
4134
4135- peep2_current = i;
4136- }
4137+ /* The buffer filled to the current maximum, so try to match. */
4138
4139- /* If we generated a jump instruction, it won't have
4140- JUMP_LABEL set. Recompute after we're done. */
4141- for (x = attempt; x != before_try; x = PREV_INSN (x))
4142- if (JUMP_P (x))
4143- {
4144- do_rebuild_jump_labels = true;
4145- break;
4146- }
4147- }
4148+ pos = peep2_buf_position (peep2_current + peep2_current_count);
4149+ peep2_insn_data[pos].insn = PEEP2_EOB;
4150+ COPY_REG_SET (peep2_insn_data[pos].live_before, live);
4151+
4152+ /* Match the peephole. */
4153+ head = peep2_insn_data[peep2_current].insn;
4154+ attempt = peephole2_insns (PATTERN (head), head, &match_len);
4155+ if (attempt != NULL)
4156+ {
4157+ rtx last;
4158+ last = peep2_attempt (bb, head, match_len, attempt);
4159+ peep2_update_life (bb, match_len, last, PREV_INSN (attempt));
4160+ }
4161+ else
4162+ {
4163+ /* If no match, advance the buffer by one insn. */
4164+ peep2_current = peep2_buf_position (peep2_current + 1);
4165+ peep2_current_count--;
4166 }
4167-
4168- if (insn == BB_HEAD (bb))
4169- break;
4170 }
4171 }
4172
4173@@ -3341,7 +3406,7 @@ peephole2_optimize (void)
4174 for (i = 0; i < MAX_INSNS_PER_PEEP2 + 1; ++i)
4175 BITMAP_FREE (peep2_insn_data[i].live_before);
4176 BITMAP_FREE (live);
4177- if (do_rebuild_jump_labels)
4178+ if (peep2_do_rebuild_jump_labels)
4179 rebuild_jump_labels (get_insns ());
4180 }
4181 #endif /* HAVE_peephole2 */
4182Index: gcc-4_5-branch/gcc/recog.h
4183===================================================================
4184--- gcc-4_5-branch.orig/gcc/recog.h
4185+++ gcc-4_5-branch/gcc/recog.h
4186@@ -194,6 +194,9 @@ struct recog_data
4187 /* Gives the constraint string for operand N. */
4188 const char *constraints[MAX_RECOG_OPERANDS];
4189
4190+ /* Nonzero if operand N is a match_operator or a match_parallel. */
4191+ char is_operator[MAX_RECOG_OPERANDS];
4192+
4193 /* Gives the mode of operand N. */
4194 enum machine_mode operand_mode[MAX_RECOG_OPERANDS];
4195
4196@@ -260,6 +263,8 @@ struct insn_operand_data
4197
4198 const char strict_low;
4199
4200+ const char is_operator;
4201+
4202 const char eliminable;
4203 };
4204
4205Index: gcc-4_5-branch/gcc/reload.c
4206===================================================================
4207--- gcc-4_5-branch.orig/gcc/reload.c
4208+++ gcc-4_5-branch/gcc/reload.c
4209@@ -3631,7 +3631,7 @@ find_reloads (rtx insn, int replace, int
4210 || modified[j] != RELOAD_WRITE)
4211 && j != i
4212 /* Ignore things like match_operator operands. */
4213- && *recog_data.constraints[j] != 0
4214+ && !recog_data.is_operator[j]
4215 /* Don't count an input operand that is constrained to match
4216 the early clobber operand. */
4217 && ! (this_alternative_matches[j] == i
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99478.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99478.patch
new file mode 100644
index 000000000..38463a9b4
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99478.patch
@@ -0,0 +1,74 @@
12011-01-11 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
2
3 * config/arm/t-arm: Fix up last commit.
4
52011-01-11 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6
7 * config/arm/t-arm: Update MD_INCLUDES to include
8 all the files correctly.
9 * config/arm/arm.md: Update comments.
10
11=== modified file 'gcc/config/arm/arm.md'
12--- old/gcc/config/arm/arm.md 2011-02-22 11:38:56 +0000
13+++ new/gcc/config/arm/arm.md 2011-03-01 14:32:39 +0000
14@@ -11246,6 +11246,7 @@
15 "
16 )
17
18+;; Make sure that the includes are reflected in MD_INCLUDES.
19 ;; Load the load/store multiple patterns
20 (include "ldmstm.md")
21 ;; Load the FPA co-processor patterns
22
23=== modified file 'gcc/config/arm/t-arm'
24--- old/gcc/config/arm/t-arm 2010-08-16 09:41:58 +0000
25+++ new/gcc/config/arm/t-arm 2011-01-11 21:01:30 +0000
26@@ -18,20 +18,33 @@
27 # along with GCC; see the file COPYING3. If not see
28 # <http://www.gnu.org/licenses/>.
29
30-MD_INCLUDES= $(srcdir)/config/arm/arm-tune.md \
31- $(srcdir)/config/arm/predicates.md \
32- $(srcdir)/config/arm/arm-generic.md \
33- $(srcdir)/config/arm/arm1020e.md \
34- $(srcdir)/config/arm/arm1026ejs.md \
35- $(srcdir)/config/arm/arm1136jfs.md \
36- $(srcdir)/config/arm/arm926ejs.md \
37- $(srcdir)/config/arm/cirrus.md \
38- $(srcdir)/config/arm/fpa.md \
39- $(srcdir)/config/arm/vec-common.md \
40- $(srcdir)/config/arm/iwmmxt.md \
41- $(srcdir)/config/arm/vfp.md \
42- $(srcdir)/config/arm/neon.md \
43- $(srcdir)/config/arm/thumb2.md
44+MD_INCLUDES= $(srcdir)/config/arm/arm-tune.md \
45+ $(srcdir)/config/arm/predicates.md \
46+ $(srcdir)/config/arm/arm-generic.md \
47+ $(srcdir)/config/arm/arm1020e.md \
48+ $(srcdir)/config/arm/arm1026ejs.md \
49+ $(srcdir)/config/arm/arm1136jfs.md \
50+ $(srcdir)/config/arm/arm926ejs.md \
51+ $(srcdir)/config/arm/cirrus.md \
52+ $(srcdir)/config/arm/fpa.md \
53+ $(srcdir)/config/arm/vec-common.md \
54+ $(srcdir)/config/arm/iwmmxt.md \
55+ $(srcdir)/config/arm/vfp.md \
56+ $(srcdir)/config/arm/cortex-a5.md \
57+ $(srcdir)/config/arm/cortex-a8.md \
58+ $(srcdir)/config/arm/cortex-a9.md \
59+ $(srcdir)/config/arm/cortex-a9-neon.md \
60+ $(srcdir)/config/arm/cortex-r4.md \
61+ $(srcdir)/config/arm/cortex-r4f.md \
62+ $(srcdir)/config/arm/cortex-m4.md \
63+ $(srcdir)/config/arm/cortex-m4-fpu.md \
64+ $(srcdir)/config/arm/vfp11.md \
65+ $(srcdir)/config/arm/ldmstm.md \
66+ $(srcdir)/config/arm/thumb2.md \
67+ $(srcdir)/config/arm/neon.md \
68+ $(srcdir)/config/arm/sync.md \
69+ $(srcdir)/config/arm/cortex-a8-neon.md \
70+ $(srcdir)/config/arm/constraints.md
71
72 LIB1ASMSRC = arm/lib1funcs.asm
73 LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi \
74
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99479.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99479.patch
new file mode 100644
index 000000000..2920466d8
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99479.patch
@@ -0,0 +1,101 @@
12011-02-24 Chung-Lin Tang <cltang@codesourcery.com>
2
3 Backport from FSF mainline:
4
5 2010-08-10 Bernd Schmidt <bernds@codesourcery.com>
6
7 PR bootstrap/45177
8 * config/arm/arm.c (multiple_operation_profitable_p): Move xscale
9 test here from arm_gen_load_multiple_1.
10 (arm_gen_load_multiple_1, arm_gen_store_multiple_1): Use
11 multiple_operation_profitable_p.
12
13=== modified file 'gcc/config/arm/arm.c'
14--- old/gcc/config/arm/arm.c 2011-02-22 11:38:56 +0000
15+++ new/gcc/config/arm/arm.c 2011-02-24 17:30:32 +0000
16@@ -9728,6 +9728,36 @@
17 if (nops == 2 && arm_ld_sched && add_offset != 0)
18 return false;
19
20+ /* XScale has load-store double instructions, but they have stricter
21+ alignment requirements than load-store multiple, so we cannot
22+ use them.
23+
24+ For XScale ldm requires 2 + NREGS cycles to complete and blocks
25+ the pipeline until completion.
26+
27+ NREGS CYCLES
28+ 1 3
29+ 2 4
30+ 3 5
31+ 4 6
32+
33+ An ldr instruction takes 1-3 cycles, but does not block the
34+ pipeline.
35+
36+ NREGS CYCLES
37+ 1 1-3
38+ 2 2-6
39+ 3 3-9
40+ 4 4-12
41+
42+ Best case ldr will always win. However, the more ldr instructions
43+ we issue, the less likely we are to be able to schedule them well.
44+ Using ldr instructions also increases code size.
45+
46+ As a compromise, we use ldr for counts of 1 or 2 regs, and ldm
47+ for counts of 3 or 4 regs. */
48+ if (nops <= 2 && arm_tune_xscale && !optimize_size)
49+ return false;
50 return true;
51 }
52
53@@ -10086,35 +10116,7 @@
54 int i = 0, j;
55 rtx result;
56
57- /* XScale has load-store double instructions, but they have stricter
58- alignment requirements than load-store multiple, so we cannot
59- use them.
60-
61- For XScale ldm requires 2 + NREGS cycles to complete and blocks
62- the pipeline until completion.
63-
64- NREGS CYCLES
65- 1 3
66- 2 4
67- 3 5
68- 4 6
69-
70- An ldr instruction takes 1-3 cycles, but does not block the
71- pipeline.
72-
73- NREGS CYCLES
74- 1 1-3
75- 2 2-6
76- 3 3-9
77- 4 4-12
78-
79- Best case ldr will always win. However, the more ldr instructions
80- we issue, the less likely we are to be able to schedule them well.
81- Using ldr instructions also increases code size.
82-
83- As a compromise, we use ldr for counts of 1 or 2 regs, and ldm
84- for counts of 3 or 4 regs. */
85- if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
86+ if (low_irq_latency || !multiple_operation_profitable_p (false, count, 0))
87 {
88 rtx seq;
89
90@@ -10166,9 +10168,7 @@
91 if (GET_CODE (basereg) == PLUS)
92 basereg = XEXP (basereg, 0);
93
94- /* See arm_gen_load_multiple_1 for discussion of
95- the pros/cons of ldm/stm usage for XScale. */
96- if (low_irq_latency || (arm_tune_xscale && count <= 2 && ! optimize_size))
97+ if (low_irq_latency || !multiple_operation_profitable_p (false, count, 0))
98 {
99 rtx seq;
100
101
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99480.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99480.patch
new file mode 100644
index 000000000..76d3c9565
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99480.patch
@@ -0,0 +1,64 @@
12011-02-02 Richard Sandiford <richard.sandiford@linaro.org>
2
3
4 gcc/
5 PR target/47551
6 * config/arm/arm.c (coproc_secondary_reload_class): Handle
7 structure modes. Don't check neon_vector_mem_operand for
8 vector or structure modes.
9
10 gcc/testsuite/
11 PR target/47551
12 * gcc.target/arm/neon-modes-2.c: New test.
13
14=== modified file 'gcc/config/arm/arm.c'
15--- old/gcc/config/arm/arm.c 2011-02-24 17:30:32 +0000
16+++ new/gcc/config/arm/arm.c 2011-03-02 11:29:06 +0000
17@@ -9303,11 +9303,14 @@
18 return GENERAL_REGS;
19 }
20
21+ /* The neon move patterns handle all legitimate vector and struct
22+ addresses. */
23 if (TARGET_NEON
24+ && MEM_P (x)
25 && (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
26- || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
27- && neon_vector_mem_operand (x, 0))
28- return NO_REGS;
29+ || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT
30+ || VALID_NEON_STRUCT_MODE (mode)))
31+ return NO_REGS;
32
33 if (arm_coproc_mem_operand (x, wb) || s_register_operand (x, mode))
34 return NO_REGS;
35
36=== added file 'gcc/testsuite/gcc.target/arm/neon-modes-2.c'
37--- old/gcc/testsuite/gcc.target/arm/neon-modes-2.c 1970-01-01 00:00:00 +0000
38+++ new/gcc/testsuite/gcc.target/arm/neon-modes-2.c 2011-02-02 13:48:10 +0000
39@@ -0,0 +1,24 @@
40+/* { dg-do compile } */
41+/* { dg-require-effective-target arm_neon_ok } */
42+/* { dg-options "-O1" } */
43+/* { dg-add-options arm_neon } */
44+
45+#include "arm_neon.h"
46+
47+#define SETUP(A) x##A = vld3_u32 (ptr + A * 0x20)
48+#define MODIFY(A) x##A = vld3_lane_u32 (ptr + A * 0x20 + 0x10, x##A, 1)
49+#define STORE(A) vst3_u32 (ptr + A * 0x20, x##A)
50+
51+#define MANY(A) A (0), A (1), A (2), A (3), A (4), A (5)
52+
53+void
54+bar (uint32_t *ptr, int y)
55+{
56+ uint32x2x3_t MANY (SETUP);
57+ int *x = __builtin_alloca (y);
58+ int z[0x1000];
59+ foo (x, z);
60+ MANY (MODIFY);
61+ foo (x, z);
62+ MANY (STORE);
63+}
64
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99481.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99481.patch
new file mode 100644
index 000000000..db53255de
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99481.patch
@@ -0,0 +1,40 @@
1 2011-02-02 Richard Sandiford <richard.sandiford@linaro.org>
2
3 gcc/testsuite/
4 PR target/47553
5 * gcc.target/arm/neon-vld-1.c: New test.
6 gcc/
7 PR target/47553
8 * config/arm/predicates.md (neon_lane_number): Accept 0..15.
9
10=== modified file 'gcc/config/arm/predicates.md'
11--- old/gcc/config/arm/predicates.md 2011-02-08 12:07:29 +0000
12+++ new/gcc/config/arm/predicates.md 2011-03-02 12:28:41 +0000
13@@ -607,7 +607,7 @@
14 ;; TODO: We could check lane numbers more precisely based on the mode.
15 (define_predicate "neon_lane_number"
16 (and (match_code "const_int")
17- (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 7")))
18+ (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 15")))
19 ;; Predicates for named expanders that overlap multiple ISAs.
20
21 (define_predicate "cmpdi_operand"
22
23=== added file 'gcc/testsuite/gcc.target/arm/neon-vld-1.c'
24--- old/gcc/testsuite/gcc.target/arm/neon-vld-1.c 1970-01-01 00:00:00 +0000
25+++ new/gcc/testsuite/gcc.target/arm/neon-vld-1.c 2011-02-02 13:57:54 +0000
26@@ -0,0 +1,13 @@
27+/* { dg-do compile } */
28+/* { dg-require-effective-target arm_neon_ok } */
29+/* { dg-options "-O1" } */
30+/* { dg-add-options arm_neon } */
31+
32+#include <arm_neon.h>
33+
34+uint8x16_t
35+foo (uint8_t *a, uint8x16_t b)
36+{
37+ vst1q_lane_u8 (a, b, 14);
38+ return vld1q_lane_u8 (a + 0x100, b, 15);
39+}
40
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99482.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99482.patch
new file mode 100644
index 000000000..334ac4ec1
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99482.patch
@@ -0,0 +1,84 @@
1 2011-02-02 Richard Sandiford <richard.sandiford@linaro.org>
2
3 gcc/
4 Backport from mainline:
5
6 2011-01-23 Bernd Schmidt <bernds@codesourcery.com>
7 Richard Sandiford <rdsandiford@googlemail.com>
8
9 PR rtl-optimization/47166
10 * reload1.c (emit_reload_insns): Disable the spill_reg_store
11 mechanism for PRE_MODIFY and POST_MODIFY.
12 (inc_for_reload): For PRE_MODIFY, return the insn that sets the
13 reloadreg.
14
15 gcc/testsuite/
16 * gcc.c-torture/execute/postmod-1.c: New test.
17
18=== added file 'gcc/testsuite/gcc.c-torture/execute/postmod-1.c'
19--- old/gcc/testsuite/gcc.c-torture/execute/postmod-1.c 1970-01-01 00:00:00 +0000
20+++ new/gcc/testsuite/gcc.c-torture/execute/postmod-1.c 2011-02-02 14:23:10 +0000
21@@ -0,0 +1,62 @@
22+#define DECLARE_ARRAY(A) array##A[0x10]
23+#define DECLARE_COUNTER(A) counter##A = 0
24+#define DECLARE_POINTER(A) *pointer##A = array##A + x
25+/* Create a loop that allows post-modification of pointerA, followed by
26+ a use of the post-modified address. */
27+#define BEFORE(A) counter##A += *pointer##A, pointer##A += 3
28+#define AFTER(A) counter##A += pointer##A[x]
29+
30+/* Set up the arrays so that one iteration of the loop sets the counter
31+ to 3.0f. */
32+#define INIT_ARRAY(A) array##A[1] = 1.0f, array##A[5] = 2.0f
33+
34+/* Check that the loop worked correctly for all values. */
35+#define CHECK_ARRAY(A) exit_code |= (counter##A != 3.0f)
36+
37+/* Having 6 copies triggered the bug for ARM and Thumb. */
38+#define MANY(A) A (0), A (1), A (2), A (3), A (4), A (5)
39+
40+/* Each addendA should be allocated a register. */
41+#define INIT_VOLATILE(A) addend##A = vol
42+#define ADD_VOLATILE(A) vol += addend##A
43+
44+/* Having 5 copies triggered the bug for ARM and Thumb. */
45+#define MANY2(A) A (0), A (1), A (2), A (3), A (4)
46+
47+float MANY (DECLARE_ARRAY);
48+float MANY (DECLARE_COUNTER);
49+
50+volatile int stop = 1;
51+volatile int vol;
52+
53+void __attribute__((noinline))
54+foo (int x)
55+{
56+ float MANY (DECLARE_POINTER);
57+ int i;
58+
59+ do
60+ {
61+ MANY (BEFORE);
62+ MANY (AFTER);
63+ /* Create an inner loop that should ensure the code above
64+ has registers free for reload inheritance. */
65+ {
66+ int MANY2 (INIT_VOLATILE);
67+ for (i = 0; i < 10; i++)
68+ MANY2 (ADD_VOLATILE);
69+ }
70+ }
71+ while (!stop);
72+}
73+
74+int
75+main (void)
76+{
77+ int exit_code = 0;
78+
79+ MANY (INIT_ARRAY);
80+ foo (1);
81+ MANY (CHECK_ARRAY);
82+ return exit_code;
83+}
84
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99483.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99483.patch
new file mode 100644
index 000000000..c0be4a03b
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99483.patch
@@ -0,0 +1,63 @@
12011-02-11 Richard Sandiford <richard.sandiford@linaro.org>
2
3 gcc/
4 * cse.c (count_reg_usage): Check side_effects_p. Remove the
5 separate check for volatile asms.
6
7 gcc/testsuite/
8 * gcc.dg/torture/volatile-pic-1.c: New test.
9
10=== modified file 'gcc/cse.c'
11--- old/gcc/cse.c 2010-11-26 12:03:32 +0000
12+++ new/gcc/cse.c 2011-02-11 09:27:19 +0000
13@@ -6634,9 +6634,10 @@
14 case CALL_INSN:
15 case INSN:
16 case JUMP_INSN:
17- /* We expect dest to be NULL_RTX here. If the insn may trap, mark
18- this fact by setting DEST to pc_rtx. */
19- if (insn_could_throw_p (x))
20+ /* We expect dest to be NULL_RTX here. If the insn may trap,
21+ or if it cannot be deleted due to side-effects, mark this fact
22+ by setting DEST to pc_rtx. */
23+ if (insn_could_throw_p (x) || side_effects_p (PATTERN (x)))
24 dest = pc_rtx;
25 if (code == CALL_INSN)
26 count_reg_usage (CALL_INSN_FUNCTION_USAGE (x), counts, dest, incr);
27@@ -6676,10 +6677,6 @@
28 return;
29
30 case ASM_OPERANDS:
31- /* If the asm is volatile, then this insn cannot be deleted,
32- and so the inputs *must* be live. */
33- if (MEM_VOLATILE_P (x))
34- dest = NULL_RTX;
35 /* Iterate over just the inputs, not the constraints as well. */
36 for (i = ASM_OPERANDS_INPUT_LENGTH (x) - 1; i >= 0; i--)
37 count_reg_usage (ASM_OPERANDS_INPUT (x, i), counts, dest, incr);
38
39=== added file 'gcc/testsuite/gcc.dg/torture/volatile-pic-1.c'
40--- old/gcc/testsuite/gcc.dg/torture/volatile-pic-1.c 1970-01-01 00:00:00 +0000
41+++ new/gcc/testsuite/gcc.dg/torture/volatile-pic-1.c 2011-02-11 09:27:19 +0000
42@@ -0,0 +1,20 @@
43+/* { dg-do run } */
44+/* { dg-require-visibility "" } */
45+/* { dg-require-effective-target fpic } */
46+/* { dg-options "-fPIC" } */
47+
48+volatile int x __attribute__((visibility("hidden")));
49+
50+void __attribute__((noinline)) bar (void)
51+{
52+#if defined (__arm__)
53+ asm volatile ("mov r3,%0" :: "r" (0xdeadbeef) : "r3");
54+#endif
55+ (void) x;
56+}
57+
58+int main (void)
59+{
60+ bar ();
61+ return 0;
62+}
63
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/mips64-nomultilib.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/mips64-nomultilib.patch
new file mode 100644
index 000000000..1ef69f899
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/mips64-nomultilib.patch
@@ -0,0 +1,52 @@
1Index: gcc-4.5/gcc/config/mips/linux64.h
2===================================================================
3--- gcc-4.5.orig/gcc/config/mips/linux64.h 2010-09-25 02:05:05.484423095 -0700
4+++ gcc-4.5/gcc/config/mips/linux64.h 2010-09-25 02:31:18.524931014 -0700
5@@ -26,7 +26,7 @@
6 BASE_DRIVER_SELF_SPECS, \
7 LINUX_DRIVER_SELF_SPECS \
8 " %{!EB:%{!EL:%(endian_spec)}}" \
9- " %{!mabi=*: -mabi=n32}"
10+ " %{!mabi=*: -mabi=64}"
11
12 #undef LIB_SPEC
13 #define LIB_SPEC "\
14@@ -35,9 +35,9 @@
15 %{!shared: \
16 %{profile:-lc_p} %{!profile:-lc}}"
17
18-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
19-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld.so.1"
20-#define GLIBC_DYNAMIC_LINKERN32 "/lib32/ld.so.1"
21+#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld.so.1"
22+#define GLIBC_DYNAMIC_LINKER64 "/lib/ld.so.1"
23+#define GLIBC_DYNAMIC_LINKERN32 "/lib64/ld.so.1"
24 #define UCLIBC_DYNAMIC_LINKERN32 "/lib32/ld-uClibc.so.0"
25 #define LINUX_DYNAMIC_LINKERN32 \
26 CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32)
27Index: gcc-4.5/gcc/config.gcc
28===================================================================
29--- gcc-4.5.orig/gcc/config.gcc 2010-07-22 16:37:17.000000000 -0700
30+++ gcc-4.5/gcc/config.gcc 2010-09-25 02:25:41.412414136 -0700
31@@ -1707,7 +1707,7 @@
32 *-*-irix6*)
33 tm_file="${tm_file} mips/iris6.h"
34 tmake_file="${tmake_file} mips/t-iris6"
35- tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_N32"
36+ tm_defines="${tm_defines} MIPS_ISA_DEFAULT=3 MIPS_ABI_DEFAULT=ABI_64"
37 case ${target} in
38 *-*-irix6.[0-4]*)
39 use_gcc_stdint=provide
40Index: gcc-4.5/gcc/config/mips/t-linux64
41===================================================================
42--- gcc-4.5.orig/gcc/config/mips/t-linux64 2010-07-11 16:14:42.000000000 -0700
43+++ gcc-4.5/gcc/config/mips/t-linux64 2010-09-25 02:29:52.758708250 -0700
44@@ -18,7 +18,7 @@
45
46 MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
47 MULTILIB_DIRNAMES = n32 32 64
48-MULTILIB_OSDIRNAMES = ../lib32 ../lib ../lib64
49+MULTILIB_OSDIRNAMES = ../lib64 ../lib32 ../lib
50
51 EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
52
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/more-epilogues.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/more-epilogues.patch
new file mode 100644
index 000000000..64f1cf375
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/more-epilogues.patch
@@ -0,0 +1,83 @@
1Index: a/gcc/cfgcleanup.c
2===================================================================
3--- a/gcc/cfgcleanup.c (revision 315947)
4+++ b/gcc/cfgcleanup.c (working copy)
5@@ -1179,13 +1179,19 @@ flow_find_head_matching_sequence (basic_
6
7 while (true)
8 {
9-
10- /* Ignore notes. */
11+ /* Ignore notes, except NOTE_INSN_EPILOGUE_BEG. */
12 while (!NONDEBUG_INSN_P (i1) && i1 != BB_END (bb1))
13- i1 = NEXT_INSN (i1);
14-
15+ {
16+ if (NOTE_P (i1) && NOTE_KIND (i1) == NOTE_INSN_EPILOGUE_BEG)
17+ break;
18+ i1 = NEXT_INSN (i1);
19+ }
20 while (!NONDEBUG_INSN_P (i2) && i2 != BB_END (bb2))
21- i2 = NEXT_INSN (i2);
22+ {
23+ if (NOTE_P (i2) && NOTE_KIND (i2) == NOTE_INSN_EPILOGUE_BEG)
24+ break;
25+ i2 = NEXT_INSN (i2);
26+ }
27
28 if (NOTE_P (i1) || NOTE_P (i2)
29 || JUMP_P (i1) || JUMP_P (i2))
30Index: a/gcc/cfglayout.c
31===================================================================
32--- a/gcc/cfglayout.c (revision 315947)
33+++ b/gcc/cfglayout.c (working copy)
34@@ -1295,6 +1295,16 @@ cfg_layout_initialize (unsigned int flag
35 bb->flags |= BB_NON_LOCAL_GOTO_TARGET;
36 }
37
38+ FOR_EACH_BB (bb)
39+ {
40+ rtx insn;
41+ FOR_BB_INSNS (bb, insn)
42+ if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_EPILOGUE_BEG)
43+ {
44+ bb->flags |= BB_EPILOGUE_BEGIN;
45+ break;
46+ }
47+ }
48 cleanup_cfg (CLEANUP_CFGLAYOUT | flags);
49 }
50
51Index: a/gcc/basic-block.h
52===================================================================
53--- a/gcc/basic-block.h (revision 315947)
54+++ b/gcc/basic-block.h (working copy)
55@@ -332,7 +332,11 @@ enum bb_flags
56
57 /* Set on blocks that cannot be threaded through.
58 Only used in cfgcleanup.c. */
59- BB_NONTHREADABLE_BLOCK = 1 << 11
60+ BB_NONTHREADABLE_BLOCK = 1 << 11,
61+
62+ /* Set on blocks that have a NOTE_INSN_EPILOGUE_BEGIN.
63+ Only used in cfglayout mode. */
64+ BB_EPILOGUE_BEGIN = 1 << 12
65 };
66
67 /* Dummy flag for convenience in the hot/cold partitioning code. */
68Index: a/gcc/cfgrtl.c
69===================================================================
70--- a/gcc/cfgrtl.c (revision 315947)
71+++ b/gcc/cfgrtl.c (working copy)
72@@ -2707,7 +2707,10 @@ cfg_layout_can_merge_blocks_p (basic_blo
73 not allow us to redirect an edge by replacing a table jump. */
74 && (!JUMP_P (BB_END (a))
75 || ((!optimize || reload_completed)
76- ? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a)))));
77+ ? simplejump_p (BB_END (a)) : onlyjump_p (BB_END (a))))
78+ /* Don't separate a NOTE_INSN_EPILOGUE_BEG from its returnjump. */
79+ && (!(b->flags & BB_EPILOGUE_BEGIN)
80+ || returnjump_p (BB_END (b))));
81 }
82
83 /* Merge block A and B. The blocks must be mergeable. */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/optional_libstdc.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/optional_libstdc.patch
new file mode 100644
index 000000000..0f74353a1
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/optional_libstdc.patch
@@ -0,0 +1,23 @@
1gcc-runtime builds libstdc++ separately from gcc-cross-*. Its configure tests using g++
2will not run correctly since my default the linker will try and link against libstdc++
3which shouldn't exist yet. We need an option to disable the automatically added -lstdc++
4option whilst leaving -lc, -lgcc and other automatic library dependencies. This patch
5adds such an option which only disables the -lstdc++ linkage.
6
7A "standard" gcc build uses xgcc and hence avoids this. We should ask upstream how to
8do this officially, the likely answer is don't build libstdc++ separately.
9
10RP 29/6/10
11
12Index: gcc-4.3.3/gcc/cp/g++spec.c
13===================================================================
14--- gcc-4.3.3.orig/gcc/cp/g++spec.c 2010-06-29 00:06:03.901695025 +0100
15+++ gcc-4.3.3/gcc/cp/g++spec.c 2010-06-29 00:06:58.800325439 +0100
16@@ -131,6 +131,7 @@
17 if (argv[i][0] == '-')
18 {
19 if (strcmp (argv[i], "-nostdlib") == 0
20+ || strcmp (argv[i], "-nostdlib++") == 0
21 || strcmp (argv[i], "-nodefaultlibs") == 0)
22 {
23 library = -1;
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/pr30961.dpatch b/meta-oe/recipes-devtools/gcc/gcc-4.5/pr30961.dpatch
new file mode 100644
index 000000000..b20fdf5bf
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/pr30961.dpatch
@@ -0,0 +1,179 @@
1#! /bin/sh -e
2
3# DP: <your description>
4
5dir=
6if [ $# -eq 3 -a "$2" = '-d' ]; then
7 pdir="-d $3"
8 dir="$3/"
9elif [ $# -ne 1 ]; then
10 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
11 exit 1
12fi
13case "$1" in
14 -patch)
15 patch $pdir -f --no-backup-if-mismatch -p0 < $0
16 ;;
17 -unpatch)
18 patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
19 ;;
20 *)
21 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
22 exit 1
23esac
24exit 0
25
26From: "H.J. Lu" <hjl@lucon.org>
27Sender: gcc-patches-owner@gcc.gnu.org
28To: gcc-patches@gcc.gnu.org
29Subject: PATCH: PR target/30961: [4.1/4.2/4.3 regression] redundant reg/mem stores/moves
30Date: Mon, 27 Aug 2007 11:34:12 -0700
31
32We start with
33
34(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG)
35
36(insn:HI 6 3 10 2 c.c:3 (set (reg:DF 58 [ <result> ])
37 (subreg:DF (reg/v:DI 59 [ in ]) 0)) 102 {*movdf_integer_rex64} (expr_list:REG_DEAD (reg/v:DI 59 [ in ])
38 (nil)))
39
40(insn:HI 10 6 16 2 c.c:7 (set (reg/i:DF 21 xmm0 [ <result> ])
41 (reg:DF 58 [ <result> ])) 102 {*movdf_integer_rex64} (expr_list:REG_DEAD (reg:DF 58 [ <result> ])
42 (nil)))
43
44(insn:HI 16 10 0 2 c.c:7 (use (reg/i:DF 21 xmm0 [ <result> ])) -1 (nil))
45
46we are trying to allocate registers for insn 6 and we allocate
47xmm0 for the return value. Reload doesn't check if xmm0 can be used for
48DF 59, it allocates xmm1 for DF 59 and generates:
49
50Reloads for insn # 6
51Reload 0: reload_in (DF) = (reg:DF 5 di)
52 SSE_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine
53 reload_in_reg: (subreg:DF (reg/v:DI 5 di [orig:59 in ] [59]) 0)
54 reload_reg_rtx: (reg:DF 22 xmm1)
55...
56
57(note:HI 4 1 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
58
59(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG)
60
61(insn 22 3 23 2 c.c:3 (set (mem/c:DF (plus:DI (reg/f:DI 7 sp)
62 (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])
63 (reg:DF 5 di)) 102 {*movdf_integer_rex64} (nil))
64
65(insn 23 22 6 2 c.c:3 (set (reg:DF 22 xmm1)
66 (mem/c:DF (plus:DI (reg/f:DI 7 sp)
67 (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])) 102 {*movdf_integer_rex64} (nil))
68
69(insn:HI 6 23 16 2 c.c:3 (set (reg:DF 21 xmm0 [orig:58 <result> ] [58])
70 (reg:DF 22 xmm1)) 102 {*movdf_integer_rex64} (nil))
71
72(insn 16 6 21 2 c.c:7 (use (reg/i:DF 21 xmm0 [ <result> ])) -1 (nil))
73
74This patch tries to use the destination register when reloading for input. It
75generates
76
77Reloads for insn # 6
78Reload 0: reload_in (DF) = (reg:DF 5 di)
79 SSE_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine
80 reload_in_reg: (subreg:DF (reg/v:DI 5 di [orig:59 in ] [59]) 0)
81 reload_reg_rtx: (reg:DF 21 xmm0)
82...
83(note:HI 4 1 3 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
84
85(note:HI 3 4 22 2 NOTE_INSN_FUNCTION_BEG)
86
87(insn 22 3 23 2 c.c:3 (set (mem/c:DF (plus:DI (reg/f:DI 7 sp)
88 (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])
89 (reg:DF 5 di)) 102 {*movdf_integer_rex64} (nil))
90
91(insn 23 22 6 2 c.c:3 (set (reg:DF 21 xmm0)
92 (mem/c:DF (plus:DI (reg/f:DI 7 sp)
93 (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])) 102 {*movdf_integer_rex64} (nil))
94
95(insn:HI 6 23 10 2 c.c:3 (set (reg:DF 22 xmm1 [orig:58 <result> ] [58])
96 (reg:DF 21 xmm0)) 102 {*movdf_integer_rex64} (nil))
97
98(insn:HI 10 6 16 2 c.c:7 (set (reg/i:DF 21 xmm0 [ <result> ])
99 (reg:DF 22 xmm1 [orig:58 <result> ] [58])) 102 {*movdf_integer_rex64} (nil))
100
101(insn 16 10 21 2 c.c:7 (use (reg/i:DF 21 xmm0 [ <result> ])) -1 (nil))
102
103
104H.J.
105----
106gcc/
107
1082007-08-27 H.J. Lu <hongjiu.lu@intel.com>
109
110 PR target/30961
111 * reload1.c (find_reg): Favor the hard register in destination
112 if it is usable and a memory location is needed for reload
113 input.
114
115gcc/testsuite/
116
1172007-08-27 H.J. Lu <hongjiu.lu@intel.com>
118
119 PR target/30961
120 * gcc.target/i386/pr30961-1.c: New.
121
122--- gcc/reload1.c.second 2007-08-27 09:35:08.000000000 -0700
123+++ gcc/reload1.c 2007-08-27 09:36:33.000000000 -0700
124@@ -1781,6 +1781,20 @@ find_reg (struct insn_chain *chain, int
125 HARD_REG_SET not_usable;
126 HARD_REG_SET used_by_other_reload;
127 reg_set_iterator rsi;
128+#ifdef SECONDARY_MEMORY_NEEDED
129+ rtx body = PATTERN (chain->insn);
130+ unsigned int dest_reg = FIRST_PSEUDO_REGISTER;
131+
132+ if (GET_CODE (body) == SET)
133+ {
134+ rtx dest = SET_DEST (body);
135+
136+ if ((REG_P (dest)
137+ || (GET_CODE (dest) == SUBREG
138+ && REG_P (SUBREG_REG (dest)))))
139+ dest_reg = reg_or_subregno (dest);
140+ }
141+#endif
142
143 COPY_HARD_REG_SET (not_usable, bad_spill_regs);
144 IOR_HARD_REG_SET (not_usable, bad_spill_regs_global);
145@@ -1821,6 +1835,18 @@ find_reg (struct insn_chain *chain, int
146 this_cost--;
147 if (rl->out && REG_P (rl->out) && REGNO (rl->out) == regno)
148 this_cost--;
149+#ifdef SECONDARY_MEMORY_NEEDED
150+ /* If a memory location is needed for rl->in and dest_reg
151+ is usable, we will favor it. */
152+ else if (dest_reg == regno
153+ && rl->in
154+ && REG_P (rl->in)
155+ && REGNO (rl->in) < FIRST_PSEUDO_REGISTER
156+ && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (rl->in)),
157+ rl->class,
158+ rl->mode))
159+ this_cost = 0;
160+#endif
161 if (this_cost < best_cost
162 /* Among registers with equal cost, prefer caller-saved ones, or
163 use REG_ALLOC_ORDER if it is defined. */
164--- gcc/testsuite/gcc.target/i386/pr30961-1.c.second 2007-08-27 11:01:59.000000000 -0700
165+++ gcc/testsuite/gcc.target/i386/pr30961-1.c 2007-08-27 11:02:51.000000000 -0700
166@@ -0,0 +1,13 @@
167+/* { dg-do compile } */
168+/* { dg-require-effective-target lp64 } */
169+/* { dg-options "-O2" } */
170+
171+double
172+convert (long long in)
173+{
174+ double f;
175+ __builtin_memcpy( &f, &in, sizeof( in ) );
176+ return f;
177+}
178+
179+/* { dg-final { scan-assembler-not "movapd" } } */
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/pr35942.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/pr35942.patch
new file mode 100644
index 000000000..da610f518
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/pr35942.patch
@@ -0,0 +1,38 @@
1Fix PR 35942: remove -lstdc++ from libtool postdeps for CXX.
2
3libstdc++-v3/ChangeLog:
42010-01-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
5
6 PR libstdc++/35942
7 * configure.ac: Remove -lstdc++ from libtool's postdeps_CXX.
8 * configure: Regenerate.
9
10
11Index: gcc-4.3.3/libstdc++-v3/configure
12===================================================================
13--- gcc-4.3.3.orig/libstdc++-v3/configure 2010-03-26 17:57:51.000000000 +0000
14+++ gcc-4.3.3/libstdc++-v3/configure 2010-03-26 17:57:58.000000000 +0000
15@@ -13759,6 +13759,9 @@
16
17
18
19+# Eliminate -lstdc++ addition to postdeps for cross compiles.
20+postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
21+
22 # Possibly disable most of the library.
23 ## TODO: Consider skipping unncessary tests altogether in this case, rather
24 ## than just ignoring the results. Faster /and/ more correct, win win.
25Index: gcc-4.3.3/libstdc++-v3/configure.ac
26===================================================================
27--- gcc-4.3.3.orig/libstdc++-v3/configure.ac 2010-03-26 17:57:54.000000000 +0000
28+++ gcc-4.3.3/libstdc++-v3/configure.ac 2010-03-26 17:57:58.000000000 +0000
29@@ -89,6 +89,9 @@
30 AC_SUBST(enable_shared)
31 AC_SUBST(enable_static)
32
33+# Eliminate -lstdc++ addition to postdeps for cross compiles.
34+postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'`
35+
36 # Possibly disable most of the library.
37 ## TODO: Consider skipping unncessary tests altogether in this case, rather
38 ## than just ignoring the results. Faster /and/ more correct, win win.
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/sh4-multilib.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/sh4-multilib.patch
new file mode 100644
index 000000000..c895c95e1
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/sh4-multilib.patch
@@ -0,0 +1,25 @@
1# DP: Fix multilib (m4/m4-nofpu) for sh4-linux
2
3---
4 a/gcc/config.gcc | 5 +++--
5 1 files changed, 3 insertions(+), 2 deletions(-)
6
7Index: gcc-4_5-branch/gcc/config.gcc
8===================================================================
9--- gcc-4_5-branch.orig/gcc/config.gcc 2010-12-23 00:33:39.000000000 -0800
10+++ gcc-4_5-branch/gcc/config.gcc 2011-01-09 02:57:36.608656002 -0800
11@@ -2321,11 +2321,12 @@
12 if test "$sh_multilibs" = "default" ; then
13 case ${target} in
14 sh64-superh-linux* | \
15- sh[1234]*) sh_multilibs=${sh_cpu_target} ;;
16 sh64* | sh5*) sh_multilibs=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu ;;
17- sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
18+ sh-superh-* | \
19+ sh4-*-linux*) sh_multilibs=m4,m4-nofpu ;;
20 sh*-*-linux*) sh_multilibs=m1,m3e,m4 ;;
21 sh*-*-netbsd*) sh_multilibs=m3,m3e,m4 ;;
22+ sh-superh-*) sh_multilibs=m4,m4-single,m4-single-only,m4-nofpu ;;
23 *) sh_multilibs=m1,m2,m2e,m4,m4-single,m4-single-only,m2a,m2a-single ;;
24 esac
25 if test x$with_fp = xno; then
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-no-host-includes.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-no-host-includes.patch
new file mode 100644
index 000000000..4ccf35f62
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-no-host-includes.patch
@@ -0,0 +1,31 @@
1Index: gcc-4.4+svnr145550/gcc/incpath.c
2===================================================================
3--- gcc-4.4+svnr145550.orig/gcc/incpath.c 2009-04-04 13:48:31.000000000 -0700
4+++ gcc-4.4+svnr145550/gcc/incpath.c 2009-04-04 14:49:29.000000000 -0700
5@@ -417,6 +417,26 @@
6 p->construct = 0;
7 p->user_supplied_p = user_supplied_p;
8
9+#ifdef CROSS_COMPILE
10+ /* A common error when cross compiling is including
11+ host headers. This code below will try to fail fast
12+ for cross compiling. Currently we consider /usr/include,
13+ /opt/include and /sw/include as harmful. */
14+ {
15+ /* printf("Adding Path: %s\n", p->name ); */
16+ if( strstr(p->name, "/usr/include" ) == p->name ) {
17+ fprintf(stderr, _("CROSS COMPILE Badness: /usr/include in INCLUDEPATH: %s\n"), p->name);
18+ abort();
19+ } else if( strstr(p->name, "/sw/include") == p->name ) {
20+ fprintf(stderr, _("CROSS COMPILE Badness: /sw/include in INCLUDEPATH: %s\n"), p->name);
21+ abort();
22+ } else if( strstr(p->name, "/opt/include") == p->name ) {
23+ fprintf(stderr, _("CROSS COMPILE Badness: /opt/include in INCLUDEPATH: %s\n"), p->name);
24+ abort();
25+ }
26+ }
27+#endif
28+
29 add_cpp_dir_path (p, chain);
30 }
31
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-xgcc-cpp.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-xgcc-cpp.patch
new file mode 100644
index 000000000..a7722cbfc
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/zecke-xgcc-cpp.patch
@@ -0,0 +1,28 @@
1upstream: n/a
2comment: Use the preprocessor we have just compiled instead the one of
3the system. There might be incompabilities between us and them.
4
5Index: gcc-4.3.1/Makefile.in
6===================================================================
7--- gcc-4.3.1.orig/Makefile.in 2008-08-19 01:09:56.000000000 -0700
8+++ gcc-4.3.1/Makefile.in 2008-08-19 01:13:27.000000000 -0700
9@@ -204,6 +204,7 @@
10 AR="$(AR_FOR_TARGET)"; export AR; \
11 AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
12 CC="$(CC_FOR_TARGET)"; export CC; \
13+ CPP="$(CC_FOR_TARGET) -E"; export CPP; \
14 CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
15 CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
16 CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
17Index: gcc-4.3.1/Makefile.tpl
18===================================================================
19--- gcc-4.3.1.orig/Makefile.tpl 2008-08-21 00:07:58.000000000 -0700
20+++ gcc-4.3.1/Makefile.tpl 2008-08-21 00:09:52.000000000 -0700
21@@ -223,6 +223,7 @@
22 AR="$(AR_FOR_TARGET)"; export AR; \
23 AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
24 CC="$(CC_FOR_TARGET)"; export CC; \
25+ CPP="$(CC_FOR_TARGET) -E"; export CPP; \
26 CFLAGS="$(CFLAGS_FOR_TARGET) $(SYSROOT_CFLAGS_FOR_TARGET) $(DEBUG_PREFIX_CFLAGS_FOR_TARGET)"; export CFLAGS; \
27 CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
28 CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \