[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 11:37:07 PDT 2017
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