================
@@ -5464,6 +5464,15 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo 
&CallInfo,
           Builder.CreateStore(errorValue, swiftErrorTemp);
         }
 
+        // Mfloat8 type is loaded as scalar type, but is treated as single
+        // vector type for other operations. We need to bitcast it to the 
vector
+        // type here.
+        if (auto *EltTy =
----------------
paulwalker-arm wrote:

Does the ABI say this?  My understand is that values of type _mfp8 are 
floating-point 8-bit values that are passes as _mfp8. The pretend it's an `i8` 
in some cases and `<1 x i8>` in others is purely an implementation detail 
within clang.

This is not to say the code is invalid, but we should be cautious with how far 
down the rabbit hole we go.

FYI: As part of @MacDue's work to improve streaming-mode code generation I 
asked him to add the MVT `aarch64mfp8` along with support to load and store it. 
 I expect over time we'll migrate away from using `i8` as our scalar type.

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

Reply via email to