Skip to content

Instantly share code, notes, and snippets.

@rayanht
Created June 28, 2022 02:24
Show Gist options
  • Save rayanht/2e1d5e1cfb128ed0049c399142381e93 to your computer and use it in GitHub Desktop.
Save rayanht/2e1d5e1cfb128ed0049c399142381e93 to your computer and use it in GitHub Desktop.
; Magic: 0x07230203 (SPIR-V)
; Version: 0x00010700 (Version: 1.7.0)
; Generator: 0x00220001 (SPIRVSmith)
; Bound: 360
; Schema: 0
OpCapability Shader
OpCapability Matrix
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %28 "main"
OpExecutionMode %28 LocalSize 1 1 1
OpDecorate %10 Block
OpDecorate %22 DescriptorSet 0
OpDecorate %22 Binding 0
OpMemberDecorate %10 0 Offset 0
OpMemberDecorate %10 1 Offset 32
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%3 = OpTypeFloat 32
%4 = OpTypeVector %3 3
%5 = OpTypeInt 32 0
%6 = OpTypeInt 32 1
%7 = OpTypeVector %6 4
%8 = OpTypeVector %3 4
%9 = OpTypeMatrix %8 4
%10 = OpTypeStruct %5 %5
%11 = OpConstant %5 54
%12 = OpConstant %3 6.137816504003634
%13 = OpTypeBool
%14 = OpConstantTrue %13
%15 = OpConstantFalse %13
%16 = OpConstant %5 51
%17 = OpConstant %6 2
%18 = OpConstant %3 74.0231388740496
%19 = OpConstantComposite %8 %12 %12 %18 %18
%20 = OpConstantComposite %4 %12 %12 %12
%21 = OpTypePointer StorageBuffer %10
%22 = OpVariable %21 StorageBuffer
%23 = OpTypeVector %5 4
%24 = OpTypePointer StorageBuffer %5
%25 = OpConstant %5 1
%26 = OpConstant %5 0
%27 = OpTypeVector %13 4
%28 = OpFunction %1 Pure %2
%29 = OpLabel
%30 = OpLoad %10 %22
%31 = OpLogicalNot %13 %15
%32 = OpBitCount %6 %17
%33 = OpConvertFToU %23 %19
%34 = OpAccessChain %24 %22 %25
OpBranch %36
%36 = OpLabel
OpLoopMerge %52 %39 None
OpBranchConditional %31 %39 %52
%39 = OpLabel
%40 = OpLogicalEqual %13 %31 %31
OpStore %34 %25
%42 = OpConvertSToF %3 %32
%43 = OpConvertUToF %3 %16
%44 = OpBitwiseAnd %23 %33 %33
OpStore %34 %16
%46 = OpLoad %10 %22
%47 = OpConvertFToS %6 %43
%48 = OpShiftLeftLogical %5 %11 %11
%49 = OpCompositeExtract %5 %33 0
%50 = OpAccessChain %24 %22 %26
OpBranch %36
%52 = OpLabel
%53 = OpNot %6 %32
%54 = OpCompositeExtract %3 %19 2
%55 = OpShiftLeftLogical %6 %32 %53
%56 = OpConvertSToF %3 %55
%57 = OpBitwiseOr %5 %25 %25
%58 = OpConvertFToS %6 %56
OpSelectionMerge %91 None
OpBranchConditional %31 %61 %76
%61 = OpLabel
%62 = OpConvertFToS %6 %56
OpStore %34 %57
%64 = OpBitCount %6 %32
%65 = OpIEqual %13 %62 %55
%66 = OpConvertSToF %3 %53
%67 = OpShiftLeftLogical %5 %16 %57
%68 = OpLogicalNot %13 %15
OpStore %34 %16
%70 = OpFOrdGreaterThanEqual %13 %12 %56
%71 = OpBitwiseXor %5 %67 %57
%72 = OpAccessChain %24 %22 %26
%73 = OpCompositeExtract %5 %33 1
%74 = OpBitCount %6 %55
OpBranch %91
%76 = OpLabel
%77 = OpBitCount %6 %32
%78 = OpBitCount %6 %53
%79 = OpBitCount %6 %78
%80 = OpConvertSToF %3 %17
%81 = OpLoad %10 %22
%82 = OpConvertFToS %6 %56
%83 = OpBitwiseXor %5 %11 %57
%84 = OpLoad %10 %22
OpStore %34 %83
%86 = OpConvertUToF %3 %11
%87 = OpVectorInsertDynamic %8 %19 %86 %55
%88 = OpLogicalOr %13 %31 %31
%89 = OpBitwiseXor %5 %25 %83
OpBranch %91
%91 = OpLabel
OpSelectionMerge %123 None
OpBranchConditional %31 %94 %111
%94 = OpLabel
%95 = OpConvertFToU %5 %12
%96 = OpCopyObject %6 %53
%97 = OpShiftLeftLogical %5 %57 %57
%98 = OpVectorShuffle %23 %33 %33 0 2 0 2
%99 = OpCompositeInsert %23 %95 %33 1
%100 = OpIMul %6 %53 %58
%101 = OpLogicalAnd %13 %31 %31
%102 = OpVectorInsertDynamic %23 %98 %95 %57
%103 = OpCopyObject %23 %98
%104 = OpConvertFToU %5 %54
OpStore %34 %57
%106 = OpAccessChain %24 %22 %26
%107 = OpConvertUToF %3 %16
%108 = OpConvertFToS %6 %54
%109 = OpConvertFToU %5 %107
OpBranch %123
%111 = OpLabel
%112 = OpConvertUToF %3 %25
%113 = OpConvertUToF %3 %57
%114 = OpCompositeExtract %5 %33 2
%115 = OpCopyObject %3 %112
%116 = OpCopyObject %24 %34
%117 = OpConvertFToU %5 %56
%118 = OpLoad %10 %22
%119 = OpConvertSToF %3 %17
%120 = OpVectorExtractDynamic %5 %33 %17
%121 = OpVectorShuffle %23 %33 %33 1 3 0 3
OpBranch %123
%123 = OpLabel
%124 = OpFUnordNotEqual %13 %54 %54
OpSelectionMerge %157 None
OpBranchConditional %124 %127 %141
%127 = OpLabel
%128 = OpBitwiseAnd %5 %57 %57
%129 = OpIsNan %13 %54
%130 = OpIAdd %5 %128 %57
%131 = OpFOrdLessThan %13 %56 %54
%132 = OpConvertFToU %5 %54
%133 = OpBitwiseXor %5 %57 %57
%134 = OpBitwiseXor %5 %128 %26
%135 = OpNot %5 %25
%136 = OpShiftRightLogical %5 %134 %25
%137 = OpLogicalEqual %13 %131 %124
%138 = OpShiftRightArithmetic %5 %132 %135
%139 = OpFUnordLessThan %13 %56 %12
OpBranch %157
%141 = OpLabel
%142 = OpConvertUToF %3 %57
%143 = OpVectorExtractDynamic %3 %20 %58
%144 = OpShiftLeftLogical %6 %32 %17
%145 = OpCopyObject %6 %58
%146 = OpFUnordGreaterThan %13 %142 %12
%147 = OpConvertFToU %5 %54
%148 = OpVectorExtractDynamic %5 %33 %53
OpStore %34 %147
%150 = OpConvertFToS %6 %143
%151 = OpBitwiseXor %6 %17 %17
%152 = OpConvertUToF %3 %16
%153 = OpConvertFToS %6 %54
%154 = OpConvertFToU %5 %152
%155 = OpConvertUToF %3 %154
OpBranch %157
%157 = OpLabel
%158 = OpVectorShuffle %23 %33 %33 1 3 0 1
OpBranch %160
%160 = OpLabel
OpLoopMerge %175 %163 None
OpBranchConditional %124 %163 %175
%163 = OpLabel
%164 = OpLoad %10 %22
%165 = OpIsInf %13 %56
OpStore %34 %57
%167 = OpFUnordNotEqual %13 %54 %54
%168 = OpShiftRightArithmetic %6 %32 %17
%169 = OpVectorInsertDynamic %8 %19 %54 %32
%170 = OpShiftRightLogical %5 %16 %57
%171 = OpConvertFToS %6 %54
%172 = OpUGreaterThan %13 %57 %57
%173 = OpLoad %10 %22
OpBranch %160
%175 = OpLabel
%176 = OpBitwiseAnd %5 %16 %57
%177 = OpAccessChain %24 %22 %25
%178 = OpVectorInsertDynamic %23 %33 %26 %25
%179 = OpFUnordLessThanEqual %13 %54 %54
%180 = OpFOrdNotEqual %13 %54 %56
%181 = OpVectorInsertDynamic %23 %178 %176 %11
%182 = OpVectorInsertDynamic %23 %181 %57 %11
%183 = OpBitCount %6 %17
%184 = OpBitwiseXor %6 %183 %183
%185 = OpSGreaterThanEqual %13 %184 %32
%186 = OpConvertUToF %3 %25
%187 = OpLogicalAnd %13 %180 %179
%188 = OpUGreaterThanEqual %27 %181 %178
%189 = OpConvertFToS %6 %56
%190 = OpShiftLeftLogical %6 %184 %58
OpBranch %192
%192 = OpLabel
OpLoopMerge %212 %195 None
OpBranchConditional %124 %195 %212
%195 = OpLabel
%196 = OpCompositeInsert %23 %11 %178 2
%197 = OpFUnordLessThan %13 %186 %54
%198 = OpLoad %10 %22
%199 = OpBitwiseOr %23 %33 %158
%200 = OpBitCount %23 %158
%201 = OpCompositeExtract %5 %199 2
%202 = OpLoad %10 %22
%203 = OpBitCount %6 %184
%204 = OpConvertUToF %3 %176
%205 = OpLogicalAnd %13 %180 %180
%206 = OpBitwiseXor %6 %190 %190
%207 = OpLogicalNot %13 %185
%208 = OpIsNan %13 %204
%209 = OpFOrdNotEqual %13 %18 %204
%210 = OpConvertFToU %5 %186
OpBranch %192
%212 = OpLabel
%213 = OpConvertSToF %3 %17
%214 = OpNot %6 %58
%215 = OpAccessChain %24 %22 %26
OpBranch %217
%217 = OpLabel
OpLoopMerge %233 %220 None
OpBranchConditional %15 %220 %233
%220 = OpLabel
%221 = OpLogicalNot %27 %188
%222 = OpConvertSToF %3 %184
%223 = OpConvertFToS %6 %213
%224 = OpConvertSToF %3 %32
%225 = OpLoad %10 %22
OpStore %177 %26
%227 = OpLoad %10 %22
%228 = OpCompositeExtract %5 %225 1
%229 = OpConvertFToU %5 %213
%230 = OpFOrdGreaterThanEqual %13 %12 %56
%231 = OpSLessThan %13 %214 %53
OpBranch %217
%233 = OpLabel
%234 = OpCopyObject %13 %14
OpBranch %236
%236 = OpLabel
OpLoopMerge %255 %239 None
OpBranchConditional %31 %239 %255
%239 = OpLabel
%240 = OpLoad %10 %22
%241 = OpShiftRightLogical %6 %55 %17
%242 = OpCopyObject %3 %186
OpStore %34 %57
%244 = OpIsInf %13 %18
%245 = OpVectorExtractDynamic %5 %181 %32
%246 = OpLogicalNot %13 %15
%247 = OpFUnordNotEqual %13 %54 %213
%248 = OpULessThanEqual %27 %182 %181
%249 = OpAll %13 %248
%250 = OpLoad %10 %22
%251 = OpNot %6 %190
%252 = OpLogicalNot %27 %248
OpStore %215 %26
OpBranch %236
%255 = OpLabel
%256 = OpNot %6 %184
%257 = OpCompositeExtract %5 %181 0
%258 = OpNot %5 %257
%259 = OpLogicalEqual %27 %188 %188
OpBranch %261
%261 = OpLabel
OpLoopMerge %280 %264 None
OpBranchConditional %234 %264 %280
%264 = OpLabel
%265 = OpConvertSToF %3 %17
%266 = OpCopyObject %3 %186
%267 = OpBitwiseOr %23 %181 %181
%268 = OpFOrdEqual %13 %186 %54
%269 = OpAccessChain %24 %22 %26
%270 = OpBitwiseOr %23 %178 %158
%271 = OpUGreaterThan %27 %33 %181
%272 = OpVectorInsertDynamic %23 %181 %257 %214
%273 = OpNot %23 %181
%274 = OpBitCount %6 %183
%275 = OpConvertFToU %5 %265
%276 = OpIsInf %13 %56
%277 = OpCompositeInsert %27 %180 %259 2
%278 = OpConvertSToF %3 %184
OpBranch %261
%280 = OpLabel
OpBranch %282
%282 = OpLabel
OpLoopMerge %302 %285 None
OpBranchConditional %14 %285 %302
%285 = OpLabel
%286 = OpConvertUToF %3 %176
%287 = OpULessThan %13 %258 %176
%288 = OpNot %6 %32
%289 = OpLoad %10 %22
%290 = OpShiftRightLogical %23 %33 %178
%291 = OpBitwiseXor %23 %158 %158
%292 = OpLogicalNotEqual %13 %179 %31
%293 = OpAll %13 %259
%294 = OpIsNan %13 %186
%295 = OpConvertUToF %8 %291
%296 = OpBitCount %23 %33
%297 = OpFUnordNotEqual %13 %213 %56
%298 = OpConvertSToF %3 %256
%299 = OpBitwiseXor %23 %181 %181
%300 = OpAccessChain %24 %22 %26
OpBranch %282
%302 = OpLabel
%303 = OpBitCount %5 %57
%304 = OpLoad %10 %22
OpBranch %306
%306 = OpLabel
OpLoopMerge %324 %309 None
OpBranchConditional %124 %309 %324
%309 = OpLabel
%310 = OpConvertSToF %3 %189
%311 = OpCompositeInsert %23 %257 %181 3
%312 = OpSLessThanEqual %13 %183 %190
%313 = OpIsNan %13 %213
%314 = OpAll %13 %188
%315 = OpFOrdNotEqual %13 %213 %310
%316 = OpCompositeExtract %5 %33 3
%317 = OpVectorShuffle %23 %158 %311 2 0 2 0
%318 = OpIsInf %13 %18
%319 = OpConvertSToF %3 %183
%320 = OpNot %5 %26
%321 = OpVectorInsertDynamic %4 %20 %54 %316
%322 = OpVectorInsertDynamic %27 %188 %15 %320
OpBranch %306
%324 = OpLabel
%325 = OpBitCount %6 %184
%326 = OpConvertUToF %8 %33
%327 = OpCopyObject %5 %26
%328 = OpCompositeExtract %13 %188 2
%329 = OpShiftRightArithmetic %6 %32 %189
OpSelectionMerge %359 None
OpBranchConditional %180 %332 %348
%332 = OpLabel
%333 = OpShiftRightLogical %5 %11 %257
%334 = OpAccessChain %24 %22 %26
%335 = OpLoad %10 %22
%336 = OpLoad %10 %22
%337 = OpIsInf %13 %186
%338 = OpBitwiseAnd %5 %327 %57
%339 = OpConvertFToS %6 %186
OpStore %334 %26
%341 = OpAccessChain %24 %22 %25
%342 = OpCompositeInsert %23 %327 %182 2
OpStore %341 %338
%344 = OpBitCount %23 %181
%345 = OpConvertFToS %7 %326
%346 = OpAny %13 %188
OpBranch %359
%348 = OpLabel
%349 = OpLoad %10 %22
%350 = OpVectorInsertDynamic %27 %188 %187 %256
%351 = OpNot %6 %58
%352 = OpVectorInsertDynamic %27 %188 %14 %329
%353 = OpBitwiseOr %6 %17 %189
%354 = OpConvertFToU %5 %56
%355 = OpCopyObject %24 %177
%356 = OpCompositeExtract %5 %349 0
%357 = OpConvertFToS %6 %213
OpBranch %359
%359 = OpLabel
OpReturn
OpFunctionEnd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment