-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Closed
Copy link
Labels
Description
After #151751 merges These bugs that were origionally Type asserts because we were trying to cast Loads to CallInst become Bytecode encoding bugs
Ie before it was:
Assertion: (isa<To>(Val) && "cast<Ty>() argument of incompatible type!")
Function: cast
File: Casting.h:578
And now it is llvm_unreachable("These should never be used!!!");
Because we are trying to encode the TargetExtTyID.
#151751 is improving things, by fixing the DXIL ForwardHandle pass, but that is exposing some changes needed in the bitcode writer. Which we will handle as a seperate issue. Until this change merges this issue is not exposed even though it exists.
(lldb) frame select 4
frame #4: 0x0000000105433288 clang-dxc`llvm::dxil::DXILBitcodeWriter::writeTypeTable(this=0x000000016fdf3d98) at DXILBitcodeWriter.cpp:1025:7
1022 case Type::X86_AMXTyID:
1023 case Type::TokenTyID:
1024 case Type::TargetExtTyID:
-> 1025 llvm_unreachable("These should never be used!!!");
1026 break;
1027 case Type::VoidTyID:
1028 Code = bitc::TYPE_CODE_VOID;
(lldb) expr T->dump()
target("dx.RawBuffer", i32, 1, 0)
Crash Stack
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
* frame #0: 0x000000018cb79388 libsystem_kernel.dylib`__pthread_kill + 8
frame #1: 0x000000018cbb288c libsystem_pthread.dylib`pthread_kill + 296
frame #2: 0x000000018cabbc60 libsystem_c.dylib`abort + 124
frame #3: 0x000000010319bc10 clang-dxc`llvm::llvm_unreachable_internal(msg="These should never be used!!!", file="/Users/farzonlotfi/Projects/llvm-project/llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp", line=1025) at ErrorHandling.cpp:244:3
frame #4: 0x0000000105433288 clang-dxc`llvm::dxil::DXILBitcodeWriter::writeTypeTable(this=0x000000016fdf3d98) at DXILBitcodeWriter.cpp:1025:7
frame #5: 0x0000000105430abc clang-dxc`llvm::dxil::DXILBitcodeWriter::write(this=0x000000016fdf3d98) at DXILBitcodeWriter.cpp:2888:3
frame #6: 0x0000000105430780 clang-dxc`llvm::dxil::BitcodeWriter::writeModule(this=0x000000016fdf40f0, M=0x0000000126e0f6c0) at DXILBitcodeWriter.cpp:436:16
frame #7: 0x0000000105430628 clang-dxc`llvm::dxil::WriteDXILToFile(M=0x0000000126e0f6c0, Out=0x000000016fdf43c0) at DXILBitcodeWriter.cpp:406:10
frame #8: 0x000000010546ab18 clang-dxc`(anonymous namespace)::EmbedDXILPass::runOnModule(this=0x000000011ca1ce40, M=0x0000000126e0f6c0) at DXILWriterPass.cpp:125:5
frame #9: 0x0000000102003bd0 clang-dxc`(anonymous namespace)::MPPassManager::runOnModule(this=0x000000011ca1d850, M=0x0000000126e0f6c0) at LegacyPassManager.cpp:1513:27
frame #10: 0x0000000102003754 clang-dxc`llvm::legacy::PassManagerImpl::run(this=0x000000011e02e200, M=0x0000000126e0f6c0) at LegacyPassManager.cpp:531:44
frame #11: 0x000000010200a2ac clang-dxc`llvm::legacy::PassManager::run(this=0x000000016fdf47f8, M=0x0000000126e0f6c0) at LegacyPassManager.cpp:1640:14
frame #12: 0x0000000103c67294 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(this=0x000000016fdf4c70, Action=Backend_EmitObj, OS=llvm::raw_pwrite_stream @ 0x0000000126e0f340, DwoOS=nullptr) at BackendUtil.cpp:1254:19
frame #13: 0x0000000103c57a34 clang-dxc`(anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x000000016fdf4c70, Action=Backend_EmitObj, OS=llvm::raw_pwrite_stream @ 0x0000000126e0f340, BC=0x0000000126e0f490) at BackendUtil.cpp:1278:3
frame #14: 0x0000000103c56f28 clang-dxc`clang::emitBackendOutput(CI=0x0000000126f29060, CGOpts=0x000000012781e018, TDesc=(Data = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64", Length = 78), M=0x0000000126e0f6c0, Action=Backend_EmitObj, VFS=IntrusiveRefCntPtr<llvm::vfs::FileSystem> @ 0x000000016fdf4f78, OS=nullptr, BC=0x0000000126e0f490) at BackendUtil.cpp:1443:13
frame #15: 0x00000001043e9244 clang-dxc`clang::BackendConsumer::HandleTranslationUnit(this=0x0000000126e0f490, C=0x000000012701ce00) at CodeGenAction.cpp:316:3
frame #16: 0x0000000106ca45d4 clang-dxc`clang::ParseAST(S=0x000000012703f000, PrintStats=false, SkipFunctionBodies=false) at ParseAST.cpp:183:13
frame #17: 0x0000000104f9e2f8 clang-dxc`clang::ASTFrontendAction::ExecuteAction(this=0x0000000126f2afc0) at FrontendAction.cpp:1342:3
frame #18: 0x00000001043eed68 clang-dxc`clang::CodeGenAction::ExecuteAction(this=0x0000000126f2afc0) at CodeGenAction.cpp:1113:30
frame #19: 0x0000000104f9db68 clang-dxc`clang::FrontendAction::Execute(this=0x0000000126f2afc0) at FrontendAction.cpp:1222:3
frame #20: 0x0000000104eb452c clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x0000000126f29060, Act=0x0000000126f2afc0) at CompilerInstance.cpp:1061:33
frame #21: 0x00000001050e1be8 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x0000000126f29060) at ExecuteCompilerInvocation.cpp:299:25
frame #22: 0x0000000100012b98 clang-dxc`cc1_main(Argv=ArrayRef<const char *> @ 0x000000016fdf5e78, Argv0="/Users/farzonlotfi/Projects/llvm_debug_build/bin/clang-20", MainAddr=0x0000000100003684) at cc1_main.cpp:297:15
frame #23: 0x0000000100005018 clang-dxc`ExecuteCC1Tool(ArgV=0x000000016fdf9758, ToolContext=0x000000016fdfe6f8) at driver.cpp:223:12
frame #24: 0x0000000100011590 clang-dxc`clang_main(int, char**, llvm::ToolContext const&)::$_0::operator()(this=0x000000016fdfa290, ArgV=0x000000016fdf9758) const at driver.cpp:368:16
frame #25: 0x0000000100011560 clang-dxc`int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::$_0>(callable=6171894416, params=0x000000016fdf9758) at STLFunctionalExtras.h:46:12
frame #26: 0x0000000104bb1ea8 clang-dxc`llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=0x000000016fdfa918, params=0x000000016fdf9758) const at STLFunctionalExtras.h:69:12
frame #27: 0x0000000104bb1e68 clang-dxc`clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0::operator()(this=0x000000016fdf96b8) const at Job.cpp:436:34
frame #28: 0x0000000104bb1e34 clang-dxc`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(callable=6171891384) at STLFunctionalExtras.h:46:12
frame #29: 0x00000001011f7984 clang-dxc`llvm::function_ref<void ()>::operator()(this=0x000000016fdf9658) const at STLFunctionalExtras.h:69:12
frame #30: 0x0000000103184630 clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=0x000000016fdf96f8, Fn=function_ref<void ()> @ 0x000000016fdf9658) at CrashRecoveryContext.cpp:426:3
frame #31: 0x0000000104bae37c clang-dxc`clang::driver::CC1Command::Execute(this=0x0000000126f24000, Redirects=ArrayRef<std::__1::optional<llvm::StringRef> > @ 0x000000016fdf9740, ErrMsg="", ExecutionFailed=0x000000016fdf9c4f) const at Job.cpp:436:12
frame #32: 0x0000000104b41b58 clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x0000000126f22930, C=0x0000000126f24000, FailingCommand=0x000000016fdf9d68, LogOnly=false) const at Compilation.cpp:196:15
frame #33: 0x0000000104b41de4 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x0000000126f22930, Jobs=0x0000000126f229b0, FailingCommands=0x000000016fdfa5f0, LogOnly=false) const at Compilation.cpp:251:19
frame #34: 0x0000000104b60084 clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa640, C=0x0000000126f22930, FailingCommands=0x000000016fdfa5f0) at Driver.cpp:2239:5
frame #35: 0x0000000100004794 clang-dxc`clang_main(Argc=19, Argv=0x000000016fdfee38, ToolContext=0x000000016fdfe6f8) at driver.cpp:406:21
frame #36: 0x000000010003f5fc clang-dxc`main(argc=19, argv=0x000000016fdfee38) at clang-driver.cpp:17:10
frame #37: 0x000000018c812b98 dyld`start + 6076
Module Dump
(lldb) expr M->dump()
; ModuleID = '../DirectML/Product/Shaders/Generated/Quantize_256_8_float16_native_accum32_int8_packed32.hlsl'
source_filename = "../DirectML/Product/Shaders/Generated/Quantize_256_8_float16_native_accum32_int8_packed32.hlsl"
target datalayout = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64"
target triple = "dxil-ms-dx"
%"class.hlsl::RWStructuredBuffer.0" = type { target("dx.RawBuffer", i32, 1, 0) }
%"RWStructuredBuffer<half>" = type { half }
%"RWStructuredBuffer<int32_t>" = type { i32 }
%CBuffer.Constants = type { [2 x <4 x i32>], [2 x <4 x i32>], [2 x <4 x i32>], [2 x <4 x i32>], [2 x <4 x i32>], [2 x <4 x i32>], i32, i32, i32, i32 }
%dx.types.Handle = type { ptr }
%dx.types.CBufRet.i32 = type { i32, i32, i32, i32 }
%dx.types.ResRet.f16 = type { half, half, half, half, i32 }
%dx.types.ResRet.i32 = type { i32, i32, i32, i32, i32 }
@_ZL6output = internal unnamed_addr global %"class.hlsl::RWStructuredBuffer.0" poison, align 4
@input = external constant %"RWStructuredBuffer<half>"
@scale = external constant %"RWStructuredBuffer<half>"
@output = external constant %"RWStructuredBuffer<int32_t>"
@Constants = external constant %CBuffer.Constants
; Function Attrs: noinline nounwind memory(readwrite, inaccessiblemem: none)
define void @CSMain() local_unnamed_addr #0 {
entry:
%agg.tmp22.i63.sroa.0 = alloca target("dx.RawBuffer", i32, 1, 0), align 8
%0 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 0, i1 false) #1
%1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 1, i1 false) #1
%2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 2, i32 2, i1 false) #1
%3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false) #1
%4 = call i32 @dx.op.threadId.i32(i32 93, i32 0) #2
%.load110130 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 12) #1
%.extract111 = extractvalue %dx.types.CBufRet.i32 %.load110130, 3
%add.i = add i32 %.extract111, %4
%.load132 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 12) #1
%.extract = extractvalue %dx.types.CBufRet.i32 %.load132, 0
%cmp.i = icmp ult i32 %add.i, %.extract
br i1 %cmp.i, label %if.then.i, label %_Z6CSMainDv3_j.exit
if.then.i: ; preds = %entry
%rem.i = and i32 %add.i, 3
%.load107131 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 12) #1
%.extract108 = extractvalue %dx.types.CBufRet.i32 %.load107131, 2
%cmp2.not.i = icmp eq i32 %rem.i, %.extract108
br i1 %cmp2.not.i, label %if.end.i, label %_Z6CSMainDv3_j.exit
if.end.i: ; preds = %if.then.i
%agg.tmp.i.sroa.4.0.copyload.load137 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 1) #1
%agg.tmp.i.sroa.4.0.copyload.extract = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.4.0.copyload.load137, 0
%agg.tmp.i.sroa.4.0.copyload.extract86 = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.4.0.copyload.load137, 1
%agg.tmp.i.sroa.4.0.copyload.extract87 = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.4.0.copyload.load137, 2
%agg.tmp.i.sroa.4.0.copyload.extract88 = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.4.0.copyload.load137, 3
%mul.i67 = mul i32 %agg.tmp.i.sroa.4.0.copyload.extract87, %agg.tmp.i.sroa.4.0.copyload.extract88
%mul14.i = mul i32 %mul.i67, %agg.tmp.i.sroa.4.0.copyload.extract86
%div6.i.i0 = udiv i32 %add.i, %mul14.i
%div6.i.i1 = udiv i32 %add.i, %mul.i67
%div6.i.i2 = udiv i32 %add.i, %agg.tmp.i.sroa.4.0.copyload.extract88
%div6.i.i3 = udiv i32 %add.i, 1
%rem8.i.i0 = urem i32 %div6.i.i0, %agg.tmp.i.sroa.4.0.copyload.extract
%rem8.i.i1 = urem i32 %div6.i.i1, %agg.tmp.i.sroa.4.0.copyload.extract86
%rem8.i.i2 = urem i32 %div6.i.i2, %agg.tmp.i.sroa.4.0.copyload.extract87
%rem8.i.i3 = urem i32 %div6.i.i3, %agg.tmp.i.sroa.4.0.copyload.extract88
%mul21.i = mul i32 %mul14.i, %agg.tmp.i.sroa.4.0.copyload.extract
%agg.tmp.i.sroa.0.0.copyload.load138 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 0) #1
%agg.tmp.i.sroa.0.0.copyload.extract = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.0.0.copyload.load138, 0
%agg.tmp.i.sroa.0.0.copyload.extract82 = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.0.0.copyload.load138, 1
%agg.tmp.i.sroa.0.0.copyload.extract83 = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.0.0.copyload.load138, 2
%agg.tmp.i.sroa.0.0.copyload.extract84 = extractvalue %dx.types.CBufRet.i32 %agg.tmp.i.sroa.0.0.copyload.load138, 3
%mul28.i = mul i32 %mul21.i, %agg.tmp.i.sroa.0.0.copyload.extract84
%mul35.i = mul i32 %mul28.i, %agg.tmp.i.sroa.0.0.copyload.extract83
%mul42.i = mul i32 %mul35.i, %agg.tmp.i.sroa.0.0.copyload.extract82
%div.i.i0 = udiv i32 %add.i, %mul42.i
%div.i.i1 = udiv i32 %add.i, %mul35.i
%div.i.i2 = udiv i32 %add.i, %mul28.i
%div.i.i3 = udiv i32 %add.i, %mul21.i
%rem.i25.i0 = urem i32 %div.i.i0, %agg.tmp.i.sroa.0.0.copyload.extract
%rem.i25.i1 = urem i32 %div.i.i1, %agg.tmp.i.sroa.0.0.copyload.extract82
%rem.i25.i2 = urem i32 %div.i.i2, %agg.tmp.i.sroa.0.0.copyload.extract83
%rem.i25.i3 = urem i32 %div.i.i3, %agg.tmp.i.sroa.0.0.copyload.extract84
%agg.tmp4.i.sroa.0.0.copyload.load136 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 2) #1
%agg.tmp4.i.sroa.0.0.copyload.extract = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.0.0.copyload.load136, 0
%agg.tmp4.i.sroa.0.0.copyload.extract90 = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.0.0.copyload.load136, 1
%agg.tmp4.i.sroa.0.0.copyload.extract91 = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.0.0.copyload.load136, 2
%agg.tmp4.i.sroa.0.0.copyload.extract92 = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.0.0.copyload.load136, 3
%agg.tmp4.i.sroa.4.0.copyload.load135 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 3) #1
%agg.tmp4.i.sroa.4.0.copyload.extract = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.4.0.copyload.load135, 0
%agg.tmp4.i.sroa.4.0.copyload.extract94 = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.4.0.copyload.load135, 1
%agg.tmp4.i.sroa.4.0.copyload.extract95 = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.4.0.copyload.load135, 2
%agg.tmp4.i.sroa.4.0.copyload.extract96 = extractvalue %dx.types.CBufRet.i32 %agg.tmp4.i.sroa.4.0.copyload.load135, 3
%div.i41.i0 = udiv i32 %agg.tmp.i.sroa.0.0.copyload.extract, %agg.tmp4.i.sroa.0.0.copyload.extract
%div.i41.i1 = udiv i32 %agg.tmp.i.sroa.0.0.copyload.extract82, %agg.tmp4.i.sroa.0.0.copyload.extract90
%div.i41.i2 = udiv i32 %agg.tmp.i.sroa.0.0.copyload.extract83, %agg.tmp4.i.sroa.0.0.copyload.extract91
%div.i41.i3 = udiv i32 %agg.tmp.i.sroa.0.0.copyload.extract84, %agg.tmp4.i.sroa.0.0.copyload.extract92
%div5.i44.i0 = udiv i32 %agg.tmp.i.sroa.4.0.copyload.extract, %agg.tmp4.i.sroa.4.0.copyload.extract
%div5.i44.i1 = udiv i32 %agg.tmp.i.sroa.4.0.copyload.extract86, %agg.tmp4.i.sroa.4.0.copyload.extract94
%div5.i44.i2 = udiv i32 %agg.tmp.i.sroa.4.0.copyload.extract87, %agg.tmp4.i.sroa.4.0.copyload.extract95
%div5.i44.i3 = udiv i32 %agg.tmp.i.sroa.4.0.copyload.extract88, %agg.tmp4.i.sroa.4.0.copyload.extract96
%div.i32.i0 = udiv i32 %rem.i25.i0, %div.i41.i0
%div.i32.i1 = udiv i32 %rem.i25.i1, %div.i41.i1
%div.i32.i2 = udiv i32 %rem.i25.i2, %div.i41.i2
%div.i32.i3 = udiv i32 %rem.i25.i3, %div.i41.i3
%div5.i.i0 = udiv i32 %rem8.i.i0, %div5.i44.i0
%div5.i.i1 = udiv i32 %rem8.i.i1, %div5.i44.i1
%div5.i.i2 = udiv i32 %rem8.i.i2, %div5.i44.i2
%div5.i.i3 = udiv i32 %rem8.i.i3, %div5.i44.i3
%agg.tmp11.i.sroa.0.0.copyload.load134 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 6) #1
%agg.tmp11.i.sroa.0.0.copyload.extract = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.0.0.copyload.load134, 0
%agg.tmp11.i.sroa.0.0.copyload.extract98 = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.0.0.copyload.load134, 1
%agg.tmp11.i.sroa.0.0.copyload.extract99 = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.0.0.copyload.load134, 2
%agg.tmp11.i.sroa.0.0.copyload.extract100 = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.0.0.copyload.load134, 3
%agg.tmp11.i.sroa.4.0.copyload.load133 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %3, i32 7) #1
%agg.tmp11.i.sroa.4.0.copyload.extract = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.4.0.copyload.load133, 0
%agg.tmp11.i.sroa.4.0.copyload.extract102 = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.4.0.copyload.load133, 1
%agg.tmp11.i.sroa.4.0.copyload.extract103 = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.4.0.copyload.load133, 2
%agg.tmp11.i.sroa.4.0.copyload.extract104 = extractvalue %dx.types.CBufRet.i32 %agg.tmp11.i.sroa.4.0.copyload.load133, 3
%5 = mul i32 %div.i32.i0, %agg.tmp11.i.sroa.0.0.copyload.extract
%dx.mad79124 = call i32 @dx.op.tertiary.i32(i32 49, i32 %div.i32.i1, i32 %agg.tmp11.i.sroa.0.0.copyload.extract98, i32 %5) #2
%dx.mad80123 = call i32 @dx.op.tertiary.i32(i32 49, i32 %div.i32.i2, i32 %agg.tmp11.i.sroa.0.0.copyload.extract99, i32 %dx.mad79124) #2
%dx.mad81122 = call i32 @dx.op.tertiary.i32(i32 49, i32 %div.i32.i3, i32 %agg.tmp11.i.sroa.0.0.copyload.extract100, i32 %dx.mad80123) #2
%6 = mul i32 %div5.i.i0, %agg.tmp11.i.sroa.4.0.copyload.extract
%dx.mad127 = call i32 @dx.op.tertiary.i32(i32 49, i32 %div5.i.i1, i32 %agg.tmp11.i.sroa.4.0.copyload.extract102, i32 %6) #2
%dx.mad77126 = call i32 @dx.op.tertiary.i32(i32 49, i32 %div5.i.i2, i32 %agg.tmp11.i.sroa.4.0.copyload.extract103, i32 %dx.mad127) #2
%dx.mad78125 = call i32 @dx.op.tertiary.i32(i32 49, i32 %div5.i.i3, i32 %agg.tmp11.i.sroa.4.0.copyload.extract104, i32 %dx.mad77126) #2
%add.i62 = add i32 %dx.mad78125, %dx.mad81122
%7 = call %dx.types.ResRet.f16 @dx.op.rawBufferLoad.f16(i32 139, %dx.types.Handle %0, i32 %add.i, i32 0, i8 1, i32 2)
%8 = extractvalue %dx.types.ResRet.f16 %7, 0
%9 = call %dx.types.ResRet.f16 @dx.op.rawBufferLoad.f16(i32 139, %dx.types.Handle %1, i32 %add.i62, i32 0, i8 1, i32 2)
%10 = extractvalue %dx.types.ResRet.f16 %9, 0
%conv.i = fpext reassoc nnan ninf nsz arcp afn half %8 to float
%conv18.i = fpext reassoc nnan ninf nsz arcp afn half %10 to float
%div.i.i = fdiv reassoc nnan ninf nsz arcp afn float %conv.i, %conv18.i
%elt.roundeven.i.i121 = call float @dx.op.unary.f32(i32 26, float %div.i.i) #2
%dx.max128 = call float @dx.op.binary.f32(i32 35, float %elt.roundeven.i.i121, float -1.280000e+02) #2
%dx.min129 = call float @dx.op.binary.f32(i32 36, float %dx.max128, float 1.270000e+02) #2
%conv21.i = fptosi float %dx.min129 to i32
%11 = bitcast ptr @_ZL6output to ptr
%12 = load i32, ptr %11, align 4
%13 = bitcast ptr %agg.tmp22.i63.sroa.0 to ptr
store target("dx.RawBuffer", i32, 1, 0) undef, ptr %13, align 4
%14 = bitcast ptr %agg.tmp22.i63.sroa.0 to ptr
store i32 %12, ptr %14, align 4
%div9.i = lshr i32 %add.i, 2
%rem.i64 = shl i32 %add.i, 3
%mul.i = and i32 %rem.i64, 24
%shl.i = shl nuw i32 255, %mul.i
%15 = call %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 139, %dx.types.Handle %2, i32 %div9.i, i32 0, i8 1, i32 4)
%16 = extractvalue %dx.types.ResRet.i32 %15, 0
%shl2.i = shl i32 %conv21.i, %mul.i
%xor.i = xor i32 %16, %shl2.i
%and.i = and i32 %xor.i, %shl.i
%xor3.i = xor i32 %and.i, %16
call void @dx.op.rawBufferStore.i32(i32 140, %dx.types.Handle %2, i32 %div9.i, i32 0, i32 %xor3.i, i32 undef, i32 undef, i32 undef, i8 1, i32 4)
%17 = bitcast ptr %agg.tmp22.i63.sroa.0 to ptr
store target("dx.RawBuffer", i32, 1, 0) undef, ptr %17, align 4
br label %_Z6CSMainDv3_j.exit
_Z6CSMainDv3_j.exit: ; preds = %if.then.i, %entry, %if.end.i
ret void
}
declare float @dx.op.unary.f32(i32 %0, float %1)
declare i32 @dx.op.threadId.i32(i32 %0, i32 %1)
declare %dx.types.Handle @dx.op.createHandle(i32 %0, i8 %1, i32 %2, i32 %3, i1 %4)
declare %dx.types.ResRet.f16 @dx.op.rawBufferLoad.f16(i32 %0, %dx.types.Handle %1, i32 %2, i32 %3, i8 %4, i32 %5)
declare %dx.types.ResRet.i32 @dx.op.rawBufferLoad.i32(i32 %0, %dx.types.Handle %1, i32 %2, i32 %3, i8 %4, i32 %5)
declare void @dx.op.rawBufferStore.i32(i32 %0, %dx.types.Handle %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6, i32 %7, i8 %8, i32 %9)
declare i32 @dx.op.tertiary.i32(i32 %0, i32 %1, i32 %2, i32 %3)
declare float @dx.op.binary.f32(i32 %0, float %1, float %2)
declare %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 %0, %dx.types.Handle %1, i32 %2)
attributes #0 = { noinline nounwind memory(readwrite, inaccessiblemem: none) }
attributes #1 = { memory(read) }
attributes #2 = { memory(none) }
!dx.valver = !{!0}
!llvm.ident = !{!1}
!dx.shaderModel = !{!2}
!dx.version = !{!3}
!dx.resources = !{!4}
!dx.entryPoints = !{!12}
!llvm.module.flags = !{!15, !16, !17}
!0 = !{i32 1, i32 8}
!1 = !{!"clang version 22.0.0git ([email protected]:llvm/llvm-project.git 1e78354d88979fd524f2b4626249c978b2d5ebaa)"}
!2 = !{!"cs", i32 6, i32 2}
!3 = !{i32 1, i32 2}
!4 = !{null, !5, !10, null}
!5 = !{!6, !7, !8}
!6 = !{i32 0, ptr @input, !"input", i32 0, i32 0, i32 1, i32 12, i1 false, i1 false, i1 false, !3}
!7 = !{i32 1, ptr @scale, !"scale", i32 0, i32 1, i32 1, i32 12, i1 false, i1 false, i1 false, !3}
!8 = !{i32 2, ptr @output, !"output", i32 0, i32 2, i32 1, i32 12, i1 false, i1 false, i1 false, !9}
!9 = !{i32 1, i32 4}
!10 = !{!11}
!11 = !{i32 0, ptr @Constants, !"Constants", i32 0, i32 0, i32 1, i32 208, null}
!12 = !{ptr @CSMain, !"CSMain", null, !4, !13}
!13 = !{i32 0, i64 8388656, i32 4, !14}
!14 = !{i32 256, i32 1, i32 1}
!15 = !{i32 1, !"wchar_size", i32 4}
!16 = !{i32 1, !"dx.nativelowprec", i32 1}
!17 = !{i32 2, !"frame-pointer", i32 2}
Evaluated this expression after applying Fix-It(s):
M.dump()
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Closed