From: Conor McCarthy cmccarthy@codeweavers.com
--- tests/hlsl/trigonometry.shader_test | 51 +++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+)
diff --git a/tests/hlsl/trigonometry.shader_test b/tests/hlsl/trigonometry.shader_test index 90eac333e..afe9157bc 100644 --- a/tests/hlsl/trigonometry.shader_test +++ b/tests/hlsl/trigonometry.shader_test @@ -74,3 +74,54 @@ float4 main() : sv_target uniform 0 float4 0.0 0.78539816 2.35619449 3.14159265 todo(sm<4) draw quad probe all rgba (0, 1000, -1000.0, 0) + + +[pixel shader todo] +uniform float4 a; + +float4 main() : sv_target +{ + return sinh(a); +} + +[test] +uniform 0 float4 -6.28318531 -0.88137359 0.88137359 6.28318531 +todo draw quad +probe all rgba (-267.744894, -1.0, 1.0, 267.744894) 2 +uniform 0 float4 -0.0 0.0 -90.0 90.0 +todo draw quad +probe all rgba (0.0, 0.0, -inf, inf) 1 + + +[pixel shader todo] +uniform float4 a; + +float4 main() : sv_target +{ + return cosh(a); +} + +[test] +uniform 0 float4 -1.76274717 -1.3169579 1.3169579 1.76274717 +todo draw quad +probe all rgba (3.0, 2.0, 2.0, 3.0) 2 +uniform 0 float4 -0.0 0.0 -90.0 90.0 +todo draw quad +probe all rgba (1.0, 1.0, inf, inf) 1 + + +[pixel shader todo] +uniform float4 a; + +float4 main() : sv_target +{ + return tanh(a); +} + +[test] +uniform 0 float4 -1.57079633 -0.54930614 0.54930614 1.57079633 +todo draw quad +probe all rgba (-0.91715234, -0.5, 0.5, 0.91715234) 2 +uniform 0 float4 -inf -0.0 0.0 inf +todo draw quad +probe all rgba (-1.0, 0.0, 0.0, 1.0) 1
From: Conor McCarthy cmccarthy@codeweavers.com
--- libs/vkd3d-shader/d3d_asm.c | 3 +++ libs/vkd3d-shader/dxil.c | 12 ++++++++++++ libs/vkd3d-shader/spirv.c | 6 ++++++ libs/vkd3d-shader/vkd3d_shader_private.h | 3 +++ tests/hlsl/trigonometry.shader_test | 12 ++++++------ 5 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/libs/vkd3d-shader/d3d_asm.c b/libs/vkd3d-shader/d3d_asm.c index dd96b7fa5..370a73443 100644 --- a/libs/vkd3d-shader/d3d_asm.c +++ b/libs/vkd3d-shader/d3d_asm.c @@ -168,10 +168,13 @@ static const char * const shader_opcode_names[] = [VKD3DSIH_GATHER4_S ] = "gather4_s", [VKD3DSIH_GEO ] = "ge", [VKD3DSIH_GEU ] = "ge_unord", + [VKD3DSIH_HCOS ] = "hcos", [VKD3DSIH_HS_CONTROL_POINT_PHASE ] = "hs_control_point_phase", [VKD3DSIH_HS_DECLS ] = "hs_decls", [VKD3DSIH_HS_FORK_PHASE ] = "hs_fork_phase", [VKD3DSIH_HS_JOIN_PHASE ] = "hs_join_phase", + [VKD3DSIH_HSIN ] = "hsin", + [VKD3DSIH_HTAN ] = "htan", [VKD3DSIH_IADD ] = "iadd", [VKD3DSIH_IBFE ] = "ibfe", [VKD3DSIH_IDIV ] = "idiv", diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index 3e1ba3911..9cceb7b73 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -338,6 +338,9 @@ enum dx_intrinsic_opcode DX_COS = 12, DX_SIN = 13, DX_TAN = 14, + DX_HCOS = 18, + DX_HSIN = 19, + DX_HTAN = 20, DX_EXP = 21, DX_FRC = 22, DX_LOG = 23, @@ -3528,6 +3531,12 @@ static enum vkd3d_shader_opcode map_dx_unary_op(enum dx_intrinsic_opcode op) return VKD3DSIH_ISFINITE; case DX_TAN: return VKD3DSIH_TAN; + case DX_HCOS: + return VKD3DSIH_HCOS; + case DX_HSIN: + return VKD3DSIH_HSIN; + case DX_HTAN: + return VKD3DSIH_HTAN; case DX_EXP: return VKD3DSIH_EXP; case DX_FRC: @@ -3975,6 +3984,9 @@ static const struct sm6_dx_opcode_info sm6_dx_op_table[] = [DX_FMIN ] = {"g", "RR", sm6_parser_emit_dx_binary}, [DX_FRC ] = {"g", "R", sm6_parser_emit_dx_unary}, [DX_IBFE ] = {"m", "iiR", sm6_parser_emit_dx_tertiary}, + [DX_HCOS ] = {"g", "R", sm6_parser_emit_dx_unary}, + [DX_HSIN ] = {"g", "R", sm6_parser_emit_dx_unary}, + [DX_HTAN ] = {"g", "R", sm6_parser_emit_dx_unary}, [DX_IMAX ] = {"m", "RR", sm6_parser_emit_dx_binary}, [DX_IMIN ] = {"m", "RR", sm6_parser_emit_dx_binary}, [DX_ISFINITE ] = {"1", "g", sm6_parser_emit_dx_unary}, diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index 298ad31d9..5ee263b7d 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -6977,6 +6977,9 @@ static enum GLSLstd450 spirv_compiler_map_ext_glsl_instruction( {VKD3DSIH_FIRSTBIT_LO, GLSLstd450FindILsb}, {VKD3DSIH_FIRSTBIT_SHI, GLSLstd450FindSMsb}, {VKD3DSIH_FRC, GLSLstd450Fract}, + {VKD3DSIH_HCOS, GLSLstd450Cosh}, + {VKD3DSIH_HSIN, GLSLstd450Sinh}, + {VKD3DSIH_HTAN, GLSLstd450Tanh}, {VKD3DSIH_IMAX, GLSLstd450SMax}, {VKD3DSIH_IMIN, GLSLstd450SMin}, {VKD3DSIH_LOG, GLSLstd450Log2}, @@ -9553,6 +9556,9 @@ static int spirv_compiler_handle_instruction(struct spirv_compiler *compiler, case VKD3DSIH_ISFINITE: spirv_compiler_emit_isfinite(compiler, instruction); break; + case VKD3DSIH_HCOS: + case VKD3DSIH_HSIN: + case VKD3DSIH_HTAN: case VKD3DSIH_DFMA: case VKD3DSIH_DMAX: case VKD3DSIH_DMIN: diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index e5f706e95..df4483c97 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -363,10 +363,13 @@ enum vkd3d_shader_opcode VKD3DSIH_GATHER4_S, VKD3DSIH_GEO, VKD3DSIH_GEU, + VKD3DSIH_HCOS, VKD3DSIH_HS_CONTROL_POINT_PHASE, VKD3DSIH_HS_DECLS, VKD3DSIH_HS_FORK_PHASE, VKD3DSIH_HS_JOIN_PHASE, + VKD3DSIH_HSIN, + VKD3DSIH_HTAN, VKD3DSIH_IADD, VKD3DSIH_IBFE, VKD3DSIH_IDIV, diff --git a/tests/hlsl/trigonometry.shader_test b/tests/hlsl/trigonometry.shader_test index afe9157bc..fd3a80893 100644 --- a/tests/hlsl/trigonometry.shader_test +++ b/tests/hlsl/trigonometry.shader_test @@ -86,10 +86,10 @@ float4 main() : sv_target
[test] uniform 0 float4 -6.28318531 -0.88137359 0.88137359 6.28318531 -todo draw quad +todo(sm<6) draw quad probe all rgba (-267.744894, -1.0, 1.0, 267.744894) 2 uniform 0 float4 -0.0 0.0 -90.0 90.0 -todo draw quad +todo(sm<6) draw quad probe all rgba (0.0, 0.0, -inf, inf) 1
@@ -103,10 +103,10 @@ float4 main() : sv_target
[test] uniform 0 float4 -1.76274717 -1.3169579 1.3169579 1.76274717 -todo draw quad +todo(sm<6) draw quad probe all rgba (3.0, 2.0, 2.0, 3.0) 2 uniform 0 float4 -0.0 0.0 -90.0 90.0 -todo draw quad +todo(sm<6) draw quad probe all rgba (1.0, 1.0, inf, inf) 1
@@ -120,8 +120,8 @@ float4 main() : sv_target
[test] uniform 0 float4 -1.57079633 -0.54930614 0.54930614 1.57079633 -todo draw quad +todo(sm<6) draw quad probe all rgba (-0.91715234, -0.5, 0.5, 0.91715234) 2 uniform 0 float4 -inf -0.0 0.0 inf -todo draw quad +todo(sm<6) draw quad probe all rgba (-1.0, 0.0, 0.0, 1.0) 1