Source file src/simd/archsimd/_gen/specgen/specexpr/tracer.go

     1  // Copyright 2026 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package specexpr
     6  
     7  import (
     8  	"fmt"
     9  	"io"
    10  )
    11  
    12  type tracer struct {
    13  	w     io.Writer
    14  	level int
    15  }
    16  
    17  func (t *tracer) assign(expr Expr, v Variable, val any, err error) {
    18  	if t == nil {
    19  		return
    20  	}
    21  	fmt.Fprintf(t.w, "%*s├ %s => ", t.level, "", expr)
    22  	if err == nil {
    23  		fmt.Fprintf(t.w, "%s=%v\n", v, val)
    24  	} else {
    25  		fmt.Fprintf(t.w, "%s\n", err)
    26  	}
    27  }
    28  
    29  func (t *tracer) check(expr Expr, val any, err error) {
    30  	if t == nil {
    31  		return
    32  	}
    33  	if val == false || err != nil {
    34  		fmt.Fprintf(t.w, "%*s✘ %s", t.level, "", expr)
    35  		if err != nil {
    36  			fmt.Fprintf(t.w, " => %s", err)
    37  		}
    38  		fmt.Fprint(t.w, "\n")
    39  	} else {
    40  		fmt.Fprintf(t.w, "%*s│ %s\n", t.level, "", expr)
    41  	}
    42  }
    43  
    44  func (t *tracer) enter(v Variable, val any) {
    45  	if t == nil {
    46  		return
    47  	}
    48  	fmt.Fprintf(t.w, "%*s↳ %s=%v\n", t.level, "", v, val)
    49  	t.level += 4
    50  }
    51  
    52  func (t *tracer) exit() {
    53  	if t == nil {
    54  		return
    55  	}
    56  	t.level -= 4
    57  }
    58  
    59  func (t *tracer) sat() {
    60  	if t == nil {
    61  		return
    62  	}
    63  	fmt.Fprintf(t.w, "%*s✔ SAT\n", t.level, "")
    64  }
    65  

View as plain text