Progress so far:

compiler_rotate()ASSERTION FAILED: Unsupported intrinsics

The intrinsic in question is an fshl (funnel shift left). I suspect this issue appeared because LLVM started optimizing rotates to this intrinsic:

https://github.com/llvm/llvm-project/commit/654e6aabb9f25d0d0fbad194ae6e26dd96c9e9db
https://github.com/llvm/llvm-project/commit/d023dd60e944886a9d5a0b1dbf46f67d43293af8

They say this shouldn't break targets that don't have a rotate instruction, but we may be doing weird enough things that this doesn't apply to us.

compiler_subgroup_buffer_block_write_ui1()ASSERTION FAILED: index <
this->size()

GenRegAllocator::Opaque::allocate (backend/src/backend/gen_reg_allocation.cpp:1268) uses reg = insn.src(srcID).reg() as an index, and this assert is that it is out of range.

As insn.src(srcID).physical=1 on the failing GenRegister object, it was probably created with the physical registers form of the constructor (backend/src/backend/gen_register.hpp:219), which leaves reg unset.

These tests start passing if I set it to 0, but I suspect this may not be a proper solution:

--- beignet-1.3.2.orig/backend/src/backend/gen_register.hpp
+++ beignet-1.3.2/backend/src/backend/gen_register.hpp
@@ -225,6 +225,7 @@ namespace gbe
                        uint32_t width,
                        uint32_t hstride)
     {
+        this->value.reg = 0;//fix subgroup crash??
       this->type = type;
       this->file = file;
       this->nr = nr;

Reply via email to