Skip to content

Commit 84c5faa

Browse files
KanclerzPiotrigcbot
authored andcommitted
Add support for vector types for GroupNonUniformShuffle
SPIR-V did not support vector types for GroupNonUniformShuffle.
1 parent cfa18e3 commit 84c5faa

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

IGC/BiFModule/Implementation/group.cl

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3254,12 +3254,26 @@ half SPIRV_OVERLOADABLE SPIRV_BUILTIN(GroupNonUniformShuffle, _i32_f16_i32, )(in
32543254
}
32553255
#endif // defined(cl_khr_fp16)
32563256

3257+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, char, int, char, uint, i32, i8, i32)
3258+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, short, int, short, uint, i32, i16, i32)
3259+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, int, int, int, uint, i32, i32, i32)
3260+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, long, int, long, uint, i32, i64, i32)
3261+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, float, int, float, uint, i32, f32, i32)
3262+
#if defined(cl_khr_fp64)
3263+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, double, int, double, uint, i32, f64, i32)
3264+
#endif // defined(cl_khr_fp64)
3265+
#if defined(cl_khr_fp16)
3266+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffle, half, int, half, uint, i32, f16, i32)
3267+
#endif // defined(cl_khr_fp16)
3268+
32573269
#define DEFN_SUB_GROUP_SHUFFLE_XOR(TYPE, TYPE_ABBR) \
32583270
TYPE SPIRV_OVERLOADABLE SPIRV_BUILTIN(GroupNonUniformShuffleXor, _i32_##TYPE_ABBR##_i32, )(int Execution, TYPE x, uint c) \
32593271
{ \
32603272
c = get_sub_group_local_id() ^ c; \
32613273
return SPIRV_BUILTIN(GroupNonUniformShuffle, _i32_##TYPE_ABBR##_i32, )(Execution, x, c); \
3262-
}
3274+
} \
3275+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleXor, TYPE, int, TYPE, uint, i32, TYPE_ABBR, i32)
3276+
32633277

32643278
DEFN_SUB_GROUP_SHUFFLE_XOR(char, i8)
32653279
DEFN_SUB_GROUP_SHUFFLE_XOR(short, i16)
@@ -3377,6 +3391,19 @@ half SPIRV_OVERLOADABLE SPIRV_BUILTIN(GroupNonUniformShuffleDown, _i32_f16_i32,
33773391
}
33783392
#endif // defined(cl_khr_fp16)
33793393

3394+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, char, int, char, uint, i32, i8, i32)
3395+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, short, int, short, uint, i32, i16, i32)
3396+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, int, int, int, uint, i32, i32, i32)
3397+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, long, int, long, uint, i32, i64, i32)
3398+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, float, int, float, uint, i32, f32, i32)
3399+
#if defined(cl_khr_fp64)
3400+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, double, int, double, uint, i32, f64, i32)
3401+
#endif // defined(cl_khr_fp64)
3402+
#if defined(cl_khr_fp16)
3403+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleDown, half, int, half, uint, i32, f16, i32)
3404+
#endif // defined(cl_khr_fp16)
3405+
3406+
33803407
// Shuffle up functions
33813408
#define DEFN_NON_UNIFORM_SHUFFLE_UP(TYPE, TYPE_ABBR) \
33823409
TYPE SPIRV_OVERLOADABLE SPIRV_BUILTIN(GroupNonUniformShuffleUp, _i32_##TYPE_ABBR##_i32, )(int Execution, TYPE x, uint c) \
@@ -3390,7 +3417,8 @@ TYPE SPIRV_OVERLOADABLE SPIRV_BUILTIN(GroupNonUniformShuffleUp, _i32_##TYPE_ABBR
33903417
return intel_sub_group_shuffle_up((TYPE) 0, x, c); \
33913418
} \
33923419
return 0; \
3393-
}
3420+
} \
3421+
GENERATE_SPIRV_VECTOR_FUNCTIONS_3ARGS_SVS(GroupNonUniformShuffleUp, TYPE, int, TYPE, uint, i32, TYPE_ABBR, i32)
33943422

33953423
DEFN_NON_UNIFORM_SHUFFLE_UP(char, i8)
33963424
DEFN_NON_UNIFORM_SHUFFLE_UP(short, i16)

0 commit comments

Comments
 (0)