Hi, thanks for the patch.
>> -  /* TODO: By default, we choose to use TAIL_ANY which allows
>> -     compiler pick up either agnostic or undisturbed. Maybe we
>> -     will have a compile option like -mprefer=agnostic to set
>> -     this value???.  */
>> +  if (riscv_prefer_agnostic_p ())
>> +    return TAIL_AGNOSTIC;

>> -  /* TODO: By default, we choose to use MASK_ANY which allows
>> -     compiler pick up either agnostic or undisturbed. Maybe we
>> -     will have a compile option like -mprefer=agnostic to set
>> -     this value???.  */
>>+  if (riscv_prefer_agnostic_p ())
>> +    return MASK_AGNOSTIC;
>>   return MASK_ANY;
Then changes above look good to me. But I see you have the following changes:

 DEF_POLICY_RULE (tail_policy_only, mask_policy_only, tail_mask_policy,
                 always_true, always_false, use_mask_policy)
-DEF_POLICY_RULE (tail_policy_only, ignore_policy, tail_policy_only, 
always_true,
-                always_true, nop)
+DEF_POLICY_RULE (tail_policy_only, ignore_policy, tail_policy_only, 
tail_policy_eq2_p,
+                tail_policy_eq2_p, nop)
 
 DEF_POLICY_RULE (mask_policy_only, tail_mask_policy, tail_mask_policy,
                 mask_policy_eq_p, always_false, use_tail_policy)
@@ -141,14 +141,14 @@ DEF_POLICY_RULE (mask_policy_only, tail_policy_only, 
tail_mask_policy,
                 always_true, always_false, use_tail_policy)
 DEF_POLICY_RULE (mask_policy_only, mask_policy_only, mask_policy_only,
                 mask_policy_eq_p, mask_policy_eq_p, use_mask_policy)
-DEF_POLICY_RULE (mask_policy_only, ignore_policy, mask_policy_only, 
always_true,
-                always_true, nop)
+DEF_POLICY_RULE (mask_policy_only, ignore_policy, mask_policy_only, 
mask_policy_eq2_p,
+                mask_policy_eq2_p, nop)
 
 DEF_POLICY_RULE (ignore_policy, tail_mask_policy, tail_mask_policy, 
always_true,
                 always_false, use_tail_mask_policy)
-DEF_POLICY_RULE (ignore_policy, tail_policy_only, tail_policy_only, 
always_true,
+DEF_POLICY_RULE (ignore_policy, tail_policy_only, tail_policy_only, 
tail_policy_eq2_p,
                 always_false, use_tail_policy)
-DEF_POLICY_RULE (ignore_policy, mask_policy_only, mask_policy_only, 
always_true,
+DEF_POLICY_RULE (ignore_policy, mask_policy_only, mask_policy_only, 
mask_policy_eq2_p,
                 always_false, use_mask_policy)

Could you share me more details why only "get_prefer_tail_policy" and 
"get_prefer_mask_policy" don't work for you and why do you need to change 
vsetvl PASS ?

Since Originally I designed the VSETVL PASS is able to do fusion under this 
condition:

insn 1: TAIL_ANY
insn 2: TAIL_UNDISTURBED

fuse successfully -> TAIL_UNDISTURBED

insn 1: TAIL_AGNOSTIC
insn 2: TAIL_UNDISTURBED

fuse failed



[email protected]

Reply via email to