Skip to content

Commit

Permalink
Test more sign() variants
Browse files Browse the repository at this point in the history
  • Loading branch information
fornwall committed Sep 6, 2023
1 parent d16e605 commit f6a2a91
Show file tree
Hide file tree
Showing 6 changed files with 144 additions and 123 deletions.
5 changes: 4 additions & 1 deletion tests/in/math-functions.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ fn main() {
let d = radians(v);
let e = saturate(v);
let g = refract(v, v, f);
let h = sign(-1);
let sign_a = sign(-1);
let sign_b = sign(vec4(-1));
let sign_c = sign(-1.0);
let sign_d = sign(vec4(-1.0));
let const_dot = dot(vec2<i32>(), vec2<i32>());
let first_leading_bit_abs = firstLeadingBit(abs(0u));
let flb_a = firstLeadingBit(-1);
Expand Down
9 changes: 6 additions & 3 deletions tests/out/glsl/math-functions.main.Fragment.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ void main() {
vec4 d = radians(v);
vec4 e = clamp(v, vec4(0.0), vec4(1.0));
vec4 g = refract(v, v, 1.0);
int h = sign(-1);
int sign_a = sign(-1);
ivec4 sign_b = sign(ivec4(-1));
float sign_c = sign(-1.0);
vec4 sign_d = sign(vec4(-1.0));
int const_dot = ( + ivec2(0).x * ivec2(0).x + ivec2(0).y * ivec2(0).y);
uint first_leading_bit_abs = uint(findMSB(uint(abs(int(0u)))));
int flb_a = findMSB(-1);
Expand All @@ -82,8 +85,8 @@ void main() {
ivec2 ctz_h = ivec2(min(uvec2(findLSB(ivec2(1))), uvec2(32u)));
int clz_a = (-1 < 0 ? 0 : 31 - findMSB(-1));
uint clz_b = uint(31 - findMSB(1u));
ivec2 _e60 = ivec2(-1);
ivec2 clz_c = mix(ivec2(31) - findMSB(_e60), ivec2(0), lessThan(_e60, ivec2(0)));
ivec2 _e68 = ivec2(-1);
ivec2 clz_c = mix(ivec2(31) - findMSB(_e68), ivec2(0), lessThan(_e68, ivec2(0)));
uvec2 clz_d = uvec2(ivec2(31) - findMSB(uvec2(1u)));
float lde_a = ldexp(1.0, 2);
vec2 lde_b = ldexp(vec2(1.0, 2.0), ivec2(3, 4));
Expand Down
9 changes: 6 additions & 3 deletions tests/out/hlsl/math-functions.hlsl
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ void main()
float4 d = radians(v);
float4 e = saturate(v);
float4 g = refract(v, v, 1.0);
int h = sign(-1);
int sign_a = sign(-1);
int4 sign_b = sign((-1).xxxx);
float sign_c = sign(-1.0);
float4 sign_d = sign((-1.0).xxxx);
int const_dot = dot((int2)0, (int2)0);
uint first_leading_bit_abs = firstbithigh(abs(0u));
int flb_a = asint(firstbithigh(-1));
Expand All @@ -92,8 +95,8 @@ void main()
int2 ctz_h = asint(min((32u).xx, firstbitlow((1).xx)));
int clz_a = (-1 < 0 ? 0 : 31 - asint(firstbithigh(-1)));
uint clz_b = (31u - firstbithigh(1u));
int2 _expr60 = (-1).xx;
int2 clz_c = (_expr60 < (0).xx ? (0).xx : (31).xx - asint(firstbithigh(_expr60)));
int2 _expr68 = (-1).xx;
int2 clz_c = (_expr68 < (0).xx ? (0).xx : (31).xx - asint(firstbithigh(_expr68)));
uint2 clz_d = ((31u).xx - firstbithigh((1u).xx));
float lde_a = ldexp(1.0, 2);
float2 lde_b = ldexp(float2(1.0, 2.0), int2(3, 4));
Expand Down
17 changes: 10 additions & 7 deletions tests/out/msl/math-functions.msl
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,18 @@ fragment void main_(
metal::float4 d = ((v) * 0.017453292519943295474);
metal::float4 e = metal::saturate(v);
metal::float4 g = metal::refract(v, v, 1.0);
int h = naga_isign(-1);
int sign_a = naga_isign(-1);
metal::int4 sign_b = naga_isign(metal::int4(-1));
float sign_c = metal::sign(-1.0);
metal::float4 sign_d = metal::sign(metal::float4(-1.0));
int const_dot = ( + metal::int2 {}.x * metal::int2 {}.x + metal::int2 {}.y * metal::int2 {}.y);
uint _e15 = metal::abs(0u);
uint first_leading_bit_abs = metal::select(31 - metal::clz(_e15), uint(-1), _e15 == 0 || _e15 == -1);
uint _e23 = metal::abs(0u);
uint first_leading_bit_abs = metal::select(31 - metal::clz(_e23), uint(-1), _e23 == 0 || _e23 == -1);
int flb_a = metal::select(31 - metal::clz(metal::select(-1, ~-1, -1 < 0)), int(-1), -1 == 0 || -1 == -1);
metal::int2 _e20 = metal::int2(-1);
metal::int2 flb_b = metal::select(31 - metal::clz(metal::select(_e20, ~_e20, _e20 < 0)), int2(-1), _e20 == 0 || _e20 == -1);
metal::uint2 _e23 = metal::uint2(1u);
metal::uint2 flb_c = metal::select(31 - metal::clz(_e23), uint2(-1), _e23 == 0 || _e23 == -1);
metal::int2 _e28 = metal::int2(-1);
metal::int2 flb_b = metal::select(31 - metal::clz(metal::select(_e28, ~_e28, _e28 < 0)), int2(-1), _e28 == 0 || _e28 == -1);
metal::uint2 _e31 = metal::uint2(1u);
metal::uint2 flb_c = metal::select(31 - metal::clz(_e31), uint2(-1), _e31 == 0 || _e31 == -1);
int ftb_a = (((metal::ctz(-1) + 1) % 33) - 1);
uint ftb_b = (((metal::ctz(1u) + 1) % 33) - 1);
metal::int2 ftb_c = (((metal::ctz(metal::int2(-1)) + 1) % 33) - 1);
Expand Down
222 changes: 114 additions & 108 deletions tests/out/spv/math-functions.spvasm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.1
; Generator: rspirv
; Bound: 128
; Bound: 134
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
Expand Down Expand Up @@ -33,116 +33,122 @@ OpMemberDecorate %13 1 Offset 16
%17 = OpConstant %4 1.0
%18 = OpConstant %4 0.0
%19 = OpConstant %6 -1
%20 = OpConstantNull %5
%21 = OpTypeInt 32 0
%22 = OpConstant %21 0
%23 = OpConstant %21 1
%24 = OpConstant %6 0
%25 = OpConstant %21 4294967295
%26 = OpConstant %6 1
%27 = OpConstant %6 2
%28 = OpConstant %4 2.0
%29 = OpConstant %6 3
%30 = OpConstant %6 4
%31 = OpConstant %4 1.5
%39 = OpConstantComposite %3 %18 %18 %18 %18
%40 = OpConstantComposite %3 %17 %17 %17 %17
%44 = OpConstantNull %6
%57 = OpTypeVector %21 2
%67 = OpConstant %21 32
%77 = OpConstantComposite %57 %67 %67
%89 = OpConstant %6 31
%95 = OpConstantComposite %5 %89 %89
%20 = OpConstant %4 -1.0
%21 = OpConstantNull %5
%22 = OpTypeInt 32 0
%23 = OpConstant %22 0
%24 = OpConstant %22 1
%25 = OpConstant %6 0
%26 = OpConstant %22 4294967295
%27 = OpConstant %6 1
%28 = OpConstant %6 2
%29 = OpConstant %4 2.0
%30 = OpConstant %6 3
%31 = OpConstant %6 4
%32 = OpConstant %4 1.5
%40 = OpConstantComposite %3 %18 %18 %18 %18
%41 = OpConstantComposite %3 %17 %17 %17 %17
%50 = OpConstantNull %6
%63 = OpTypeVector %22 2
%73 = OpConstant %22 32
%83 = OpConstantComposite %63 %73 %73
%95 = OpConstant %6 31
%101 = OpConstantComposite %5 %95 %95
%15 = OpFunction %2 None %16
%14 = OpLabel
OpBranch %32
%32 = OpLabel
%33 = OpCompositeConstruct %3 %18 %18 %18 %18
%34 = OpExtInst %4 %1 Degrees %17
%35 = OpExtInst %4 %1 Radians %17
%36 = OpExtInst %3 %1 Degrees %33
%37 = OpExtInst %3 %1 Radians %33
%38 = OpExtInst %3 %1 FClamp %33 %39 %40
%41 = OpExtInst %3 %1 Refract %33 %33 %17
%42 = OpExtInst %6 %1 SSign %19
%45 = OpCompositeExtract %6 %20 0
%46 = OpCompositeExtract %6 %20 0
%47 = OpIMul %6 %45 %46
%48 = OpIAdd %6 %44 %47
%49 = OpCompositeExtract %6 %20 1
%50 = OpCompositeExtract %6 %20 1
%51 = OpIMul %6 %49 %50
%43 = OpIAdd %6 %48 %51
%52 = OpCopyObject %21 %22
%53 = OpExtInst %21 %1 FindUMsb %52
%54 = OpExtInst %6 %1 FindSMsb %19
%55 = OpCompositeConstruct %5 %19 %19
%56 = OpExtInst %5 %1 FindSMsb %55
%58 = OpCompositeConstruct %57 %23 %23
%59 = OpExtInst %57 %1 FindUMsb %58
%60 = OpExtInst %6 %1 FindILsb %19
%61 = OpExtInst %21 %1 FindILsb %23
%62 = OpCompositeConstruct %5 %19 %19
%63 = OpExtInst %5 %1 FindILsb %62
%64 = OpCompositeConstruct %57 %23 %23
%65 = OpExtInst %57 %1 FindILsb %64
%68 = OpExtInst %21 %1 FindILsb %22
%66 = OpExtInst %21 %1 UMin %67 %68
%70 = OpExtInst %6 %1 FindILsb %24
%69 = OpExtInst %6 %1 UMin %67 %70
%72 = OpExtInst %21 %1 FindILsb %25
%71 = OpExtInst %21 %1 UMin %67 %72
%74 = OpExtInst %6 %1 FindILsb %19
%73 = OpExtInst %6 %1 UMin %67 %74
%75 = OpCompositeConstruct %57 %22 %22
%78 = OpExtInst %57 %1 FindILsb %75
%76 = OpExtInst %57 %1 UMin %77 %78
%79 = OpCompositeConstruct %5 %24 %24
%81 = OpExtInst %5 %1 FindILsb %79
%80 = OpExtInst %5 %1 UMin %77 %81
%82 = OpCompositeConstruct %57 %23 %23
%84 = OpExtInst %57 %1 FindILsb %82
%83 = OpExtInst %57 %1 UMin %77 %84
%85 = OpCompositeConstruct %5 %26 %26
OpBranch %33
%33 = OpLabel
%34 = OpCompositeConstruct %3 %18 %18 %18 %18
%35 = OpExtInst %4 %1 Degrees %17
%36 = OpExtInst %4 %1 Radians %17
%37 = OpExtInst %3 %1 Degrees %34
%38 = OpExtInst %3 %1 Radians %34
%39 = OpExtInst %3 %1 FClamp %34 %40 %41
%42 = OpExtInst %3 %1 Refract %34 %34 %17
%43 = OpExtInst %6 %1 SSign %19
%44 = OpCompositeConstruct %12 %19 %19 %19 %19
%45 = OpExtInst %12 %1 SSign %44
%46 = OpExtInst %4 %1 FSign %20
%47 = OpCompositeConstruct %3 %20 %20 %20 %20
%48 = OpExtInst %3 %1 FSign %47
%51 = OpCompositeExtract %6 %21 0
%52 = OpCompositeExtract %6 %21 0
%53 = OpIMul %6 %51 %52
%54 = OpIAdd %6 %50 %53
%55 = OpCompositeExtract %6 %21 1
%56 = OpCompositeExtract %6 %21 1
%57 = OpIMul %6 %55 %56
%49 = OpIAdd %6 %54 %57
%58 = OpCopyObject %22 %23
%59 = OpExtInst %22 %1 FindUMsb %58
%60 = OpExtInst %6 %1 FindSMsb %19
%61 = OpCompositeConstruct %5 %19 %19
%62 = OpExtInst %5 %1 FindSMsb %61
%64 = OpCompositeConstruct %63 %24 %24
%65 = OpExtInst %63 %1 FindUMsb %64
%66 = OpExtInst %6 %1 FindILsb %19
%67 = OpExtInst %22 %1 FindILsb %24
%68 = OpCompositeConstruct %5 %19 %19
%69 = OpExtInst %5 %1 FindILsb %68
%70 = OpCompositeConstruct %63 %24 %24
%71 = OpExtInst %63 %1 FindILsb %70
%74 = OpExtInst %22 %1 FindILsb %23
%72 = OpExtInst %22 %1 UMin %73 %74
%76 = OpExtInst %6 %1 FindILsb %25
%75 = OpExtInst %6 %1 UMin %73 %76
%78 = OpExtInst %22 %1 FindILsb %26
%77 = OpExtInst %22 %1 UMin %73 %78
%80 = OpExtInst %6 %1 FindILsb %19
%79 = OpExtInst %6 %1 UMin %73 %80
%81 = OpCompositeConstruct %63 %23 %23
%84 = OpExtInst %63 %1 FindILsb %81
%82 = OpExtInst %63 %1 UMin %83 %84
%85 = OpCompositeConstruct %5 %25 %25
%87 = OpExtInst %5 %1 FindILsb %85
%86 = OpExtInst %5 %1 UMin %77 %87
%90 = OpExtInst %6 %1 FindUMsb %19
%88 = OpISub %6 %89 %90
%92 = OpExtInst %6 %1 FindUMsb %23
%91 = OpISub %21 %89 %92
%93 = OpCompositeConstruct %5 %19 %19
%96 = OpExtInst %5 %1 FindUMsb %93
%94 = OpISub %5 %95 %96
%97 = OpCompositeConstruct %57 %23 %23
%99 = OpExtInst %5 %1 FindUMsb %97
%98 = OpISub %57 %95 %99
%100 = OpExtInst %4 %1 Ldexp %17 %27
%101 = OpCompositeConstruct %7 %17 %28
%102 = OpCompositeConstruct %5 %29 %30
%103 = OpExtInst %7 %1 Ldexp %101 %102
%104 = OpExtInst %8 %1 ModfStruct %31
%105 = OpExtInst %8 %1 ModfStruct %31
%106 = OpCompositeExtract %4 %105 0
%107 = OpExtInst %8 %1 ModfStruct %31
%108 = OpCompositeExtract %4 %107 1
%109 = OpCompositeConstruct %7 %31 %31
%110 = OpExtInst %9 %1 ModfStruct %109
%111 = OpCompositeConstruct %3 %31 %31 %31 %31
%112 = OpExtInst %10 %1 ModfStruct %111
%113 = OpCompositeExtract %3 %112 1
%114 = OpCompositeExtract %4 %113 0
%115 = OpCompositeConstruct %7 %31 %31
%86 = OpExtInst %5 %1 UMin %83 %87
%88 = OpCompositeConstruct %63 %24 %24
%90 = OpExtInst %63 %1 FindILsb %88
%89 = OpExtInst %63 %1 UMin %83 %90
%91 = OpCompositeConstruct %5 %27 %27
%93 = OpExtInst %5 %1 FindILsb %91
%92 = OpExtInst %5 %1 UMin %83 %93
%96 = OpExtInst %6 %1 FindUMsb %19
%94 = OpISub %6 %95 %96
%98 = OpExtInst %6 %1 FindUMsb %24
%97 = OpISub %22 %95 %98
%99 = OpCompositeConstruct %5 %19 %19
%102 = OpExtInst %5 %1 FindUMsb %99
%100 = OpISub %5 %101 %102
%103 = OpCompositeConstruct %63 %24 %24
%105 = OpExtInst %5 %1 FindUMsb %103
%104 = OpISub %63 %101 %105
%106 = OpExtInst %4 %1 Ldexp %17 %28
%107 = OpCompositeConstruct %7 %17 %29
%108 = OpCompositeConstruct %5 %30 %31
%109 = OpExtInst %7 %1 Ldexp %107 %108
%110 = OpExtInst %8 %1 ModfStruct %32
%111 = OpExtInst %8 %1 ModfStruct %32
%112 = OpCompositeExtract %4 %111 0
%113 = OpExtInst %8 %1 ModfStruct %32
%114 = OpCompositeExtract %4 %113 1
%115 = OpCompositeConstruct %7 %32 %32
%116 = OpExtInst %9 %1 ModfStruct %115
%117 = OpCompositeExtract %7 %116 0
%118 = OpCompositeExtract %4 %117 1
%119 = OpExtInst %11 %1 FrexpStruct %31
%120 = OpExtInst %11 %1 FrexpStruct %31
%121 = OpCompositeExtract %4 %120 0
%122 = OpExtInst %11 %1 FrexpStruct %31
%123 = OpCompositeExtract %6 %122 1
%124 = OpCompositeConstruct %3 %31 %31 %31 %31
%125 = OpExtInst %13 %1 FrexpStruct %124
%126 = OpCompositeExtract %12 %125 1
%127 = OpCompositeExtract %6 %126 0
%117 = OpCompositeConstruct %3 %32 %32 %32 %32
%118 = OpExtInst %10 %1 ModfStruct %117
%119 = OpCompositeExtract %3 %118 1
%120 = OpCompositeExtract %4 %119 0
%121 = OpCompositeConstruct %7 %32 %32
%122 = OpExtInst %9 %1 ModfStruct %121
%123 = OpCompositeExtract %7 %122 0
%124 = OpCompositeExtract %4 %123 1
%125 = OpExtInst %11 %1 FrexpStruct %32
%126 = OpExtInst %11 %1 FrexpStruct %32
%127 = OpCompositeExtract %4 %126 0
%128 = OpExtInst %11 %1 FrexpStruct %32
%129 = OpCompositeExtract %6 %128 1
%130 = OpCompositeConstruct %3 %32 %32 %32 %32
%131 = OpExtInst %13 %1 FrexpStruct %130
%132 = OpCompositeExtract %12 %131 1
%133 = OpCompositeExtract %6 %132 0
OpReturn
OpFunctionEnd
5 changes: 4 additions & 1 deletion tests/out/wgsl/math-functions.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ fn main() {
let d = radians(v);
let e = saturate(v);
let g = refract(v, v, 1.0);
let h = sign(-1);
let sign_a = sign(-1);
let sign_b = sign(vec4<i32>(-1));
let sign_c = sign(-1.0);
let sign_d = sign(vec4<f32>(-1.0));
let const_dot = dot(vec2<i32>(), vec2<i32>());
let first_leading_bit_abs = firstLeadingBit(abs(0u));
let flb_a = firstLeadingBit(-1);
Expand Down

0 comments on commit f6a2a91

Please sign in to comment.