fhahn added inline comments.

================
Comment at: clang/lib/StaticAnalyzer/Core/ExprEngineC.cpp:547
+      case CK_MatrixCast: {
+        // TODO: Handle MatrixCast here.
+      }
----------------
SaurabhJha wrote:
> I thought doing changes here is is outside the scope of casting so I just 
> left a TODO here. Please let me know if we want to do something else here.
I think that's fair,  but you should probably add `continue;` rather than 
falling through.


================
Comment at: clang/test/CodeGen/matrix-cast.c:15
+  // CHECK:       [[C:%.*]] = load <25 x i8>, <25 x i8>* {{.*}}, align 1
+  // CHECK-NEXT:  [[CONV:%.*]] = zext <25 x i8> [[C]] to <25 x i32>
+  // CHECK-NEXT:  store <25 x i32> [[CONV]], <25 x i32>* {{.*}}, align 4
----------------
This doesn't seem right. We are casting between 2 signed types, so the sign 
should get preserved, right? Shouldn't this be `sext`? See 
https://godbolt.org/z/zWznYdnKW for the scalar case.

I think you also need tests for casts with different bitwidths with unsigned, 
unsigned -> signed & signed -> unsigned.


================
Comment at: clang/test/CodeGen/matrix-cast.c:39
+
+  f = (fx5x5)i;
+}
----------------
SaurabhJha wrote:
> I tried adding a float -> int conversion too but it failed because of this 
> assertion 
> https://github.com/llvm/llvm-project/blob/main/clang/lib/CodeGen/CGExprScalar.cpp#L1339-L1344
>  Hopefully that's intended.
Clang should never run into an assertion. If that should not be allowed, then 
Clang should emit an error during Sema. I'm not sure why there is such a 
restriction for vector types, but I am not sure that this shouldn't be allowed 
for matrixes. Perhaps @rjmccall has more thoughts on this, but conversion 
between scalar ints to floats is allowed AFAIKT.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99037/new/

https://reviews.llvm.org/D99037

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to