On Wed, Jul 15, 2015 at 5:05 AM, Uros Bizjak <ubiz...@gmail.com> wrote: > On Wed, Jul 15, 2015 at 1:36 PM, Uros Bizjak <ubiz...@gmail.com> wrote: > >>> I couldn't figure a way to add conditional constraints for "?r/rmF" and >>> "r/rmF". I simply disabled *movsf_internal if TARGET_HARD_FP_REGS >>> is false and added a new "*movsf_internal_soft_fp" pattern. >>> >>> OK for trunk if there is no regressions? >> >> No. We don't want duplicated patterns. >> Please add two patterns at the end of the constraint string and use > > ... add two *constraints* at the end ...
When I simply added "r/rmF" to the end, RA saw "?r/rmF" first and ignored "r/rmF" at the end. I also tried: +(define_register_constraint "Ba" + "TARGET_HARD_FP_REGS ? NO_REGS : GENERAL_REGS" + "@internal Any integer register when TARGET_HARD_FP_REGS is disbled.") + +(define_constraint "Bb" + "@internal Memory operand when TARGET_HARD_FP_REGS is disabled." + (and (not (match_test "TARGET_HARD_FP_REGS")) + (match_operand 0 "memory_operand"))) + (define_constraint "Bf" "@internal Flags register operand." (match_operand 0 "flags_reg_operand")) @@ -160,6 +171,15 @@ "@internal GOT memory operand." (match_operand 0 "GOT_memory_operand")) +(define_constraint "Bm" + "@internal Memory operand when TARGET_HARD_FP_REGS is enabled." + (and (match_test "TARGET_HARD_FP_REGS") + (match_operand 0 "memory_operand"))) + +(define_register_constraint "Br" + "TARGET_HARD_FP_REGS ? GENERAL_REGS : NO_REGS" + "@internal Any integer register when TARGET_HARD_FP_REGS is enabled.") + I couldn't find a way to generate "mov $1234, %eax" without a separate pattern. -- H.J.