on 2019/7/19 上午3:48, Segher Boessenkool wrote:
> On Thu, Jul 18, 2019 at 01:44:36PM +0800, Kewen.Lin wrote:
>> Hi Segher,
>>
>> on 2019/7/17 下午9:40, Segher Boessenkool wrote:
>>> Hi Kewen,
>>>
>>> On Wed, Jul 17, 2019 at 04:32:15PM +0800, Kewen.Lin wrote:
>>>> Regression testing just launched, is it OK for trunk if it's bootstrapped
>>>> and regresstested on powerpc64le-unknown-linux-gnu?
>>>
>>>> +;; Expanders for rotatert to make use of vrotl
>>>> +(define_expand "vrotr<mode>3"
>>>> + [(set (match_operand:VEC_I 0 "vint_operand")
>>>> + (rotatert:VEC_I (match_operand:VEC_I 1 "vint_operand")
>>>> + (match_operand:VEC_I 2 "vint_reg_or_const_vector")))]
>>>
>>> Having any rotatert in a define_expand or define_insn will regress.
>>>
>>> So, nope, sorry.
>>
>> Thanks for clarifying! Since regression testing passed on powerpc64le,I'd
>> like to double confirm the meaning of "regress", does it mean it's
>> a regression from design view? Is it specific to rotatert and its
>> related one like vrotr?
>
> You will get HAVE_rotatert defined in insn-config.h if you do this patch,
> and then simplify-rtx.c will not work correctly, generating rotatert by
> an immediate, which we have no instructions for.
>
> This might be masked because many of our rl*.c tests already fail because
> of other changes, I should fix that :-/
>
Hi Segher,
Thanks for further explanation! Sorry that, but I didn't find this
HAVE_rotatert definition. I guess it's due to the preparation is always
"DONE"? Then it doesn't really generate rotatert.
although I can see rotatert in insn like below, it seems fine in note?
(insn 10 9 11 4 (set (reg:V4SI 122 [ vect__2.7 ])
(rotate:V4SI (reg:V4SI 121 [ vect__1.6 ])
(reg:V4SI 124))) "t.c":17:28 1596 {*altivec_vrlw}
(expr_list:REG_EQUAL (rotatert:V4SI (reg:V4SI 121 [ vect__1.6 ])
(const_vector:V4SI [
(const_int 8 [0x8]) repeated x4
]))
(nil)))
Thanks,
Kewen