[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