[compiler-rt] r311555 - [ARM][Compiler-rt] Fix AEABI builtins to correctly pass arguments to non-AEABI functions on HF targets

Hans Wennborg via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 23 14:40:16 PDT 2017


Merged in r311606.

On Wed, Aug 23, 2017 at 11:37 AM, Hans Wennborg <hans at chromium.org> wrote:
> Let's have it sit in trunk a few more hours, then I'll merge it.
>
> Thanks,
> Hans
>
> On Wed, Aug 23, 2017 at 8:23 AM, Saleem Abdulrasool
> <compnerd at compnerd.org> wrote:
>> Hans,
>>
>> Could you please crossport this to the 5.0 release branch?  It is a fix for
>> a release blocker, and has been reviewed by multiple people.  I don't expect
>> it to be a stability concern.
>>
>> Thanks!
>>
>> On Wed, Aug 23, 2017 at 7:27 AM Oleg Ranevskyy via llvm-commits
>> <llvm-commits at lists.llvm.org> wrote:
>>>
>>> Author: oleg
>>> Date: Wed Aug 23 07:26:31 2017
>>> New Revision: 311555
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=311555&view=rev
>>> Log:
>>> [ARM][Compiler-rt] Fix AEABI builtins to correctly pass arguments to
>>> non-AEABI functions on HF targets
>>>
>>> Summary:
>>> This is a patch for PR34167.
>>>
>>> On HF targets functions like `__{eq,lt,le,ge,gt}df2` and
>>> `__{eq,lt,le,ge,gt}sf2` expect their arguments to be passed in d/s
>>> registers, while some of the AEABI builtins pass them in r registers.
>>>
>>> Reviewers: compnerd, peter.smith, asl
>>>
>>> Reviewed By: peter.smith, asl
>>>
>>> Subscribers: peter.smith, aemerson, dberris, javed.absar, llvm-commits,
>>> asl, kristof.beyls
>>>
>>> Differential Revision: https://reviews.llvm.org/D36675
>>>
>>> Modified:
>>>     compiler-rt/trunk/lib/builtins/arm/aeabi_dcmp.S
>>>     compiler-rt/trunk/lib/builtins/arm/aeabi_fcmp.S
>>>
>>> Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_dcmp.S
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_dcmp.S?rev=311555&r1=311554&r2=311555&view=diff
>>>
>>> ==============================================================================
>>> --- compiler-rt/trunk/lib/builtins/arm/aeabi_dcmp.S (original)
>>> +++ compiler-rt/trunk/lib/builtins/arm/aeabi_dcmp.S Wed Aug 23 07:26:31
>>> 2017
>>> @@ -18,11 +18,20 @@
>>>  //   }
>>>  // }
>>>
>>> +#if defined(COMPILER_RT_ARMHF_TARGET)
>>> +#  define CONVERT_DCMP_ARGS_TO_DF2_ARGS                    \
>>> +        vmov      d0, r0, r1                     SEPARATOR \
>>> +        vmov      d1, r2, r3
>>> +#else
>>> +#  define CONVERT_DCMP_ARGS_TO_DF2_ARGS
>>> +#endif
>>> +
>>>  #define DEFINE_AEABI_DCMP(cond)                            \
>>>          .syntax unified                          SEPARATOR \
>>>          .p2align 2                               SEPARATOR \
>>>  DEFINE_COMPILERRT_FUNCTION(__aeabi_dcmp ## cond)           \
>>>          push      { r4, lr }                     SEPARATOR \
>>> +        CONVERT_DCMP_ARGS_TO_DF2_ARGS            SEPARATOR \
>>>          bl        SYMBOL_NAME(__ ## cond ## df2) SEPARATOR \
>>>          cmp       r0, #0                         SEPARATOR \
>>>          b ## cond 1f                             SEPARATOR \
>>>
>>> Modified: compiler-rt/trunk/lib/builtins/arm/aeabi_fcmp.S
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/builtins/arm/aeabi_fcmp.S?rev=311555&r1=311554&r2=311555&view=diff
>>>
>>> ==============================================================================
>>> --- compiler-rt/trunk/lib/builtins/arm/aeabi_fcmp.S (original)
>>> +++ compiler-rt/trunk/lib/builtins/arm/aeabi_fcmp.S Wed Aug 23 07:26:31
>>> 2017
>>> @@ -18,11 +18,20 @@
>>>  //   }
>>>  // }
>>>
>>> +#if defined(COMPILER_RT_ARMHF_TARGET)
>>> +#  define CONVERT_FCMP_ARGS_TO_SF2_ARGS                    \
>>> +        vmov      s0, r0                         SEPARATOR \
>>> +        vmov      s1, r1
>>> +#else
>>> +#  define CONVERT_FCMP_ARGS_TO_SF2_ARGS
>>> +#endif
>>> +
>>>  #define DEFINE_AEABI_FCMP(cond)                            \
>>>          .syntax unified                          SEPARATOR \
>>>          .p2align 2                               SEPARATOR \
>>>  DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmp ## cond)           \
>>>          push      { r4, lr }                     SEPARATOR \
>>> +        CONVERT_FCMP_ARGS_TO_SF2_ARGS            SEPARATOR \
>>>          bl        SYMBOL_NAME(__ ## cond ## sf2) SEPARATOR \
>>>          cmp       r0, #0                         SEPARATOR \
>>>          b ## cond 1f                             SEPARATOR \
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>> --
>> Saleem Abdulrasool
>> compnerd (at) compnerd (dot) org


More information about the llvm-commits mailing list