[PATCH]{AArch64] Implemented half-precision vget/vset_lane_f16 intrinsics

Ana Pazos apazos at codeaurora.org
Tue Dec 3 12:00:48 PST 2013


Hi Tim and reviewers,

 

I followed Tim's suggestion to use macros to handle the float16_t storage
type.

 

Notes:

1)      Since the vget/vset_lane_f16 intrinsics read and write 16 bit data
(no FP arithmetic performed), I simply reinterpreted float16_t and the
vector of float16_t as i16 data.

See the operators defined in NeonEmitter.

2)      With this change vget/vset_lane_f16 use to vget/vset_lane_i16
implementation.

3)      I added f16_to_f32 pattern because in the vset_lane case the i16
data is moved from GPR to a FP register, and hence the need for this
pattern.

4)      I added test cases that define float16_t variable in the function
body, but do not return such value type as it is not allowed. Let me know if
these tests are satisfactory.

5)      I did not try to enforce the recommended intrinsic->instruction map
from the ARM document. 

To force those instructions I would have to use builtins and v1i16 type
casts so I can create the pattern.

Even doing that, in some cases the UMOV, INS patterns defined earlier can
prevail over.

 

Thanks,

Ana.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131203/20fd537a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-llvm-Implemented-vget-vset_lane_f16-intrinsics.patch
Type: application/octet-stream
Size: 1080 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131203/20fd537a/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-clang-Implemented-vget-vset_lane_f16-intrinsics.patch
Type: application/octet-stream
Size: 4426 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131203/20fd537a/attachment-0001.obj>


More information about the cfe-commits mailing list