comparison gcc/config/m68k/m68k.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 ;;- Machine description for GNU compiler, Motorola 68000 Version 1 ;;- Machine description for GNU compiler, Motorola 68000 Version
2 ;; Copyright (C) 1987-2017 Free Software Foundation, Inc. 2 ;; Copyright (C) 1987-2018 Free Software Foundation, Inc.
3 3
4 ;; This file is part of GCC. 4 ;; This file is part of GCC.
5 5
6 ;; GCC is free software; you can redistribute it and/or modify 6 ;; GCC is free software; you can redistribute it and/or modify
7 ;; it under the terms of the GNU General Public License as published by 7 ;; it under the terms of the GNU General Public License as published by
3238 (mult:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "%1")) 3238 (mult:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "%1"))
3239 (zero_extend:DI (match_operand:SI 3 "nonimmediate_operand" "dm"))) 3239 (zero_extend:DI (match_operand:SI 3 "nonimmediate_operand" "dm")))
3240 (const_int 32)))) 3240 (const_int 32))))
3241 (clobber (match_operand:SI 1 "register_operand" "=d"))] 3241 (clobber (match_operand:SI 1 "register_operand" "=d"))]
3242 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" 3242 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
3243 "mulu%.l %3,%0:%1") 3243 {
3244 CC_STATUS_INIT;
3245 return "mulu%.l %3,%0:%1";
3246 })
3244 3247
3245 (define_insn "const_umulsi3_highpart" 3248 (define_insn "const_umulsi3_highpart"
3246 [(set (match_operand:SI 0 "register_operand" "=d") 3249 [(set (match_operand:SI 0 "register_operand" "=d")
3247 (truncate:SI 3250 (truncate:SI
3248 (lshiftrt:DI 3251 (lshiftrt:DI
3249 (mult:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "1")) 3252 (mult:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "1"))
3250 (match_operand:DI 3 "const_uint32_operand" "n")) 3253 (match_operand:DI 3 "const_uint32_operand" "n"))
3251 (const_int 32)))) 3254 (const_int 32))))
3252 (clobber (match_operand:SI 1 "register_operand" "=d"))] 3255 (clobber (match_operand:SI 1 "register_operand" "=d"))]
3253 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" 3256 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
3254 "mulu%.l %3,%0:%1") 3257 {
3258 CC_STATUS_INIT;
3259 return "mulu%.l %3,%0:%1";
3260 })
3255 3261
3256 (define_expand "smulsi3_highpart" 3262 (define_expand "smulsi3_highpart"
3257 [(parallel 3263 [(parallel
3258 [(set (match_operand:SI 0 "register_operand" "") 3264 [(set (match_operand:SI 0 "register_operand" "")
3259 (truncate:SI 3265 (truncate:SI
3281 (mult:DI (sign_extend:DI (match_operand:SI 2 "register_operand" "%1")) 3287 (mult:DI (sign_extend:DI (match_operand:SI 2 "register_operand" "%1"))
3282 (sign_extend:DI (match_operand:SI 3 "nonimmediate_operand" "dm"))) 3288 (sign_extend:DI (match_operand:SI 3 "nonimmediate_operand" "dm")))
3283 (const_int 32)))) 3289 (const_int 32))))
3284 (clobber (match_operand:SI 1 "register_operand" "=d"))] 3290 (clobber (match_operand:SI 1 "register_operand" "=d"))]
3285 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" 3291 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
3286 "muls%.l %3,%0:%1") 3292 {
3293 CC_STATUS_INIT;
3294 return "muls%.l %3,%0:%1";
3295 })
3287 3296
3288 (define_insn "const_smulsi3_highpart" 3297 (define_insn "const_smulsi3_highpart"
3289 [(set (match_operand:SI 0 "register_operand" "=d") 3298 [(set (match_operand:SI 0 "register_operand" "=d")
3290 (truncate:SI 3299 (truncate:SI
3291 (lshiftrt:DI 3300 (lshiftrt:DI
3292 (mult:DI (sign_extend:DI (match_operand:SI 2 "register_operand" "1")) 3301 (mult:DI (sign_extend:DI (match_operand:SI 2 "register_operand" "1"))
3293 (match_operand:DI 3 "const_sint32_operand" "n")) 3302 (match_operand:DI 3 "const_sint32_operand" "n"))
3294 (const_int 32)))) 3303 (const_int 32))))
3295 (clobber (match_operand:SI 1 "register_operand" "=d"))] 3304 (clobber (match_operand:SI 1 "register_operand" "=d"))]
3296 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE" 3305 "TARGET_68020 && !TUNE_68060 && !TARGET_COLDFIRE"
3297 "muls%.l %3,%0:%1") 3306 {
3307 CC_STATUS_INIT;
3308 return "muls%.l %3,%0:%1";
3309 })
3298 3310
3299 (define_expand "mul<mode>3" 3311 (define_expand "mul<mode>3"
3300 [(set (match_operand:FP 0 "nonimmediate_operand" "") 3312 [(set (match_operand:FP 0 "nonimmediate_operand" "")
3301 (mult:FP (match_operand:FP 1 "general_operand" "") 3313 (mult:FP (match_operand:FP 1 "general_operand" "")
3302 (match_operand:FP 2 "general_operand" "")))] 3314 (match_operand:FP 2 "general_operand" "")))]
4681 (ashiftrt:DI (match_operand:DI 1 "register_operand" "0") 4693 (ashiftrt:DI (match_operand:DI 1 "register_operand" "0")
4682 (const_int 1)))] 4694 (const_int 1)))]
4683 "!TARGET_COLDFIRE" 4695 "!TARGET_COLDFIRE"
4684 { 4696 {
4685 operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1); 4697 operands[1] = gen_rtx_REG (SImode, REGNO (operands[0]) + 1);
4698 CC_STATUS_INIT;
4686 return "asr%.l #1,%0\;roxr%.l #1,%1"; 4699 return "asr%.l #1,%0\;roxr%.l #1,%1";
4687 }) 4700 })
4688 4701
4689 (define_split 4702 (define_split
4690 [(set (match_operand:DI 0 "register_operand" "") 4703 [(set (match_operand:DI 0 "register_operand" "")
4917 (define_insn "*lshrdi3_const1" 4930 (define_insn "*lshrdi3_const1"
4918 [(set (match_operand:DI 0 "register_operand" "=d") 4931 [(set (match_operand:DI 0 "register_operand" "=d")
4919 (lshiftrt:DI (match_operand:DI 1 "register_operand" "0") 4932 (lshiftrt:DI (match_operand:DI 1 "register_operand" "0")
4920 (const_int 1)))] 4933 (const_int 1)))]
4921 "!TARGET_COLDFIRE" 4934 "!TARGET_COLDFIRE"
4922 "lsr%.l #1,%0\;roxr%.l #1,%R0") 4935 {
4936 CC_STATUS_INIT;
4937 return "lsr%.l #1,%0\;roxr%.l #1,%R0";
4938 })
4923 4939
4924 (define_split 4940 (define_split
4925 [(set (match_operand:DI 0 "register_operand" "") 4941 [(set (match_operand:DI 0 "register_operand" "")
4926 (lshiftrt:DI (match_operand:DI 1 "register_operand" "") 4942 (lshiftrt:DI (match_operand:DI 1 "register_operand" "")
4927 (const_int 2)))] 4943 (const_int 2)))]