diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2017-09-23 05:02:02 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2017-09-23 05:02:02 +0000 |
commit | 34b5dbca0a449d96daa782a884418669b6d7736d (patch) | |
tree | 2528cf8192a189b1f6e84062eb0ca394101fd777 /lldb/packages/Python/lldbsuite/test/python_api/signals/TestSignalsAPI.py | |
parent | 41c4a109d893604fe2570598ee62fceff6e1aee8 (diff) | |
download | bcm5719-llvm-34b5dbca0a449d96daa782a884418669b6d7736d.tar.gz bcm5719-llvm-34b5dbca0a449d96daa782a884418669b6d7736d.zip |
Promote storage-only __fp16 vector operands to float vectors.
This commit fixes a bug in the handling of storage-only __fp16 vectors
where clang didn't promote __fp16 vector operands to float vectors.
Conceptually, it performs the following transformation on the AST in
CreateBuiltinBinOp and CreateBuiltinUnaryOp:
(Before)
typedef __fp16 half4 __attribute__ ((vector_size (8)));
typedef float float4 __attribute__ ((vector_size (16)));
half4 hv0, hv1, hv2, hv3;
hv0 = hv1 + hv2 + hv3;
(After)
float4 t0 = (float4)hv1 + (float4)hv2;
float4 t1 = t0 + (float4)hv3;
hv0 = (half4)t1;
Note that this commit fixes the bug for targets that set
HalfArgsAndReturns to true (ARM and ARM64). Targets using intrinsics
such as llvm.convert.to.fp16 to handle __fp16 are still broken.
rdar://problem/20625184
Differential Revision: https://reviews.llvm.org/D32520
llvm-svn: 314056
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/signals/TestSignalsAPI.py')
0 files changed, 0 insertions, 0 deletions