Open
Description
clang-dxc DirectML/Product/Shaders/Generated/Cast_float16_native_accum16_uint8_packed32_256_Strided4D.hlsl -E CSMain -T cs_6_2 -enable-16bit-types -O3 -D DXC_COMPILER=1 -D __SHADER_TARGET_MAJOR=6 -D __SHADER_TARGET_MINOR=2 -I DirectML/Product/Shaders/ -Fo Cast_float16_native_accum16_uint8_packed32_256_Strided4D.dat
lldb -- dxv validation/Cast_float16_native_accum16_uint8_packed32_256_Strided4D.dat
(lldb) expr *(BasePtr->getType()->getScalarType())
(llvm::Type) $18 = {
Context = 0x000000016fdfdce0
IDAndSubclassData = 14
NumContainedTys = 1
ContainedTys = 0x000000015280e5b8
}
(lldb) expr *Ty
(llvm::Type) $19 = {
Context = 0x000000016fdfdce0
IDAndSubclassData = 2058
NumContainedTys = 0
ContainedTys = nullptr
}
Validation Error
Function failing to validate
Materializable
; Function Attrs: noinline nounwind
define void @CSMain() unnamed_addr #1 {
%1 = alloca [4 x i32], align 4
%2 = alloca [4 x i32], align 4
%3 = alloca [4 x i32], align 4
%4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 0, i1 false) #2
%5 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false) #2
%6 = call i32 @dx.op.threadId.i32(i32 93, i32 0) #3
%7 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 10) #2
%8 = extractvalue %dx.types.CBufRet.i32 %7, 3
%9 = add i32 %8, %6
%10 = shl i32 %9, 2
%11 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 10) #2
%12 = extractvalue %dx.types.CBufRet.i32 %11, 2
%13 = icmp ult i32 %10, %12
br i1 %13, label %14, label %46
; <label>:14 ; preds = %0
%15 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 1, i1 false) #2
%16 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 5) #2
%17 = extractvalue %dx.types.CBufRet.i32 %16, 1
%18 = extractvalue %dx.types.CBufRet.i32 %16, 2
%19 = extractvalue %dx.types.CBufRet.i32 %16, 3
%20 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 9) #2
%21 = extractvalue %dx.types.CBufRet.i32 %20, 0
%22 = extractvalue %dx.types.CBufRet.i32 %20, 1
%23 = extractvalue %dx.types.CBufRet.i32 %20, 2
%24 = extractvalue %dx.types.CBufRet.i32 %20, 3
%25 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 1) #2
%26 = extractvalue %dx.types.CBufRet.i32 %25, 0
%27 = extractvalue %dx.types.CBufRet.i32 %25, 1
%28 = extractvalue %dx.types.CBufRet.i32 %25, 2
%29 = extractvalue %dx.types.CBufRet.i32 %25, 3
%30 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 3) #2
%31 = extractvalue %dx.types.CBufRet.i32 %30, 0
%32 = extractvalue %dx.types.CBufRet.i32 %30, 1
%33 = extractvalue %dx.types.CBufRet.i32 %30, 2
%34 = extractvalue %dx.types.CBufRet.i32 %30, 3
%35 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %15, i32 %9, i32 0, i8 1, i32 4)
%36 = extractvalue %dx.types.ResRet.i32 %35, 0
%37 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 10) #2
%38 = extractvalue %dx.types.CBufRet.i32 %37, 1
; No predecessors!
; No predecessors!
; No predecessors!
; No predecessors!
; No predecessors!
; No predecessors!
; No predecessors!
; <label>:46 ; preds = %0
}
Basic Block failing to validate
(lldb) expr getLastInstruction->CurBB->dump()
; <label>:14 ; preds = %0
%15 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 1, i1 false) #2
%16 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 5) #2
%17 = extractvalue %dx.types.CBufRet.i32 %16, 1
%18 = extractvalue %dx.types.CBufRet.i32 %16, 2
%19 = extractvalue %dx.types.CBufRet.i32 %16, 3
%20 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 9) #2
%21 = extractvalue %dx.types.CBufRet.i32 %20, 0
%22 = extractvalue %dx.types.CBufRet.i32 %20, 1
%23 = extractvalue %dx.types.CBufRet.i32 %20, 2
%24 = extractvalue %dx.types.CBufRet.i32 %20, 3
%25 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 1) #2
%26 = extractvalue %dx.types.CBufRet.i32 %25, 0
%27 = extractvalue %dx.types.CBufRet.i32 %25, 1
%28 = extractvalue %dx.types.CBufRet.i32 %25, 2
%29 = extractvalue %dx.types.CBufRet.i32 %25, 3
%30 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 3) #2
%31 = extractvalue %dx.types.CBufRet.i32 %30, 0
%32 = extractvalue %dx.types.CBufRet.i32 %30, 1
%33 = extractvalue %dx.types.CBufRet.i32 %30, 2
%34 = extractvalue %dx.types.CBufRet.i32 %30, 3
%35 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %15, i32 %9, i32 0, i8 1, i32 4)
%36 = extractvalue %dx.types.ResRet.i32 %35, 0
%37 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %5, i32 10) #2
%38 = extractvalue %dx.types.CBufRet.i32 %37, 1
Metadata
Metadata
Assignees
Type
Projects
Status
Planning