llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.01k stars 11.06k forks source link

[Matrix] Implement literal initializers for matrix types. #45596

Open fhahn opened 4 years ago

fhahn commented 4 years ago
Bugzilla Link 46251
Version unspecified
OS All
Blocks llvm/llvm-project#45508
CC @DougGregor,@zygoloid,@SaurabhJha

Extended Description

Define and implement initialization syntax for matrix types (as mentioned in the TODO section: https://clang.llvm.org/docs/MatrixTypes.html#todos)

Once this is implemented, the commented out test in https://github.com/llvm/llvm-project/blob/3323a628ec821b8b75d3b60bf1510931f97d3883/clang/test/CodeGenCXX/matrix-type-builtins.cpp#L78 should be enabled.

SaurabhJha commented 2 years ago

Unfortunately, I have to give up here as I am not able to solve this problem. I am unassigning this story.

If anyone would like to fix it, the spec in this patch needs to be implemented https://reviews.llvm.org/D106005. Once that's done, the spec patch can be merged.

Thanks, Saurabh

SaurabhJha commented 2 years ago

Hey Florian,

Quick question: to implement this, I should implement a constructor with initialiser on MatrixType class, right?

I am confused because it seems like MatrixType constructor is invoked on __attribute__(matrix_type(rows, columns)). Based on some other code, I thought I could add a constructor to QualType where I check for specific type at runtime like we do in arithmetic. But that seemed wrong.

Any thoughts on what am I missing here?

Thanks, Saurabh

SaurabhJha commented 3 years ago

I can pick this up. I guess the first step is to add specification of initialiser syntax in https://clang.llvm.org/docs/MatrixTypes.html. Once that's done, I can start implementing it so that the commented out test can pass.

SaurabhJha commented 3 years ago

I guess its going to be hard for me at the moment so I am unassigning myself from this ticket.

Cheers, Saurabh

fhahn commented 3 years ago

I can pick this up if its still up for grabs.

I am not aware of anyone looking into this one at the moment.

The way I intend to approach this to comment out the test, crash it, and debug the core dump.

Unfortunately this approach won't be very fruitful in this case I am afraid, because initialisers for matrix types are completely missing at the moment.

First, initialisers need to be defined in https://clang.llvm.org/docs/MatrixTypes.html . Second, the new part of the specification needs to be implemented in Clang.

SaurabhJha commented 3 years ago

I can pick this up if its still up for grabs. The way I intend to approach this to comment out the test, crash it, and debug the core dump.