diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-06-24 19:23:04 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-06-24 19:23:04 +0000 |
commit | ef01edf1e938ef89e598ec558c50ceb2681c5ac4 (patch) | |
tree | e63f58cee484d1366fb5931c4347cf9e8584eaac /lib/CodeGen/MachineInstr.cpp | |
parent | 4799729d67983b08cac65c55083f7eeffc878b47 (diff) |
The Neon VCVT (between floating-point and fixed-point, Advanced SIMD)
instructions can be used to match combinations of multiply/divide and VCVT
(between floating-point and integer, Advanced SIMD). Basically the VCVT
immediate operand that specifies the number of fraction bits corresponds to a
floating-point multiply or divide by the corresponding power of 2.
For example, VCVT (floating-point to fixed-point, Advanced SIMD) can replace a
combination of VMUL and VCVT (floating-point to integer) as follows:
Example (assume d17 = <float 8.000000e+00, float 8.000000e+00>):
vmul.f32 d16, d17, d16
vcvt.s32.f32 d16, d16
becomes:
vcvt.s32.f32 d16, d16, #3
Similarly, VCVT (fixed-point to floating-point, Advanced SIMD) can replace a
combinations of VCVT (integer to floating-point) and VDIV as follows:
Example (assume d17 = <float 8.000000e+00, float 8.000000e+00>):
vcvt.f32.s32 d16, d16
vdiv.f32 d16, d17, d16
becomes:
vcvt.f32.s32 d16, d16, #3
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133813 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineInstr.cpp')
0 files changed, 0 insertions, 0 deletions