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.

Reply via email to