mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-11 22:44:04 +00:00
tint: Add f16 support for parts of float built-in, part 1
This patch add f16 support for a major part of numeric built-in, and implement corresponding unittests for resolver and backends. This patch also enable f16 constant evaluation for unary minus operator, `atan2` and `clamp`. The following numeric built-ins are not supported yet: * frexp * modf The end-to-end tests for f16 built-in are not added yet. Bug: tint:1473, tint:1502 Change-Id: If807185617b21c510a1a9c371179a60800c4f875 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/96722 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
65dcdcbad0
commit
6fe1f515d4
@@ -448,6 +448,8 @@ func SplitDisplayName(displayName string) []string {
|
||||
// If the type is not a composite type, then the fully qualified name is returned
|
||||
func ElementType(fqn sem.FullyQualifiedName) sem.FullyQualifiedName {
|
||||
switch fqn.Target.GetName() {
|
||||
case "vec2", "vec3", "vec4":
|
||||
return fqn.TemplateArguments[0].(sem.FullyQualifiedName)
|
||||
case "vec":
|
||||
return fqn.TemplateArguments[1].(sem.FullyQualifiedName)
|
||||
case "mat":
|
||||
@@ -462,12 +464,16 @@ func ElementType(fqn sem.FullyQualifiedName) sem.FullyQualifiedName {
|
||||
// fully qualified name.
|
||||
func DeepestElementType(fqn sem.FullyQualifiedName) sem.FullyQualifiedName {
|
||||
switch fqn.Target.GetName() {
|
||||
case "vec2", "vec3", "vec4":
|
||||
return fqn.TemplateArguments[0].(sem.FullyQualifiedName)
|
||||
case "vec":
|
||||
return fqn.TemplateArguments[1].(sem.FullyQualifiedName)
|
||||
case "mat":
|
||||
return DeepestElementType(fqn.TemplateArguments[2].(sem.FullyQualifiedName))
|
||||
case "array":
|
||||
return DeepestElementType(fqn.TemplateArguments[0].(sem.FullyQualifiedName))
|
||||
case "ptr":
|
||||
return DeepestElementType(fqn.TemplateArguments[1].(sem.FullyQualifiedName))
|
||||
}
|
||||
return fqn
|
||||
}
|
||||
@@ -489,7 +495,7 @@ func IsDeclarable(fqn sem.FullyQualifiedName) bool {
|
||||
}
|
||||
|
||||
// OverloadUsesF16 returns true if the overload uses the f16 type anywhere in the signature.
|
||||
func OverloadUsesF16(overload *sem.Overload, typename string) bool {
|
||||
func OverloadUsesF16(overload *sem.Overload) bool {
|
||||
for _, param := range overload.Parameters {
|
||||
if DeepestElementType(param.Type).Target.GetName() == "f16" {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user