JonPsson1 wrote:

Updated per review.

- Custom handlings added to deal with non-existing library functions:

FP_TO_INT: 

Z10 unsigned: 
Expanding fp-> i32/i64 seems to work best to do without first doing the custom 
extension to f32 in the f16 input case. TargetLowering::expandFP_TO_UINT() can 
then
look at the types and convert to fp_to_sint and avoid the longer sequence used 
for float.

For i128 which is not a legal type so this needs to be handled similarly in 
LowerOperationWrapper() instead.

Unfortunately it is not possible to return and select "Expand or LibCall", so 
for the i128 case it seems to be necessary to emit the libcall using the 
makeLibCall() method.

Moved the comment  "Promoting the result to i64...so use the default expansion" 
that was present in SystemZISelLowering.cpp into this method, but don't quite 
understand it fully. Is this talking about promoting to signed i64?

INT_TO_FP:

Z10 unsigned:
 Inlined the Promotion of i32 via f32.
 i64 first gets done on f32, and then expanded.

- FCOPYSIGN: test for non-existing library function removed, but handling 
remains for
  the intrinsic that is used.

- load/store/bitcast of f16 now done via i64 instead to do the shift with a 
single instruction.

- commenting issue fixed by adding SimpleBDXLoad / SimpleBDXStore bits to 
instructions.


https://github.com/llvm/llvm-project/pull/109164
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to