Uh oh!
There was an error while loading. Please reload this page.
Remove an assert from impHWIntrinsic - #72084
Conversation
ghost
commented
Jul 13, 2022
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
hm.. the test I added crashes mono llvmaot https://dev.azure.com/dnceng/9ee6d478-d288-47f7-aacc-f6e6d082ae6d/_apis/build/builds/1877495/logs/1885 cc @fanyang-mono@vargaz any quick fix I can apply or just add it to the ignore list and file an issue? |
vargaz
commented
Jul 13, 2022
UInt128 is probably not allowed as a simd type by mono, so I'd suggest ignoring the test for now. |
From my understanding it's also not supported on CLR, it's expected to throw a not-supported-exception rather than an assert |
EgorBo
commented
Jul 13, 2022
the fix I've just applied seems to work - it also guards from using |
tannergooding
commented
Jul 13, 2022
Right, |
vargaz
commented
Jul 13, 2022
The mono change looks ok. |
fanyang-mono
commented
Jul 13, 2022
Same check should probably be added to |
fanyang-mono
commented
Jul 13, 2022
I just checked that CoreCLR doesn't those exceptions for unsupported types when calling the above two methods, then mono doesn't need to do so either. Your fix for mono looks good to me. |
EgorBo
commented
Jul 13, 2022
There were still asserts, turns out I didn't test properly and didn't realize that Vector128.Create has generic and non-generic overloads, now it works OK, I validated Mono-LLVM codegen for: [MethodImpl(MethodImplOptions.NoInlining)]staticVector128<int>Foo1()=>Vector128.Create(42);// non-generic[MethodImpl(MethodImplOptions.NoInlining)]staticVector128<int>Foo2()=>Vector128.Create<int>(42);// generic[MethodImpl(MethodImplOptions.NoInlining)]staticVector128<char>Foo3()=>Vector128.Create<char>('4');[MethodImpl(MethodImplOptions.NoInlining)]staticVector128<Int128>Foo4()=>Vector128.Create<Int128>(42);Foo1 and Foo2 emit correct broadcast instructions while Foo3 and Foo4 emit |
EgorBo
commented
Jul 14, 2022
CI failure is unrelated: #72182 |
Fixes#72081