Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save bbrezillon/679eca01361b05a3b63e67cdb25d0052 to your computer and use it in GitHub Desktop.

Select an option

Save bbrezillon/679eca01361b05a3b63e67cdb25d0052 to your computer and use it in GitHub Desktop.
impl test_fn {
block block_0:
/* preds: */
vec1 32 ssa_30 = load_const (0x00000001 /* 0.000000 */)
vec2 32 ssa_24 = load_const (0x00000000 /* 0.000000 */, 0x00000000 /* 0.000000 */)
vec1 64 ssa_15 = load_const (0x 20 /* 0.000000 */)
vec1 64 ssa_12 = load_const (0x 20 /* 0.000000 */)
vec1 64 ssa_0 = intrinsic load_param () (0) /* param_idx=0 */
vec1 64 ssa_1 = deref_cast (uvec2 *)ssa_0 (shared uvec2) /* ptr_stride=8 */
vec1 64 ssa_2 = intrinsic load_param () (1) /* param_idx=1 */
vec1 64 ssa_3 = deref_cast (uvec2 *)ssa_2 (global uvec2) /* ptr_stride=8 */
vec1 64 ssa_4 = intrinsic load_param () (2) /* param_idx=2 */
vec1 64 ssa_5 = deref_cast (uint *)ssa_4 (global uint) /* ptr_stride=4 */
vec1 64 ssa_6 = intrinsic load_param () (3) /* param_idx=3 */
vec1 64 ssa_7 = deref_cast (uvec2 *)ssa_6 (global uvec2) /* ptr_stride=8 */
vec1 32 ssa_8 = intrinsic load_param () (4) /* param_idx=4 */
vec1 32 ssa_9 = deref_var &__spirv_BuiltInGlobalInvocationId (system u64vec3)
vec3 64 ssa_10 = intrinsic load_deref (ssa_9) (0, 0, 0) /* access=0 */ /* align_mul=0 */ /* align_offset=0 */
vec1 64 ssa_11 = mov ssa_10.x
vec1 32 ssa_13 = u2u32 ssa_12
vec1 64 ssa_14 = ishl ssa_11, ssa_13
vec1 32 ssa_16 = u2u32 ssa_15
vec1 64 ssa_17 = ishr ssa_14, ssa_16
vec1 64 ssa_18 = deref_cast (uint *)ssa_5 (global uint) /* ptr_stride=4 */
vec1 64 ssa_19 = deref_ptr_as_array &(*ssa_18)[ssa_17] (global uint) /* &(*(uint *)ssa_5)[ssa_17] */
vec1 32 ssa_20 = intrinsic load_deref (ssa_19) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_21 = u2u64 ssa_20
vec1 64 ssa_22 = deref_cast (uvec2 *)ssa_1 (shared uvec2) /* ptr_stride=8 */
vec1 64 ssa_23 = deref_ptr_as_array &(*ssa_22)[ssa_21] (shared uvec2) /* &(*(uvec2 *)ssa_1)[ssa_21] */
intrinsic store_deref (ssa_23, ssa_24) (3, 0, 8, 0) /* wrmask=xy */ /* access=0 */ /* align_mul=8 */ /* align_offset=0 */
vec1 32 ssa_25 = intrinsic load_deref (ssa_19) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_26 = u2u64 ssa_25
vec1 64 ssa_27 = deref_cast (uvec2 *)ssa_1 (shared uvec2) /* ptr_stride=8 */
vec1 64 ssa_28 = deref_ptr_as_array &(*ssa_27)[ssa_26] (shared uvec2) /* &(*(uvec2 *)ssa_1)[ssa_26] */
vec2 32 ssa_29 = intrinsic load_deref (ssa_28) (0, 8, 0) /* access=0 */ /* align_mul=8 */ /* align_offset=0 */
vec1 32 ssa_31 = iadd ssa_25, ssa_30
vec1 64 ssa_32 = u2u64 ssa_31
vec1 64 ssa_33 = deref_cast (uvec2 *)ssa_1 (shared uvec2) /* ptr_stride=8 */
vec1 64 ssa_34 = deref_ptr_as_array &(*ssa_33)[ssa_32] (shared uvec2) /* &(*(uvec2 *)ssa_1)[ssa_32] */
intrinsic store_deref (ssa_34, ssa_29) (3, 0, 8, 0) /* wrmask=xy */ /* access=0 */ /* align_mul=8 */ /* align_offset=0 */
intrinsic scoped_control_memory_barrier () (2, 3, 256, 2) /* mem_semantics=ACQ|REL */ /* mem_modes=shared */ /* mem_scope=WORKGROUP */ /* exec_scope=W
ORKGROUP */
vec1 64 ssa_35 = deref_cast (uvec2 *)ssa_3 (global uvec2) /* ptr_stride=8 */
vec1 64 ssa_36 = deref_ptr_as_array &(*ssa_35)[ssa_17] (global uvec2) /* &(*(uvec2 *)ssa_3)[ssa_17] */
vec2 32 ssa_37 = intrinsic load_deref (ssa_36) (0, 8, 0) /* access=0 */ /* align_mul=8 */ /* align_offset=0 */
vec1 32 ssa_38 = intrinsic load_deref (ssa_19) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_39 = u2u64 ssa_38
vec1 64 ssa_40 = u2u64 ssa_8
vec1 64 ssa_41 = deref_cast (uvec2 *)ssa_1 (shared uvec2) /* ptr_stride=8 */
vec1 64 ssa_42 = load_const (0x 0 /* 0.000000 */)
vec1 64 ssa_43 = deref_ptr_as_array &(*ssa_41)[0] (shared uvec2) /* &(*(uvec2 *)ssa_1)[0] */
vec1 64 ssa_44 = deref_array &(*ssa_43)[ssa_40] (shared uint) /* &(*(uvec2 *)ssa_1)[0][ssa_40] */
vec1 32 ssa_45 = load_const (0x00000001 /* 0.000000 */)
vec1 64 ssa_46 = ishl ssa_39, ssa_45
vec1 64 ssa_47 = deref_ptr_as_array &(*ssa_44)[ssa_46] (shared uint) /* &(*(uvec2 *)ssa_1)[0][ssa_40][ssa_46] */
vec1 32 ssa_48 = mov ssa_37.x
intrinsic store_deref (ssa_47, ssa_48) (1, 0, 0, 0) /* wrmask=x */ /* access=0 */ /* align_mul=0 */ /* align_offset=0 */
vec1 64 ssa_49 = load_const (0x 1 /* 0.000000 */)
vec1 64 ssa_50 = iadd ssa_46, ssa_49
vec1 64 ssa_51 = deref_ptr_as_array &(*ssa_44)[ssa_50] (shared uint) /* &(*(uvec2 *)ssa_1)[0][ssa_40][ssa_50] */
vec1 32 ssa_52 = mov ssa_37.y
intrinsic store_deref (ssa_51, ssa_52) (1, 0, 0, 0) /* wrmask=x */ /* access=0 */ /* align_mul=0 */ /* align_offset=0 */
intrinsic scoped_control_memory_barrier () (2, 3, 256, 2) /* mem_semantics=ACQ|REL */ /* mem_modes=shared */ /* mem_scope=WORKGROUP */ /* exec_scope=W
ORKGROUP */
vec1 32 ssa_53 = intrinsic load_deref (ssa_19) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_54 = u2u64 ssa_53
vec1 64 ssa_55 = deref_cast (uvec2 *)ssa_1 (shared uvec2) /* ptr_stride=8 */
vec1 64 ssa_56 = deref_ptr_as_array &(*ssa_55)[ssa_54] (shared uvec2) /* &(*(uvec2 *)ssa_1)[ssa_54] */
vec1 64 ssa_57 = deref_array &(*ssa_56)[ssa_40] (shared uint) /* &(*(uvec2 *)ssa_1)[ssa_54][ssa_40] */
vec1 64 ssa_58 = deref_cast (uvec2 *)ssa_7 (global uvec2) /* ptr_stride=8 */
vec1 64 ssa_59 = deref_ptr_as_array &(*ssa_58)[ssa_54] (global uvec2) /* &(*(uvec2 *)ssa_7)[ssa_54] */
vec1 64 ssa_60 = deref_array &(*ssa_59)[ssa_40] (global uint) /* &(*(uvec2 *)ssa_7)[ssa_54][ssa_40] */
vec2 32 ssa_61 = intrinsic load_deref (ssa_56) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_62 = load_const (0x 1 /* 0.000000 */)
vec1 1 ssa_63 = ilt ssa_40, ssa_62
vec1 32 ssa_64 = mov ssa_61.y
vec1 32 ssa_65 = mov ssa_61.x
vec1 32 ssa_66 = bcsel ssa_63, ssa_65, ssa_64
vec2 32 ssa_67 = intrinsic load_deref (ssa_59) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec2 64 ssa_68 = load_const (0x 0 /* 0.000000 */, 0x 1 /* 0.000000 */)
vec2 1 ssa_69 = ieq ssa_40.xx, ssa_68
vec2 32 ssa_70 = bcsel ssa_69, ssa_66.xx, ssa_67
intrinsic store_deref (ssa_59, ssa_70) (3, 0, 4, 0) /* wrmask=xy */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_71 = deref_cast (uint *)ssa_57 (shared uint) /* ptr_stride=4 */
vec1 64 ssa_72 = load_const (0x 1 /* 0.000000 */)
vec1 64 ssa_73 = deref_ptr_as_array &(*ssa_71)[1] (shared uint) /* &(*(uint *)ssa_57)[1] */
vec1 32 ssa_74 = intrinsic load_deref (ssa_73) (0, 4, 0) /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
vec1 64 ssa_75 = deref_cast (uint *)ssa_60 (global uint) /* ptr_stride=4 */
vec1 64 ssa_76 = load_const (0x 1 /* 0.000000 */)
vec1 64 ssa_77 = deref_ptr_as_array &(*ssa_75)[1] (global uint) /* &(*(uint *)ssa_60)[1] */
intrinsic store_deref (ssa_77, ssa_74) (1, 0, 4, 0) /* wrmask=x */ /* access=0 */ /* align_mul=4 */ /* align_offset=0 */
return
/* succs: block_1 */
block block_1:
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment