Author: Florian Hahn
Date: 2020-11-17T15:13:16Z
New Revision: 46846ac45b2c44aa6e33be5ac498309f465ba7eb

URL: 
https://github.com/llvm/llvm-project/commit/46846ac45b2c44aa6e33be5ac498309f465ba7eb
DIFF: 
https://github.com/llvm/llvm-project/commit/46846ac45b2c44aa6e33be5ac498309f465ba7eb.diff

LOG: [Matrix] Add inline assembly test case.

This patch adds a new test cases which uses a matrix value as memory
inline assembly argument. Currently the pointer element type does not
match the vector type.

Added: 
    

Modified: 
    clang/test/CodeGen/matrix-type.c

Removed: 
    


################################################################################
diff  --git a/clang/test/CodeGen/matrix-type.c 
b/clang/test/CodeGen/matrix-type.c
index 31d2497b7986..399984b50c69 100644
--- a/clang/test/CodeGen/matrix-type.c
+++ b/clang/test/CodeGen/matrix-type.c
@@ -156,3 +156,21 @@ void matrix_struct(Matrix *a, Matrix *b) {
   // CHECK-NEXT:    ret void
   b->Data = a->Data;
 }
+
+typedef double dx4x4_t __attribute__((matrix_type(4, 4)));
+void matrix_inline_asm_memory_readwrite() {
+  // CHECK-LABEL: define void @matrix_inline_asm_memory_readwrite()
+  // CHECK-NEXT:  entry:
+  // CHECK-NEXT:    [[ALLOCA:%.+]] = alloca [16 x double], align 8
+  // CHECK-NEXT:    [[PTR:%.+]] = bitcast [16 x double]* [[ALLOCA]] to <16 x 
double>*
+  // CHECK-NEXT:    [[VAL:%.+]] = load <16 x double>, <16 x double>* [[PTR]], 
align 8
+  // FIXME: Pointer element type does not match the vector type.
+  // CHECK-NEXT:    call void asm sideeffect "", 
"=*r|m,0,~{memory},~{dirflag},~{fpsr},~{flags}"([16 x double]* [[ALLOCA]], <16 
x double> [[VAL]])
+  // CHECK-NEXT:    ret void
+
+  dx4x4_t m;
+  asm volatile(""
+               : "+r,m"(m)
+               :
+               : "memory");
+}


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

Reply via email to