build: add attributes argument to TEXT

Brings the TEXT() function signature closer to how the directive works
in assembly.

Also update almost all examples to use NOSPLIT.

Closes #11
This commit is contained in:
Michael McLoughlin
2019-01-06 20:04:51 -08:00
parent 76db5bb03f
commit 304c7425d2
25 changed files with 105 additions and 72 deletions

View File

@@ -10,7 +10,7 @@ import (
func main() {
Package("github.com/mmcloughlin/avo/examples/returns")
TEXT("Interval", "func(start, size uint64) (uint64, uint64)")
TEXT("Interval", NOSPLIT, "func(start, size uint64) (uint64, uint64)")
Doc(
"Interval returns the (start, end) of an interval with the given start and size.",
"Demonstrates multiple unnamed return values.",
@@ -23,7 +23,7 @@ func main() {
Store(end, ReturnIndex(1))
RET()
TEXT("Butterfly", "func(x0, x1 float64) (y0, y1 float64)")
TEXT("Butterfly", NOSPLIT, "func(x0, x1 float64) (y0, y1 float64)")
Doc(
"Butterfly performs a 2-dimensional butterfly operation: computes (x0+x1, x0-x1).",
"Demonstrates multiple named return values.",
@@ -39,7 +39,7 @@ func main() {
Store(y1, Return("y1"))
RET()
TEXT("Septuple", "func(byte) [7]byte")
TEXT("Septuple", NOSPLIT, "func(byte) [7]byte")
Doc(
"Septuple returns an array of seven of the given byte.",
"Demonstrates returning array values.",
@@ -50,7 +50,7 @@ func main() {
}
RET()
TEXT("CriticalLine", "func(t float64) complex128")
TEXT("CriticalLine", NOSPLIT, "func(t float64) complex128")
Doc(
"CriticalLine returns the complex value 0.5 + it on Riemann's critical line.",
"Demonstrates returning complex values.",
@@ -62,7 +62,7 @@ func main() {
Store(t, ReturnIndex(0).Imag())
RET()
TEXT("NewStruct", "func(w uint16, p [2]float64, q uint64) Struct")
TEXT("NewStruct", NOSPLIT, "func(w uint16, p [2]float64, q uint64) Struct")
Doc(
"NewStruct initializes a Struct value.",
"Demonstrates returning struct values.",

View File

@@ -3,7 +3,7 @@
#include "textflag.h"
// func Interval(start uint64, size uint64) (uint64, uint64)
TEXT ·Interval(SB), $0-32
TEXT ·Interval(SB), NOSPLIT, $0-32
MOVQ start(FP), AX
MOVQ size+8(FP), CX
ADDQ AX, CX
@@ -12,7 +12,7 @@ TEXT ·Interval(SB), $0-32
RET
// func Butterfly(x0 float64, x1 float64) (y0 float64, y1 float64)
TEXT ·Butterfly(SB), $0-32
TEXT ·Butterfly(SB), NOSPLIT, $0-32
MOVSD x0(FP), X0
MOVSD x1+8(FP), X1
MOVSD X0, X2
@@ -24,7 +24,7 @@ TEXT ·Butterfly(SB), $0-32
RET
// func Septuple(byte) [7]byte
TEXT ·Septuple(SB), $0-15
TEXT ·Septuple(SB), NOSPLIT, $0-15
MOVB arg(FP), AL
MOVB AL, ret_0+8(FP)
MOVB AL, ret_1+9(FP)
@@ -36,7 +36,7 @@ TEXT ·Septuple(SB), $0-15
RET
// func CriticalLine(t float64) complex128
TEXT ·CriticalLine(SB), $0-24
TEXT ·CriticalLine(SB), NOSPLIT, $0-24
MOVSD t(FP), X0
MOVSD half<>(SB), X1
MOVSD X1, ret_real+8(FP)
@@ -47,7 +47,7 @@ DATA half<>(SB)/8, $(0.5)
GLOBL half<>(SB), RODATA|NOPTR, $8
// func NewStruct(w uint16, p [2]float64, q uint64) Struct
TEXT ·NewStruct(SB), $0-64
TEXT ·NewStruct(SB), NOSPLIT, $0-64
MOVW w(FP), AX
MOVSD p_0+8(FP), X0
MOVSD p_1+16(FP), X1