[llvm] r312724 - [ARM] Remove redundant vcvt patterns.

Friedman, Eli via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 7 12:20:43 PDT 2017


On 9/7/2017 7:52 AM, Benjamin Kramer via llvm-commits wrote:
> Author: d0k
> Date: Thu Sep  7 07:52:26 2017
> New Revision: 312724
>
> URL: http://llvm.org/viewvc/llvm-project?rev=312724&view=rev
> Log:
> [ARM] Remove redundant vcvt patterns.
>
> These don't add any value as they're just compositions of existing
> patterns.

This is not true.  These patterns exist to eliminate a "vmov" from the 
floating-point register file to the integer register file.

Consider the following simple function:

void a(double c, int *x) { *x = c; }

Before this patch, we would generate the following:

         vmov    d16, r0, r1
         vcvt.s32.f64    s0, d16
         vstr    s0, [r2]
         bx      lr

With this patch, we generate the following instead:

         vmov    d16, r0, r1
         vcvt.s32.f64    s0, d16
         vmov    r0, s0
         str     r0, [r2]
         bx      lr

This is clearly a substantial regression.

---

Please don't commit non-trivial patches to the ARM backend without review.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project



More information about the llvm-commits mailing list