dblaikie added a comment.

In D101684#2732522 <https://reviews.llvm.org/D101684#2732522>, @aheejin wrote:

> I think there's a clear upside on keeping this within clang/.
>
> 1. As @tlively said, there are many number of instructions to test and 
> keeping "C function - LLVM intrinsic" and "LLVM intrinsic - Wasm instruction" 
> tests in sync without autogeneration will be hard and error-prone.

I don't necessarily see that they should be kept in sync - in the same way that 
we don't do this for other IR targets and other features, like ABIs - it's 
important they are lowered to specific instructions, but we don't generally 
validate that through end to end tests.

> 2. Also it is not always the case that we have 1-1-1 relationship of C 
> intrinsic function - LLVM intrinsic - Wasm instruction. For some of these we 
> don't have our own intrinsics but rather use LLVM's common intrinsics, and 
> they don't always boil down to a single LLVM intrinsic. There are cases where 
> a single C function call can be lowered to multiple instructions in the LLVM 
> IR, which we try to pattern match and lower to a single Wasm instruction. 
> This kind of relationship can't be tested easily so it will take 
> significantly longer time to check if a single C function call will result in 
> a single Wasm instruction.

The lack of 1-to-1 is part of the reason I prefer these tests to be separate. 
If one C level intrinsic lowers to multiple IR operations - then it's good to 
test each of those IR operations separately from each other. So that all their 
uses can be validated. Then, knowing they are validated - the Clang C-to-IR 
test can test that suitable operations are generated, knowing that they're 
tested in LLVM to work as specified.

> It might be good to move this to clang/test/CodeGen though, if that's more 
> suitable.

I'm still not following why this is different from existing testing - many 
targets already exist in LLVM and already test their intrinsics in various 
ways, generally, so far as I know (though I haven't looked comprehensively - 
might be worth you taking a look at existing test strategies for intrinsics to 
compare/contrast?) . Why is WebAssembly different here?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D101684

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

Reply via email to