================
@@ -11,23 +11,22 @@ void test_vector_sve(svmfloat8_t a, svuint8_t c) {
   a / c;  // sve-error {{cannot convert between vector type 'svuint8_t' (aka 
'__SVUint8_t') and vector type 'svmfloat8_t' (aka '__SVMfloat8_t') as implicit 
conversion would cause truncation}}
 }
 
-
 #include <arm_neon.h>
 
 void test_vector(mfloat8x8_t a, mfloat8x16_t b, uint8x8_t c) {
-  a + b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(aka '__MFloat8x8_t') and 'mfloat8x16_t' (aka '__MFloat8x16_t'))}}
-  a - b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(aka '__MFloat8x8_t') and 'mfloat8x16_t' (aka '__MFloat8x16_t'))}}
-  a * b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(aka '__MFloat8x8_t') and 'mfloat8x16_t' (aka '__MFloat8x16_t'))}}
-  a / b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(aka '__MFloat8x8_t') and 'mfloat8x16_t' (aka '__MFloat8x16_t'))}}
-
-  a + c;  // neon-error {{cannot convert between vector and non-scalar values 
('mfloat8x8_t' (aka '__MFloat8x8_t') and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
-  a - c;  // neon-error {{cannot convert between vector and non-scalar values 
('mfloat8x8_t' (aka '__MFloat8x8_t') and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
-  a * c;  // neon-error {{cannot convert between vector and non-scalar values 
('mfloat8x8_t' (aka '__MFloat8x8_t') and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
-  a / c;  // neon-error {{cannot convert between vector and non-scalar values 
('mfloat8x8_t' (aka '__MFloat8x8_t') and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
-  c + b;  // neon-error {{cannot convert between vector and non-scalar values 
('uint8x8_t' (vector of 8 'uint8_t' values) and 'mfloat8x16_t' (aka 
'__MFloat8x16_t'))}}
-  c - b;  // neon-error {{cannot convert between vector and non-scalar values 
('uint8x8_t' (vector of 8 'uint8_t' values) and 'mfloat8x16_t' (aka 
'__MFloat8x16_t'))}}
-  c * b;  // neon-error {{cannot convert between vector and non-scalar values 
('uint8x8_t' (vector of 8 'uint8_t' values) and 'mfloat8x16_t' (aka 
'__MFloat8x16_t'))}}
-  c / b;  // neon-error {{cannot convert between vector and non-scalar values 
('uint8x8_t' (vector of 8 'uint8_t' values) and 'mfloat8x16_t' (aka 
'__MFloat8x16_t'))}}
+  a + b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+  a - b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+  a * b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+  a / b;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+
+  a + c;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
+  a - c;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
+  a * c;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
+  a / c;  // neon-error {{invalid operands to binary expression ('mfloat8x8_t' 
(vector of 8 'mfloat8_t' values) and 'uint8x8_t' (vector of 8 'uint8_t' 
values))}}
+  c + b;  // neon-error {{invalid operands to binary expression ('uint8x8_t' 
(vector of 8 'uint8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+  c - b;  // neon-error {{invalid operands to binary expression ('uint8x8_t' 
(vector of 8 'uint8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+  c * b;  // neon-error {{invalid operands to binary expression ('uint8x8_t' 
(vector of 8 'uint8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
+  c / b;  // neon-error {{invalid operands to binary expression ('uint8x8_t' 
(vector of 8 'uint8_t' values) and 'mfloat8x16_t' (vector of 16 'mfloat8_t' 
values))}}
 }
 __mfp8 test_static_cast_from_char(char in) {
----------------
SpencerAbson wrote:

I wrote the below comment, but it looks like the name `__mfp8` is undefined 
without `arm_neon.h`.

>Since we should be able to use the `__mfp8` type without including any header, 
>it might be best to move these scalar tests above where `arm_neon.h` is 
>included - similar to `/Sema/arm-bfloat.cpp`.


The current ACLE suggests the builtin name should be `__mfp8`, rather than 
`__Mfloat8_t`. 

>types that are predefined by the implementation, so that no header file needs 
>to be included to make use of them...
The predefined types are:

    The __fp16 type for 16-bit floating-point values (see [Half-precision 
floating-point](https://github.com/ARM-software/acle/blob/main/main/acle.md#half-precision-floating-point)).

    The __bf16 type for 16-bit brain floating-point values (see [Half-precision 
brain 
floating-point](https://github.com/ARM-software/acle/blob/main/main/acle.md#half-precision-brain-floating-point)).

    The __mfp8 type for the modal 8-bit floating-point values (see [Modal 8-bit 
floating point 
types](https://github.com/ARM-software/acle/blob/main/main/acle.md#modal-8-bit-floating-point)).

As before, just ignore this if I'm out of touch!

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

Reply via email to