1 ;; Instruction Classification for ARM for GNU compiler.
3 ;; Copyright (C) 1991-2017 Free Software Foundation, Inc.
4 ;; Contributed by ARM Ltd.
6 ;; This file is part of GCC.
8 ;; GCC is free software; you can redistribute it and/or modify it
9 ;; under the terms of the GNU General Public License as published
10 ;; by the Free Software Foundation; either version 3, or (at your
11 ;; option) any later version.
13 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
14 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 ;; License for more details.
18 ;; You should have received a copy of the GNU General Public License
19 ;; along with GCC; see the file COPYING3. If not see
20 ;; <http://www.gnu.org/licenses/>.
22 ; TYPE attribute is used to classify instructions for use in scheduling.
24 ; Instruction classification:
26 ; adc_imm add/subtract with carry and with an immediate operand.
27 ; adc_reg add/subtract with carry and no immediate operand.
28 ; adcs_imm as adc_imm, setting condition flags.
29 ; adcs_reg as adc_reg, setting condition flags.
30 ; adr calculate address.
31 ; alu_ext From ARMv8-A: any arithmetic instruction that has a
35 ; alu_imm any arithmetic instruction that doesn't have a shifted
36 ; operand and has an immediate operand. This
37 ; excludes MOV, MVN and RSB(S) immediate.
38 ; alu_sreg any arithmetic instruction that doesn't have a shifted
39 ; or an immediate operand. This excludes
40 ; MOV and MVN but includes MOVT. This also excludes
41 ; DSP-kind instructions. This is also the default.
42 ; alu_shift_imm any arithmetic instruction that has a source operand
43 ; shifted by a constant. This excludes simple shifts.
44 ; alu_shift_reg as alu_shift_imm, with the shift amount specified in a
46 ; alu_dsp_reg any DSP-kind instruction like QSUB8.
47 ; alus_ext From ARMv8-A: as alu_ext, setting condition flags.
49 ; alus_imm as alu_imm, setting condition flags.
50 ; alus_sreg as alu_sreg, setting condition flags.
51 ; alus_shift_imm as alu_shift_imm, setting condition flags.
52 ; alus_shift_reg as alu_shift_reg, setting condition flags.
53 ; bfm bitfield move operation.
54 ; bfx bitfield extract operation.
55 ; block blockage insn, this blocks all functional units.
57 ; call subroutine call.
58 ; clz count leading zeros (CLZ).
59 ; csel From ARMv8-A: conditional select.
60 ; extend extend instruction (SXTB, SXTH, UXTB, UXTH).
61 ; f_cvt conversion between float representations.
62 ; f_cvtf2i conversion between float and integral types.
63 ; f_cvti2f conversion between integral and float types.
64 ; f_flag transfer of co-processor flags to the CPSR.
65 ; f_load[d,s] double/single load from memory. Used for VFP unit.
66 ; f_mcr transfer arm to vfp reg.
67 ; f_mcrr transfer two arm regs to vfp reg.
68 ; f_minmax[d,s] double/single floating point minimum/maximum.
69 ; f_mrc transfer vfp to arm reg.
70 ; f_mrrc transfer vfp to two arm regs.
71 ; f_rint[d,s] double/single floating point rount to integral.
72 ; f_store[d,s] double/single store to memory. Used for VFP unit.
73 ; fadd[d,s] double/single floating-point scalar addition.
74 ; fccmp[d,s] From ARMv8-A: floating-point conditional compare.
75 ; fcmp[d,s] double/single floating-point compare.
76 ; fconst[d,s] double/single load immediate.
77 ; fcsel From ARMv8-A: Floating-point conditional select.
78 ; fdiv[d,s] double/single precision floating point division.
79 ; ffarith[d,s] double/single floating point abs/neg/cpy.
80 ; ffma[d,s] double/single floating point fused multiply-accumulate.
81 ; float floating point arithmetic operation.
82 ; fmac[d,s] double/single floating point multiply-accumulate.
83 ; fmov floating point to floating point register move.
84 ; fmul[d,s] double/single floating point multiply.
85 ; fsqrt[d,s] double/single precision floating point square root.
86 ; load_acq load-acquire.
87 ; load_byte load byte(s) from memory to arm registers.
88 ; load1 load 1 word from memory to arm registers.
89 ; load2 load 2 words from memory to arm registers.
90 ; load3 load 3 words from memory to arm registers.
91 ; load4 load 4 words from memory to arm registers.
92 ; logic_imm any logical instruction that doesn't have a shifted
93 ; operand and has an immediate operand.
94 ; logic_reg any logical instruction that doesn't have a shifted
95 ; operand or an immediate operand.
96 ; logic_shift_imm any logical instruction that has a source operand
97 ; shifted by a constant. This excludes simple shifts.
98 ; logic_shift_reg as logic_shift_imm, with the shift amount specified in a
100 ; logics_imm as logic_imm, setting condition flags.
101 ; logics_reg as logic_reg, setting condition flags.
102 ; logics_shift_imm as logic_shift_imm, setting condition flags.
103 ; logics_shift_reg as logic_shift_reg, setting condition flags.
104 ; mla integer multiply accumulate.
105 ; mlas integer multiply accumulate, flag setting.
106 ; mov_imm simple MOV instruction that moves an immediate to
107 ; register. This includes MOVW, but not MOVT.
108 ; mov_reg simple MOV instruction that moves a register to another
109 ; register. This includes MOVW, but not MOVT.
110 ; mov_shift simple MOV instruction, shifted operand by a constant.
111 ; mov_shift_reg simple MOV instruction, shifted operand by a register.
112 ; mrs system/special/co-processor register move.
113 ; mul integer multiply.
114 ; muls integer multiply, flag setting.
115 ; multiple more than one instruction, candidate for future
116 ; splitting, or better modeling.
117 ; mvn_imm inverting move instruction, immediate.
118 ; mvn_reg inverting move instruction, register.
119 ; mvn_shift inverting move instruction, shifted operand by a constant.
120 ; mvn_shift_reg inverting move instruction, shifted operand by a register.
121 ; no_insn an insn which does not represent an instruction in the
122 ; final output, thus having no impact on scheduling.
125 ; rotate_imm rotate by immediate.
126 ; sdiv signed division.
127 ; shift_imm simple shift operation (LSL, LSR, ASR, ROR) with an
129 ; shift_reg simple shift by a register.
130 ; smlad signed multiply accumulate dual.
131 ; smladx signed multiply accumulate dual reverse.
132 ; smlal signed multiply accumulate long.
133 ; smlald signed multiply accumulate long dual.
134 ; smlals signed multiply accumulate long, flag setting.
135 ; smlalxy signed multiply accumulate, 16x16-bit, 64-bit accumulate.
136 ; smlawx signed multiply accumulate, 32x16-bit, 32-bit accumulate.
137 ; smlawy signed multiply accumulate wide, 32x16-bit,
139 ; smlaxy signed multiply accumulate, 16x16-bit, 32-bit accumulate.
140 ; smlsd signed multiply subtract dual.
141 ; smlsdx signed multiply subtract dual reverse.
142 ; smlsld signed multiply subtract long dual.
143 ; smmla signed most significant word multiply accumulate.
144 ; smmul signed most significant word multiply.
145 ; smmulr signed most significant word multiply, rounded.
146 ; smuad signed dual multiply add.
147 ; smuadx signed dual multiply add reverse.
148 ; smull signed multiply long.
149 ; smulls signed multiply long, flag setting.
150 ; smulwy signed multiply wide, 32x16-bit, 32-bit accumulate.
151 ; smulxy signed multiply, 16x16-bit, 32-bit accumulate.
152 ; smusd signed dual multiply subtract.
153 ; smusdx signed dual multiply subtract reverse.
154 ; store_rel store-release.
155 ; store1 store 1 word to memory from arm registers.
156 ; store2 store 2 words to memory from arm registers.
157 ; store3 store 3 words to memory from arm registers.
158 ; store4 store 4 (or more) words to memory from arm registers.
159 ; trap cause a trap in the kernel.
160 ; udiv unsigned division.
161 ; umaal unsigned multiply accumulate accumulate long.
162 ; umlal unsigned multiply accumulate long.
163 ; umlals unsigned multiply accumulate long, flag setting.
164 ; umull unsigned multiply long.
165 ; umulls unsigned multiply long, flag setting.
166 ; untyped insn without type information - default, and error,
169 ; The classification below is for instructions used by the Wireless MMX
170 ; Technology. Each attribute value is used to classify an instruction of the
171 ; same name or family.
233 ; The classification below is for NEON instructions.
243 ; neon_add_halve_narrow_q
252 ; neon_sub_halve_narrow_q
269 ; neon_compare_zero_q
274 ; neon_reduc_add_long
276 ; neon_reduc_add_acc_q
278 ; neon_reduc_minmax_q
285 ; neon_shift_imm_narrow_q
286 ; neon_shift_imm_long
292 ; neon_sat_shift_imm_q
293 ; neon_sat_shift_imm_narrow_q
295 ; neon_sat_shift_reg_q
336 ; neon_mul_h_scalar_q
338 ; neon_mul_s_scalar_q
339 ; neon_mul_h_scalar_long
340 ; neon_mul_s_scalar_long
347 ; neon_sat_mul_b_long
348 ; neon_sat_mul_h_long
349 ; neon_sat_mul_s_long
350 ; neon_sat_mul_h_scalar
351 ; neon_sat_mul_h_scalar_q
352 ; neon_sat_mul_s_scalar
353 ; neon_sat_mul_s_scalar_q
354 ; neon_sat_mul_h_scalar_long
355 ; neon_sat_mul_s_scalar_long
366 ; neon_mla_h_scalar_q
368 ; neon_mla_s_scalar_q
369 ; neon_mla_h_scalar_long
370 ; neon_mla_s_scalar_long
371 ; neon_sat_mla_b_long
372 ; neon_sat_mla_h_long
373 ; neon_sat_mla_s_long
374 ; neon_sat_mla_h_scalar_long
375 ; neon_sat_mla_s_scalar_long
391 ; neon_load1_all_lanes
392 ; neon_load1_all_lanes_q
393 ; neon_load1_one_lane
394 ; neon_load1_one_lane_q
399 ; neon_load2_all_lanes
400 ; neon_load2_all_lanes_q
401 ; neon_load2_one_lane
402 ; neon_load2_one_lane_q
405 ; neon_load3_all_lanes
406 ; neon_load3_all_lanes_q
407 ; neon_load3_one_lane
408 ; neon_load3_one_lane_q
411 ; neon_load4_all_lanes
412 ; neon_load4_all_lanes_q
413 ; neon_load4_one_lane
414 ; neon_load4_one_lane_q
426 ; neon_store1_one_lane
427 ; neon_store1_one_lane_q
432 ; neon_store2_one_lane
433 ; neon_store2_one_lane_q
436 ; neon_store3_one_lane
437 ; neon_store3_one_lane_q
440 ; neon_store4_one_lane
441 ; neon_store4_one_lane_q
459 ; neon_fp_compare_s_q
461 ; neon_fp_compare_d_q
466 ; neon_fp_reduc_add_s
467 ; neon_fp_reduc_add_s_q
468 ; neon_fp_reduc_add_d
469 ; neon_fp_reduc_add_d_q
470 ; neon_fp_reduc_minmax_s
471 ; neon_fp_reduc_minmax_s_q
472 ; neon_fp_reduc_minmax_d
473 ; neon_fp_reduc_minmax_d_q
474 ; neon_fp_cvt_narrow_s_q
475 ; neon_fp_cvt_narrow_d_q
476 ; neon_fp_cvt_widen_h
477 ; neon_fp_cvt_widen_s
512 ; neon_fp_mul_s_scalar
513 ; neon_fp_mul_s_scalar_q
516 ; neon_fp_mul_d_scalar_q
519 ; neon_fp_mla_s_scalar
520 ; neon_fp_mla_s_scalar_q
523 ; neon_fp_mla_d_scalar_q
533 ; The classification below is for Crypto instructions.
544 ; The classification below is for coprocessor instructions
753 neon_add_halve_narrow_q,\
763 neon_sub_halve_narrow_q,\
782 neon_compare_zero_q,\
788 neon_reduc_add_long,\
790 neon_reduc_add_acc_q,\
792 neon_reduc_minmax_q,\
800 neon_shift_imm_narrow_q,\
801 neon_shift_imm_long,\
807 neon_sat_shift_imm_q,\
808 neon_sat_shift_imm_narrow_q,\
810 neon_sat_shift_reg_q,\
856 neon_mul_h_scalar_q,\
858 neon_mul_s_scalar_q,\
859 neon_mul_h_scalar_long,\
860 neon_mul_s_scalar_long,\
868 neon_sat_mul_b_long,\
869 neon_sat_mul_h_long,\
870 neon_sat_mul_s_long,\
871 neon_sat_mul_h_scalar,\
872 neon_sat_mul_h_scalar_q,\
873 neon_sat_mul_s_scalar,\
874 neon_sat_mul_s_scalar_q,\
875 neon_sat_mul_h_scalar_long,\
876 neon_sat_mul_s_scalar_long,\
888 neon_mla_h_scalar_q,\
890 neon_mla_s_scalar_q,\
891 neon_mla_h_scalar_long,\
892 neon_mla_s_scalar_long,\
894 neon_sat_mla_b_long,\
895 neon_sat_mla_h_long,\
896 neon_sat_mla_s_long,\
897 neon_sat_mla_h_scalar_long,\
898 neon_sat_mla_s_scalar_long,\
916 neon_load1_all_lanes,\
917 neon_load1_all_lanes_q,\
918 neon_load1_one_lane,\
919 neon_load1_one_lane_q,\
925 neon_load2_all_lanes,\
926 neon_load2_all_lanes_q,\
927 neon_load2_one_lane,\
928 neon_load2_one_lane_q,\
932 neon_load3_all_lanes,\
933 neon_load3_all_lanes_q,\
934 neon_load3_one_lane,\
935 neon_load3_one_lane_q,\
939 neon_load4_all_lanes,\
940 neon_load4_all_lanes_q,\
941 neon_load4_one_lane,\
942 neon_load4_one_lane_q,\
955 neon_store1_one_lane,\
956 neon_store1_one_lane_q,\
962 neon_store2_one_lane,\
963 neon_store2_one_lane_q,\
967 neon_store3_one_lane,\
968 neon_store3_one_lane_q,\
972 neon_store4_one_lane,\
973 neon_store4_one_lane_q,\
993 neon_fp_compare_s_q,\
995 neon_fp_compare_d_q,\
1001 neon_fp_reduc_add_s,\
1002 neon_fp_reduc_add_s_q,\
1003 neon_fp_reduc_add_d,\
1004 neon_fp_reduc_add_d_q,\
1005 neon_fp_reduc_minmax_s,\
1006 neon_fp_reduc_minmax_s_q,\
1007 neon_fp_reduc_minmax_d,\
1008 neon_fp_reduc_minmax_d_q,\
1010 neon_fp_cvt_narrow_s_q,\
1011 neon_fp_cvt_narrow_d_q,\
1012 neon_fp_cvt_widen_h,\
1013 neon_fp_cvt_widen_s,\
1016 neon_fp_to_int_s_q,\
1018 neon_fp_to_int_d_q,\
1020 neon_int_to_fp_s_q,\
1022 neon_int_to_fp_d_q,\
1042 neon_fp_rsqrte_s_q,\
1044 neon_fp_rsqrte_d_q,\
1046 neon_fp_rsqrts_s_q,\
1048 neon_fp_rsqrts_d_q,\
1052 neon_fp_mul_s_scalar,\
1053 neon_fp_mul_s_scalar_q,\
1056 neon_fp_mul_d_scalar_q,\
1060 neon_fp_mla_s_scalar,\
1061 neon_fp_mla_s_scalar_q,\
1064 neon_fp_mla_d_scalar_q,\
1080 crypto_sha256_fast,\
1081 crypto_sha256_slow,\
1084 (const_string "untyped"))
1086 ; Is this an (integer side) multiply with a 32-bit (or smaller) result?
1087 (define_attr "mul32" "no,yes"
1090 "smulxy,smlaxy,smulwy,smlawx,mul,muls,mla,mlas,smlawy,smuad,smuadx,\
1091 smlad,smladx,smusd,smusdx,smlsd,smlsdx,smmul,smmulr,smmla,smlald,smlsld")
1092 (const_string "yes")
1093 (const_string "no")))
1095 ; Is this an (integer side) multiply with a 64-bit result?
1096 (define_attr "mul64" "no,yes"
1099 "smlalxy,umull,umulls,umaal,umlal,umlals,smull,smulls,smlal,smlals")
1100 (const_string "yes")
1101 (const_string "no")))
1103 ; YES if the "type" attribute assigned to the insn denotes an
1104 ; Advanced SIMD instruction, NO otherwise.
1105 (define_attr "is_neon_type" "yes,no"
1106 (if_then_else (eq_attr "type"
1107 "neon_add, neon_add_q, neon_add_widen, neon_add_long,\
1108 neon_qadd, neon_qadd_q, neon_add_halve, neon_add_halve_q,\
1109 neon_add_halve_narrow_q,\
1110 neon_sub, neon_sub_q, neon_sub_widen, neon_sub_long, neon_qsub,\
1111 neon_qsub_q, neon_sub_halve, neon_sub_halve_q,\
1112 neon_sub_halve_narrow_q,\
1113 neon_abs, neon_abs_q, neon_neg, neon_neg_q, neon_qneg,\
1114 neon_qneg_q, neon_qabs, neon_qabs_q, neon_abd, neon_abd_q,\
1115 neon_abd_long, neon_minmax, neon_minmax_q, neon_compare,\
1116 neon_compare_q, neon_compare_zero, neon_compare_zero_q,\
1117 neon_arith_acc, neon_arith_acc_q, neon_reduc_add,\
1118 neon_reduc_add_q, neon_reduc_add_long, neon_reduc_add_acc,\
1119 neon_reduc_add_acc_q, neon_reduc_minmax, neon_reduc_minmax_q,\
1120 neon_logic, neon_logic_q, neon_tst, neon_tst_q,\
1121 neon_shift_imm, neon_shift_imm_q, neon_shift_imm_narrow_q,\
1122 neon_shift_imm_long, neon_shift_reg, neon_shift_reg_q,\
1123 neon_shift_acc, neon_shift_acc_q, neon_sat_shift_imm,\
1124 neon_sat_shift_imm_q, neon_sat_shift_imm_narrow_q,\
1125 neon_sat_shift_reg, neon_sat_shift_reg_q,\
1126 neon_ins, neon_ins_q, neon_move, neon_move_q, neon_move_narrow_q,\
1127 neon_permute, neon_permute_q, neon_zip, neon_zip_q, neon_tbl1,\
1128 neon_tbl1_q, neon_tbl2, neon_tbl2_q, neon_tbl3, neon_tbl3_q,\
1129 neon_tbl4, neon_tbl4_q, neon_bsl, neon_bsl_q, neon_cls,\
1130 neon_cls_q, neon_cnt, neon_cnt_q, neon_dup, neon_dup_q,\
1131 neon_ext, neon_ext_q, neon_rbit, neon_rbit_q,\
1132 neon_rev, neon_rev_q, neon_mul_b, neon_mul_b_q, neon_mul_h,\
1133 neon_mul_h_q, neon_mul_s, neon_mul_s_q, neon_mul_b_long,\
1134 neon_mul_h_long, neon_mul_s_long, neon_mul_d_long, neon_mul_h_scalar,\
1135 neon_mul_h_scalar_q, neon_mul_s_scalar, neon_mul_s_scalar_q,\
1136 neon_mul_h_scalar_long, neon_mul_s_scalar_long, neon_sat_mul_b,\
1137 neon_sat_mul_b_q, neon_sat_mul_h, neon_sat_mul_h_q,\
1138 neon_sat_mul_s, neon_sat_mul_s_q, neon_sat_mul_b_long,\
1139 neon_sat_mul_h_long, neon_sat_mul_s_long, neon_sat_mul_h_scalar,\
1140 neon_sat_mul_h_scalar_q, neon_sat_mul_s_scalar,\
1141 neon_sat_mul_s_scalar_q, neon_sat_mul_h_scalar_long,\
1142 neon_sat_mul_s_scalar_long, neon_mla_b, neon_mla_b_q, neon_mla_h,\
1143 neon_mla_h_q, neon_mla_s, neon_mla_s_q, neon_mla_b_long,\
1144 neon_mla_h_long, neon_mla_s_long, neon_mla_h_scalar,\
1145 neon_mla_h_scalar_q, neon_mla_s_scalar, neon_mla_s_scalar_q,\
1146 neon_mla_h_scalar_long, neon_mla_s_scalar_long,\
1147 neon_sat_mla_b_long, neon_sat_mla_h_long,\
1148 neon_sat_mla_s_long, neon_sat_mla_h_scalar_long,\
1149 neon_sat_mla_s_scalar_long,\
1150 neon_to_gp, neon_to_gp_q, neon_from_gp, neon_from_gp_q,\
1151 neon_ldr, neon_ldp, neon_ldp_q,\
1152 neon_load1_1reg, neon_load1_1reg_q, neon_load1_2reg,\
1153 neon_load1_2reg_q, neon_load1_3reg, neon_load1_3reg_q,\
1154 neon_load1_4reg, neon_load1_4reg_q, neon_load1_all_lanes,\
1155 neon_load1_all_lanes_q, neon_load1_one_lane, neon_load1_one_lane_q,\
1156 neon_load2_2reg, neon_load2_2reg_q, neon_load2_4reg,\
1157 neon_load2_4reg_q, neon_load2_all_lanes, neon_load2_all_lanes_q,\
1158 neon_load2_one_lane, neon_load2_one_lane_q,\
1159 neon_load3_3reg, neon_load3_3reg_q, neon_load3_all_lanes,\
1160 neon_load3_all_lanes_q, neon_load3_one_lane, neon_load3_one_lane_q,\
1161 neon_load4_4reg, neon_load4_4reg_q, neon_load4_all_lanes,\
1162 neon_load4_all_lanes_q, neon_load4_one_lane, neon_load4_one_lane_q,\
1163 neon_str, neon_stp, neon_stp_q,\
1164 neon_store1_1reg, neon_store1_1reg_q, neon_store1_2reg,\
1165 neon_store1_2reg_q, neon_store1_3reg, neon_store1_3reg_q,\
1166 neon_store1_4reg, neon_store1_4reg_q, neon_store1_one_lane,\
1167 neon_store1_one_lane_q, neon_store2_2reg, neon_store2_2reg_q,\
1168 neon_store2_4reg, neon_store2_4reg_q, neon_store2_one_lane,\
1169 neon_store2_one_lane_q, neon_store3_3reg, neon_store3_3reg_q,\
1170 neon_store3_one_lane, neon_store3_one_lane_q, neon_store4_4reg,\
1171 neon_store4_4reg_q, neon_store4_one_lane, neon_store4_one_lane_q,\
1172 neon_fp_abd_s, neon_fp_abd_s_q, neon_fp_abd_d, neon_fp_abd_d_q,\
1173 neon_fp_abs_s, neon_fp_abs_s_q, neon_fp_abs_d, neon_fp_abs_d_q,\
1174 neon_fp_addsub_s, neon_fp_addsub_s_q, neon_fp_addsub_d,\
1175 neon_fp_addsub_d_q, neon_fp_compare_s, neon_fp_compare_s_q,\
1176 neon_fp_compare_d, neon_fp_compare_d_q, neon_fp_minmax_s,\
1177 neon_fp_minmax_s_q, neon_fp_minmax_d, neon_fp_minmax_d_q,\
1178 neon_fp_neg_s, neon_fp_neg_s_q, neon_fp_neg_d, neon_fp_neg_d_q,\
1179 neon_fp_reduc_add_s, neon_fp_reduc_add_s_q, neon_fp_reduc_add_d,\
1180 neon_fp_reduc_add_d_q, neon_fp_reduc_minmax_s,
1181 neon_fp_reduc_minmax_s_q, neon_fp_reduc_minmax_d,\
1182 neon_fp_reduc_minmax_d_q,\
1183 neon_fp_cvt_narrow_s_q, neon_fp_cvt_narrow_d_q,\
1184 neon_fp_cvt_widen_h, neon_fp_cvt_widen_s, neon_fp_to_int_s,\
1185 neon_fp_to_int_s_q, neon_int_to_fp_s, neon_int_to_fp_s_q,\
1186 neon_fp_to_int_d, neon_fp_to_int_d_q,\
1187 neon_int_to_fp_d, neon_int_to_fp_d_q,\
1188 neon_fp_round_s, neon_fp_round_s_q, neon_fp_recpe_s,\
1190 neon_fp_recpe_d, neon_fp_recpe_d_q, neon_fp_recps_s,\
1191 neon_fp_recps_s_q, neon_fp_recps_d, neon_fp_recps_d_q,\
1192 neon_fp_recpx_s, neon_fp_recpx_s_q, neon_fp_recpx_d,\
1193 neon_fp_recpx_d_q, neon_fp_rsqrte_s, neon_fp_rsqrte_s_q,\
1194 neon_fp_rsqrte_d, neon_fp_rsqrte_d_q, neon_fp_rsqrts_s,\
1195 neon_fp_rsqrts_s_q, neon_fp_rsqrts_d, neon_fp_rsqrts_d_q,\
1196 neon_fp_mul_s, neon_fp_mul_s_q, neon_fp_mul_s_scalar,\
1197 neon_fp_mul_s_scalar_q, neon_fp_mul_d, neon_fp_mul_d_q,\
1198 neon_fp_mul_d_scalar_q, neon_fp_mla_s, neon_fp_mla_s_q,\
1199 neon_fp_mla_s_scalar, neon_fp_mla_s_scalar_q, neon_fp_mla_d,\
1200 neon_fp_mla_d_q, neon_fp_mla_d_scalar_q, neon_fp_sqrt_s,\
1201 neon_fp_sqrt_s_q, neon_fp_sqrt_d, neon_fp_sqrt_d_q,\
1202 neon_fp_div_s, neon_fp_div_s_q, neon_fp_div_d, neon_fp_div_d_q, crypto_aese,\
1203 crypto_aesmc, crypto_sha1_xor, crypto_sha1_fast, crypto_sha1_slow,\
1204 crypto_sha256_fast, crypto_sha256_slow")
1205 (const_string "yes")
1206 (const_string "no")))