[llvm] r208351 - Make a CodeGen test more robust against vector register selection

Justin Bogner mail at justinbogner.com
Thu May 8 15:51:36 PDT 2014


Quentin Colombet <qcolombet at apple.com> writes:
> Hi Justin,
>
> I think you have relaxed the test too much.
>
> On May 8, 2014, at 11:53 AM, Justin Bogner <mail at justinbogner.com> wrote:
>
>> Author: bogner
>> Date: Thu May  8 13:53:56 2014
>> New Revision: 208351
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=208351&view=rev> Log:
>> Make a CodeGen test more robust against vector register selection
>> 
>> Modified:
>>    llvm/trunk/test/CodeGen/ARM/func-argpassing-endian.ll
>> 
>> Modified: llvm/trunk/test/CodeGen/ARM/func-argpassing-endian.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/func-argpassing-endian.ll?rev=208351&r1=208350&r2=208351&view=diff> ==============================================================================
>> --- llvm/trunk/test/CodeGen/ARM/func-argpassing-endian.ll (original)
>> +++ llvm/trunk/test/CodeGen/ARM/func-argpassing-endian.ll Thu May 8
>> 13:53:56 2014
>> @@ -22,11 +22,11 @@ define void @arg_double( double %val ) {
>> 
>> define void @arg_v4i32(<4 x i32> %vec ) {
>> ; CHECK-LABEL: arg_v4i32:
>> -; CHECK-LE: vmov d17, r2, r3
>> -; CHECK-LE: vmov d16, r0, r1
>> -; CHECK-BE: vmov d17, r3, r2
>> -; CHECK-BE: vmov d16, r1, r0
>> -; CHECK: vst1.32 {d16[0]}, [r0:32]
>> +; CHECK-LE: vmov {{d[0-9]+}}, r2, r3
>> +; CHECK-LE: vmov {{d[0-9]+}}, r0, r1
>> +; CHECK-BE: vmov {{d[0-9]+}}, r3, r2
>> +; CHECK-BE: vmov {{d[0-9]+}}, r1, r0
>> +; CHECK: vst1.32 {{{d[0-9]+}}[0]}, [r0:32]
> We do not actually check now that the store is fed with the value we
> just created.

Good point. I've tightened this up in r208368.

>>     %tmp = extractelement <4 x i32> %vec, i32 0
>>     store i32 %tmp, i32* @var32
>>     ret void
>> @@ -51,26 +51,26 @@ define i64 @return_longint() {
>> 
>> define double @return_double() {
>> ; CHECK-LABEL: return_double:
>> -; CHECK-LE: vmov r0, r1, d16
>> -; CHECK-BE: vmov r1, r0, d16
>> +; CHECK-LE: vmov r0, r1, {{d[0-9]+}}
>> +; CHECK-BE: vmov r1, r0, {{d[0-9]+}}
> Isn't this register defined by the ABI? (I’m asking, I do not know.)

Nope, these are regular callee saved registers. Thanks for checking.

>>     ret double 1.0
>> }
>> 
>> define <4 x i32> @return_v4i32() {
>> ; CHECK-LABEL: return_v4i32:
>> -; CHECK-LE: vmov r0, r1, d16
>> -; CHECK-LE: vmov r2, r3, d17
>> -; CHECK-BE: vmov r1, r0, d16
>> -; CHECK-BE: vmov r3, r2, d17
>> +; CHECK-LE: vmov r0, r1, {{d[0-9]+}}
>> +; CHECK-LE: vmov r2, r3, {{d[0-9]+}}
>> +; CHECK-BE: vmov r1, r0, {{d[0-9]+}}
>> +; CHECK-BE: vmov r3, r2, {{d[0-9]+}}
> ABI registers?
>>    ret < 4 x i32> < i32 42, i32 43, i32 44, i32 45 >
>> }
>> 
>> define <2 x double> @return_v2f64() {
>> ; CHECK-LABEL: return_v2f64:
>> -; CHECK-LE: vmov r0, r1, d16
>> -; CHECK-LE: vmov r2, r3, d17
>> -; CHECK-BE: vmov r1, r0, d16
>> -; CHECK-BE: vmov r3, r2, d17
>> +; CHECK-LE: vmov r0, r1, {{d[0-9]+}}
>> +; CHECK-LE: vmov r2, r3, {{d[0-9]+}}
>> +; CHECK-BE: vmov r1, r0, {{d[0-9]+}}
>> +; CHECK-BE: vmov r3, r2, {{d[0-9]+}}
> Ditto?
>>    ret <2 x double> < double 3.14, double 6.28 >
>> }
>> 
>> @@ -86,8 +86,8 @@ define void @caller_arg_longint() {
>> 
>> define void @caller_arg_double() {
>> ; CHECK-LABEL: caller_arg_double:
>> -; CHECK-LE: vmov r0, r1, d16
>> -; CHECK-BE: vmov r1, r0, d16
>> +; CHECK-LE: vmov r0, r1, {{d[0-9]+}}
>> +; CHECK-BE: vmov r1, r0, {{d[0-9]+}}
> Ditto?
>>    call void @arg_double( double 1.0 )
>>    ret void
>> }
>> @@ -104,8 +104,8 @@ define void @caller_return_longint() {
>> 
>> define void @caller_return_double() {
>> ; CHECK-LABEL: caller_return_double:
>> -; CHECK-LE: vmov d17, r0, r1
>> -; CHECK-BE: vmov d17, r1, r0
>> +; CHECK-LE: vmov {{d[0-9]+}}, r0, r1
>> +; CHECK-BE: vmov {{d[0-9]+}}, r1, r0
> Ditto?
>>   %val = call double @return_double( )
>>   %tmp = fadd double %val, 3.14
>>   store double  %tmp, double* @vardouble
>> @@ -120,4 +120,3 @@ define void @caller_return_v2f64() {
>>     store double %tmp, double* @vardouble
>>     ret void
>> }
>> -
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list