diff options
Diffstat (limited to 'src/gallium/drivers/radeonsi/glsl_tests/pack_unpack_half.glsl')
-rw-r--r-- | src/gallium/drivers/radeonsi/glsl_tests/pack_unpack_half.glsl | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/glsl_tests/pack_unpack_half.glsl b/src/gallium/drivers/radeonsi/glsl_tests/pack_unpack_half.glsl new file mode 100644 index 00000000000..d744d711360 --- /dev/null +++ b/src/gallium/drivers/radeonsi/glsl_tests/pack_unpack_half.glsl @@ -0,0 +1,37 @@ +; RUN: ./amdgcn_glslc %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s + +; We don't want any "v_and" or "v_or" here. v_cvt_f16 only writes the lower 16 bits. + +; FUNC-LABEL: {{^}}@packhalf: +; GCN: main +; GCN: v_interp_mov +; GCN: v_interp_mov +; GCN-NEXT: v_cvt_f16_f32 +; GCN-NEXT: v_lshlrev_b32 +; GCN-NEXT: v_cvt_f16_f32 +; GCN-NEXT: epilog + +#shader fs packhalf +#version 420 +flat in vec2 v; +out uvec4 o; +void main() { + o.x = packHalf2x16(v); +} + + +; FUNC-LABEL: {{^}}@unpackhalf: +; GCN: main +; GCN: v_interp_mov +; GCN-NEXT: v_cvt_f32_f16 +; GCN-NEXT: v_lshrrev_b32 +; GCN-NEXT: v_cvt_f32_f16 +; GCN-NEXT: epilog + +#shader fs unpackhalf +#version 420 +flat in uint u; +out vec4 o; +void main() { + o.xy = unpackHalf2x16(u); +} |