OSDN Git Service

ARM: VIXL32: Use LoadLiteral for double constants.
authorArtem Serov <artem.serov@linaro.org>
Fri, 10 Feb 2017 13:39:43 +0000 (13:39 +0000)
committerArtem Serov <artem.serov@linaro.org>
Thu, 23 Feb 2017 16:01:54 +0000 (16:01 +0000)
commit647169364c40e731ac41d5655c6315ec22e29970
treea952c209f17c77928fca685d8e73f13f558bd4b6
parent6cc0250f1d1507957fc2fe1543179eab5a8b53f9
ARM: VIXL32: Use LoadLiteral for double constants.

Use LoadLiteral for generating double constants if the constant
doesn't fit VMOV instruction encoding:

0x00000004      ed9f0b07        vldr d0, 0x00000024
+ entry in literal pool

vs

0x00000008      f64f0ca1        mov ip, #63649
0x0000000c      f2ce6c31        movt ip, #58929
0x00000010      ee80cb10        vdup.32 d0, ip
0x00000014      f6414cd6        mov ip, #7382
0x00000018      f2c40cc8        movt ip, #16584
0x0000001c      ee20cb10        vmov.32 d0[1], ip

Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-host
Test: ART_USE_VIXL_ARM_BACKEND=true m test-art-target
Change-Id: Ia0343bd6b9473870e364df95f2ccfae9750050e0
compiler/utils/arm/assembler_arm_vixl.h