[Beignet] beignet and LLVM 8+

Rebecca N. Palmer rebecca_palmer at zoho.com
Sat Jan 11 22:59:04 UTC 2020


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;



More information about the Beignet mailing list