Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/arm/arm-fixed.md @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 ;; Copyright (C) 2011-2017 Free Software Foundation, Inc. | 1 ;; Copyright (C) 2011-2018 Free Software Foundation, Inc. |
2 ;; | 2 ;; |
3 ;; This file is part of GCC. | 3 ;; This file is part of GCC. |
4 ;; | 4 ;; |
5 ;; GCC is free software; you can redistribute it and/or modify it | 5 ;; GCC is free software; you can redistribute it and/or modify it |
6 ;; under the terms of the GNU General Public License as published | 6 ;; under the terms of the GNU General Public License as published |
33 (plus:ADDSUB (match_operand:ADDSUB 1 "s_register_operand" "r") | 33 (plus:ADDSUB (match_operand:ADDSUB 1 "s_register_operand" "r") |
34 (match_operand:ADDSUB 2 "s_register_operand" "r")))] | 34 (match_operand:ADDSUB 2 "s_register_operand" "r")))] |
35 "TARGET_INT_SIMD" | 35 "TARGET_INT_SIMD" |
36 "sadd<qaddsub_suf>%?\\t%0, %1, %2" | 36 "sadd<qaddsub_suf>%?\\t%0, %1, %2" |
37 [(set_attr "predicable" "yes") | 37 [(set_attr "predicable" "yes") |
38 (set_attr "predicable_short_it" "no") | |
39 (set_attr "type" "alu_dsp_reg")]) | 38 (set_attr "type" "alu_dsp_reg")]) |
40 | 39 |
41 (define_insn "usadd<mode>3" | 40 (define_insn "usadd<mode>3" |
42 [(set (match_operand:UQADDSUB 0 "s_register_operand" "=r") | 41 [(set (match_operand:UQADDSUB 0 "s_register_operand" "=r") |
43 (us_plus:UQADDSUB (match_operand:UQADDSUB 1 "s_register_operand" "r") | 42 (us_plus:UQADDSUB (match_operand:UQADDSUB 1 "s_register_operand" "r") |
44 (match_operand:UQADDSUB 2 "s_register_operand" "r")))] | 43 (match_operand:UQADDSUB 2 "s_register_operand" "r")))] |
45 "TARGET_INT_SIMD" | 44 "TARGET_INT_SIMD" |
46 "uqadd<qaddsub_suf>%?\\t%0, %1, %2" | 45 "uqadd<qaddsub_suf>%?\\t%0, %1, %2" |
47 [(set_attr "predicable" "yes") | 46 [(set_attr "predicable" "yes") |
48 (set_attr "predicable_short_it" "no") | |
49 (set_attr "type" "alu_dsp_reg")]) | 47 (set_attr "type" "alu_dsp_reg")]) |
50 | 48 |
51 (define_insn "ssadd<mode>3" | 49 (define_insn "ssadd<mode>3" |
52 [(set (match_operand:QADDSUB 0 "s_register_operand" "=r") | 50 [(set (match_operand:QADDSUB 0 "s_register_operand" "=r") |
53 (ss_plus:QADDSUB (match_operand:QADDSUB 1 "s_register_operand" "r") | 51 (ss_plus:QADDSUB (match_operand:QADDSUB 1 "s_register_operand" "r") |
54 (match_operand:QADDSUB 2 "s_register_operand" "r")))] | 52 (match_operand:QADDSUB 2 "s_register_operand" "r")))] |
55 "TARGET_INT_SIMD" | 53 "TARGET_INT_SIMD" |
56 "qadd<qaddsub_suf>%?\\t%0, %1, %2" | 54 "qadd<qaddsub_suf>%?\\t%0, %1, %2" |
57 [(set_attr "predicable" "yes") | 55 [(set_attr "predicable" "yes") |
58 (set_attr "predicable_short_it" "no") | |
59 (set_attr "type" "alu_dsp_reg")]) | 56 (set_attr "type" "alu_dsp_reg")]) |
60 | 57 |
61 (define_insn "sub<mode>3" | 58 (define_insn "sub<mode>3" |
62 [(set (match_operand:FIXED 0 "s_register_operand" "=l,r") | 59 [(set (match_operand:FIXED 0 "s_register_operand" "=l,r") |
63 (minus:FIXED (match_operand:FIXED 1 "s_register_operand" "l,r") | 60 (minus:FIXED (match_operand:FIXED 1 "s_register_operand" "l,r") |
73 (minus:ADDSUB (match_operand:ADDSUB 1 "s_register_operand" "r") | 70 (minus:ADDSUB (match_operand:ADDSUB 1 "s_register_operand" "r") |
74 (match_operand:ADDSUB 2 "s_register_operand" "r")))] | 71 (match_operand:ADDSUB 2 "s_register_operand" "r")))] |
75 "TARGET_INT_SIMD" | 72 "TARGET_INT_SIMD" |
76 "ssub<qaddsub_suf>%?\\t%0, %1, %2" | 73 "ssub<qaddsub_suf>%?\\t%0, %1, %2" |
77 [(set_attr "predicable" "yes") | 74 [(set_attr "predicable" "yes") |
78 (set_attr "predicable_short_it" "no") | |
79 (set_attr "type" "alu_dsp_reg")]) | 75 (set_attr "type" "alu_dsp_reg")]) |
80 | 76 |
81 (define_insn "ussub<mode>3" | 77 (define_insn "ussub<mode>3" |
82 [(set (match_operand:UQADDSUB 0 "s_register_operand" "=r") | 78 [(set (match_operand:UQADDSUB 0 "s_register_operand" "=r") |
83 (us_minus:UQADDSUB | 79 (us_minus:UQADDSUB |
84 (match_operand:UQADDSUB 1 "s_register_operand" "r") | 80 (match_operand:UQADDSUB 1 "s_register_operand" "r") |
85 (match_operand:UQADDSUB 2 "s_register_operand" "r")))] | 81 (match_operand:UQADDSUB 2 "s_register_operand" "r")))] |
86 "TARGET_INT_SIMD" | 82 "TARGET_INT_SIMD" |
87 "uqsub<qaddsub_suf>%?\\t%0, %1, %2" | 83 "uqsub<qaddsub_suf>%?\\t%0, %1, %2" |
88 [(set_attr "predicable" "yes") | 84 [(set_attr "predicable" "yes") |
89 (set_attr "predicable_short_it" "no") | |
90 (set_attr "type" "alu_dsp_reg")]) | 85 (set_attr "type" "alu_dsp_reg")]) |
91 | 86 |
92 (define_insn "sssub<mode>3" | 87 (define_insn "sssub<mode>3" |
93 [(set (match_operand:QADDSUB 0 "s_register_operand" "=r") | 88 [(set (match_operand:QADDSUB 0 "s_register_operand" "=r") |
94 (ss_minus:QADDSUB (match_operand:QADDSUB 1 "s_register_operand" "r") | 89 (ss_minus:QADDSUB (match_operand:QADDSUB 1 "s_register_operand" "r") |
95 (match_operand:QADDSUB 2 "s_register_operand" "r")))] | 90 (match_operand:QADDSUB 2 "s_register_operand" "r")))] |
96 "TARGET_INT_SIMD" | 91 "TARGET_INT_SIMD" |
97 "qsub<qaddsub_suf>%?\\t%0, %1, %2" | 92 "qsub<qaddsub_suf>%?\\t%0, %1, %2" |
98 [(set_attr "predicable" "yes") | 93 [(set_attr "predicable" "yes") |
99 (set_attr "predicable_short_it" "no") | |
100 (set_attr "type" "alu_dsp_reg")]) | 94 (set_attr "type" "alu_dsp_reg")]) |
101 | 95 |
102 ;; Fractional multiplies. | 96 ;; Fractional multiplies. |
103 | 97 |
104 ; Note: none of these do any rounding. | 98 ; Note: none of these do any rounding. |
141 | 135 |
142 (define_expand "mulsq3" | 136 (define_expand "mulsq3" |
143 [(set (match_operand:SQ 0 "s_register_operand" "") | 137 [(set (match_operand:SQ 0 "s_register_operand" "") |
144 (mult:SQ (match_operand:SQ 1 "s_register_operand" "") | 138 (mult:SQ (match_operand:SQ 1 "s_register_operand" "") |
145 (match_operand:SQ 2 "s_register_operand" "")))] | 139 (match_operand:SQ 2 "s_register_operand" "")))] |
146 "TARGET_32BIT && arm_arch3m" | 140 "TARGET_32BIT" |
147 { | 141 { |
148 rtx tmp1 = gen_reg_rtx (DImode); | 142 rtx tmp1 = gen_reg_rtx (DImode); |
149 rtx tmp2 = gen_reg_rtx (SImode); | 143 rtx tmp2 = gen_reg_rtx (SImode); |
150 rtx tmp3 = gen_reg_rtx (SImode); | 144 rtx tmp3 = gen_reg_rtx (SImode); |
151 | 145 |
163 | 157 |
164 (define_expand "mulsa3" | 158 (define_expand "mulsa3" |
165 [(set (match_operand:SA 0 "s_register_operand" "") | 159 [(set (match_operand:SA 0 "s_register_operand" "") |
166 (mult:SA (match_operand:SA 1 "s_register_operand" "") | 160 (mult:SA (match_operand:SA 1 "s_register_operand" "") |
167 (match_operand:SA 2 "s_register_operand" "")))] | 161 (match_operand:SA 2 "s_register_operand" "")))] |
168 "TARGET_32BIT && arm_arch3m" | 162 "TARGET_32BIT" |
169 { | 163 { |
170 rtx tmp1 = gen_reg_rtx (DImode); | 164 rtx tmp1 = gen_reg_rtx (DImode); |
171 rtx tmp2 = gen_reg_rtx (SImode); | 165 rtx tmp2 = gen_reg_rtx (SImode); |
172 rtx tmp3 = gen_reg_rtx (SImode); | 166 rtx tmp3 = gen_reg_rtx (SImode); |
173 | 167 |
182 | 176 |
183 (define_expand "mulusa3" | 177 (define_expand "mulusa3" |
184 [(set (match_operand:USA 0 "s_register_operand" "") | 178 [(set (match_operand:USA 0 "s_register_operand" "") |
185 (mult:USA (match_operand:USA 1 "s_register_operand" "") | 179 (mult:USA (match_operand:USA 1 "s_register_operand" "") |
186 (match_operand:USA 2 "s_register_operand" "")))] | 180 (match_operand:USA 2 "s_register_operand" "")))] |
187 "TARGET_32BIT && arm_arch3m" | 181 "TARGET_32BIT" |
188 { | 182 { |
189 rtx tmp1 = gen_reg_rtx (DImode); | 183 rtx tmp1 = gen_reg_rtx (DImode); |
190 rtx tmp2 = gen_reg_rtx (SImode); | 184 rtx tmp2 = gen_reg_rtx (SImode); |
191 rtx tmp3 = gen_reg_rtx (SImode); | 185 rtx tmp3 = gen_reg_rtx (SImode); |
192 | 186 |
412 [(match_operand:SI 2 "s_register_operand" "r") | 406 [(match_operand:SI 2 "s_register_operand" "r") |
413 (match_operand:SI 3 "immediate_operand" "I")])))] | 407 (match_operand:SI 3 "immediate_operand" "I")])))] |
414 "TARGET_32BIT && arm_arch6" | 408 "TARGET_32BIT && arm_arch6" |
415 "ssat%?\\t%0, #16, %2%S1" | 409 "ssat%?\\t%0, #16, %2%S1" |
416 [(set_attr "predicable" "yes") | 410 [(set_attr "predicable" "yes") |
417 (set_attr "predicable_short_it" "no") | |
418 (set_attr "shift" "1") | 411 (set_attr "shift" "1") |
419 (set_attr "type" "alu_shift_imm")]) | 412 (set_attr "type" "alu_shift_imm")]) |
420 | 413 |
421 (define_insn "arm_usatsihi" | 414 (define_insn "arm_usatsihi" |
422 [(set (match_operand:HI 0 "s_register_operand" "=r") | 415 [(set (match_operand:HI 0 "s_register_operand" "=r") |
423 (us_truncate:HI (match_operand:SI 1 "s_register_operand")))] | 416 (us_truncate:HI (match_operand:SI 1 "s_register_operand")))] |
424 "TARGET_INT_SIMD" | 417 "TARGET_INT_SIMD" |
425 "usat%?\\t%0, #16, %1" | 418 "usat%?\\t%0, #16, %1" |
426 [(set_attr "predicable" "yes") | 419 [(set_attr "predicable" "yes") |
427 (set_attr "predicable_short_it" "no") | |
428 (set_attr "type" "alu_imm")] | 420 (set_attr "type" "alu_imm")] |
429 ) | 421 ) |