Skip to content

Commit 2d3434d

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 37752d0 + 49d6777 commit 2d3434d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+2036
-604
lines changed

api/next/63405.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pkg crypto, func SignMessage(Signer, io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
2+
pkg crypto, type MessageSigner interface { Public, Sign, SignMessage } #63405
3+
pkg crypto, type MessageSigner interface, Public() PublicKey #63405
4+
pkg crypto, type MessageSigner interface, Sign(io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
5+
pkg crypto, type MessageSigner interface, SignMessage(io.Reader, []uint8, SignerOpts) ([]uint8, error) #63405
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[MessageSigner] is a new signing interface that can be implemented by signers that wish to hash the message to be signed themselves. A new function is also introduced, [SignMessage] which attempts to update a [Signer] interface to [MessageSigner], using the [MessageSigner.SignMessage] method if successful, and [Signer.Sign] if not. This can be used when code wishes to support both [Signer] and [MessageSigner].
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[CreateCertificate], [CreateCertificateRequest], and [CreateRevocationList] can now accept a [crypto.MessageSigner] signing interface as well as [crypto.Signer]. This allows these functions to use signers which implement "one-shot" signing interfaces, where hashing is done as part of the signing operation, instead of by the caller.

src/cmd/asm/internal/asm/testdata/loong64enc1.s

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -986,3 +986,21 @@ lable2:
986986
XVFRINTRMD X1, X2 // 22489d76
987987
XVFRINTF X1, X2 // 22349d76
988988
XVFRINTD X1, X2 // 22389d76
989+
990+
// [X]VF{ADD/SUB/MUL/DIV}.{S/D} instructions
991+
VADDF V1, V2, V3 // 43843071
992+
VADDD V1, V2, V3 // 43043171
993+
VSUBF V1, V2, V3 // 43843271
994+
VSUBD V1, V2, V3 // 43043371
995+
VMULF V1, V2, V3 // 43843871
996+
VMULD V1, V2, V3 // 43043971
997+
VDIVF V1, V2, V3 // 43843a71
998+
VDIVD V1, V2, V3 // 43043b71
999+
XVADDF X1, X2, X3 // 43843075
1000+
XVADDD X1, X2, X3 // 43043175
1001+
XVSUBF X1, X2, X3 // 43843275
1002+
XVSUBD X1, X2, X3 // 43043375
1003+
XVMULF X1, X2, X3 // 43843875
1004+
XVMULD X1, X2, X3 // 43043975
1005+
XVDIVF X1, X2, X3 // 43843a75
1006+
XVDIVD X1, X2, X3 // 43043b75

src/cmd/asm/internal/asm/testdata/riscv64.s

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,9 +438,9 @@ start:
438438
VSETVLI X10, E32, M2, TA, MA, X12 // 5776150d
439439
VSETVLI X10, E32, M4, TA, MA, X12 // 5776250d
440440
VSETVLI X10, E32, M8, TA, MA, X12 // 5776350d
441-
VSETVLI X10, E32, MF2, TA, MA, X12 // 5776550d
441+
VSETVLI X10, E32, MF8, TA, MA, X12 // 5776550d
442442
VSETVLI X10, E32, MF4, TA, MA, X12 // 5776650d
443-
VSETVLI X10, E32, MF8, TA, MA, X12 // 5776750d
443+
VSETVLI X10, E32, MF2, TA, MA, X12 // 5776750d
444444
VSETVLI X10, E32, M1, TA, MA, X12 // 5776050d
445445
VSETVLI $15, E32, M1, TA, MA, X12 // 57f607cd
446446
VSETIVLI $0, E32, M1, TA, MA, X12 // 577600cd
@@ -623,17 +623,27 @@ start:
623623
VADCVXM X11, V2, V0, V3 // d7c12540
624624
VADCVIM $15, V2, V0, V3 // d7b12740
625625
VMADCVVM V1, V2, V0, V3 // d7812044
626+
VMADCVVM V1, V2, V0, V0 // 57802044
626627
VMADCVXM X11, V2, V0, V3 // d7c12544
628+
VMADCVXM X11, V2, V0, V0 // 57c02544
627629
VMADCVIM $15, V2, V0, V3 // d7b12744
630+
VMADCVIM $15, V2, V0, V0 // 57b02744
628631
VMADCVV V1, V2, V3 // d7812046
632+
VMADCVV V1, V2, V0 // 57802046
629633
VMADCVX X11, V2, V3 // d7c12546
634+
VMADCVX X11, V2, V0 // 57c02546
630635
VMADCVI $15, V2, V3 // d7b12746
636+
VMADCVI $15, V2, V0 // 57b02746
631637
VSBCVVM V1, V2, V0, V3 // d7812048
632638
VSBCVXM X11, V2, V0, V3 // d7c12548
633639
VMSBCVVM V1, V2, V0, V3 // d781204c
640+
VMSBCVVM V1, V2, V0, V0 // 5780204c
634641
VMSBCVXM X11, V2, V0, V3 // d7c1254c
642+
VMSBCVXM X11, V2, V0, V0 // 57c0254c
635643
VMSBCVV V1, V2, V3 // d781204e
644+
VMSBCVV V1, V2, V0 // 5780204e
636645
VMSBCVX X11, V2, V3 // d7c1254e
646+
VMSBCVX X11, V2, V0 // 57c0254e
637647

638648
// 31.11.5: Vector Bitwise Logical Instructions
639649
VANDVV V1, V2, V3 // d7812026

src/cmd/asm/internal/asm/testdata/riscv64error.s

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,13 @@ TEXT errors(SB),$0
9595
VSEXTVF8 V2, V3, V4 // ERROR "invalid vector mask register"
9696
VADCVVM V1, V2, V4, V3 // ERROR "invalid vector mask register"
9797
VADCVVM V1, V2, V3 // ERROR "invalid vector mask register"
98+
VADCVVM V1, V2, V0, V0 // ERROR "invalid destination register V0"
9899
VADCVXM X10, V2, V4, V3 // ERROR "invalid vector mask register"
99100
VADCVXM X10, V2, V3 // ERROR "invalid vector mask register"
101+
VADCVXM X10, V2, V0, V0 // ERROR "invalid destination register V0"
100102
VADCVIM $15, V2, V1, V3 // ERROR "invalid vector mask register"
101103
VADCVIM $15, V2, V3 // ERROR "invalid vector mask register"
104+
VADCVIM $15, V2, V0, V0 // ERROR "invalid destination register V0"
102105
VMADCVVM V1, V2, V4, V3 // ERROR "invalid vector mask register"
103106
VMADCVVM V1, V2, V3 // ERROR "invalid vector mask register"
104107
VMADCVXM X10, V2, V4, V3 // ERROR "invalid vector mask register"
@@ -107,8 +110,10 @@ TEXT errors(SB),$0
107110
VMADCVIM $15, V2, V3 // ERROR "invalid vector mask register"
108111
VSBCVVM V1, V2, V4, V3 // ERROR "invalid vector mask register"
109112
VSBCVVM V1, V2, V3 // ERROR "invalid vector mask register"
113+
VSBCVVM V1, V2, V0, V0 // ERROR "invalid destination register V0"
110114
VSBCVXM X10, V2, V4, V3 // ERROR "invalid vector mask register"
111115
VSBCVXM X10, V2, V3 // ERROR "invalid vector mask register"
116+
VSBCVXM X10, V2, V0, V0 // ERROR "invalid destination register V0"
112117
VMSBCVVM V1, V2, V4, V3 // ERROR "invalid vector mask register"
113118
VMSBCVVM V1, V2, V3 // ERROR "invalid vector mask register"
114119
VMSBCVXM X10, V2, V4, V3 // ERROR "invalid vector mask register"
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright 2025 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+
/*
6+
The Unified IR (UIR) format is implicitly defined by the package noder.
7+
8+
At the highest level, a package encoded in UIR follows the grammar below.
9+
10+
File = Header Payload fingerprint .
11+
Header = version [ flags ] sectionEnds elementEnds .
12+
13+
version = uint32 . // used for backward compatibility
14+
flags = uint32 . // feature flags used across versions
15+
sectionEnds = [10]uint32 . // defines section boundaries
16+
elementEnds = []uint32 . // defines element boundaries
17+
fingerprint = [8]byte . // sha256 fingerprint
18+
19+
The payload has a structure as well. It is a series of sections, which
20+
contain elements of the same type. Go constructs are mapped onto
21+
(potentially multiple) elements. It is represented as below.
22+
23+
TODO(markfreeman): Update when we rename RelocFoo to SectionFoo.
24+
Payload = RelocString
25+
RelocMeta
26+
RelocPosBase
27+
RelocPkg
28+
RelocName
29+
RelocType
30+
RelocObj
31+
RelocObjExt
32+
RelocObjDict
33+
RelocBody
34+
.
35+
*/
36+
37+
package noder

src/cmd/compile/internal/ssa/phiopt.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,33 @@ func phiopt(f *Func) {
119119
continue
120120
}
121121
}
122+
// Replaces
123+
// if a { x = value } else { x = a } with x = a && value.
124+
// Requires that value dominates x.
125+
if v.Args[1-reverse] == b0.Controls[0] {
126+
if tmp := v.Args[reverse]; sdom.IsAncestorEq(tmp.Block, b) {
127+
v.reset(OpAndB)
128+
v.SetArgs2(b0.Controls[0], tmp)
129+
if f.pass.debug > 0 {
130+
f.Warnl(b.Pos, "converted OpPhi to %v", v.Op)
131+
}
132+
continue
133+
}
134+
}
135+
136+
// Replaces
137+
// if a { x = a } else { x = value } with x = a || value.
138+
// Requires that value dominates x.
139+
if v.Args[reverse] == b0.Controls[0] {
140+
if tmp := v.Args[1-reverse]; sdom.IsAncestorEq(tmp.Block, b) {
141+
v.reset(OpOrB)
142+
v.SetArgs2(b0.Controls[0], tmp)
143+
if f.pass.debug > 0 {
144+
f.Warnl(b.Pos, "converted OpPhi to %v", v.Op)
145+
}
146+
continue
147+
}
148+
}
122149
}
123150
}
124151
// strengthen phi optimization.

src/cmd/dist/build.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,6 @@ var gentab = []struct {
679679
file string
680680
gen func(dir, file string)
681681
}{
682-
{"go/build", "zcgo.go", mkzcgo},
683682
{"cmd/go/internal/cfg", "zdefaultcc.go", mkzdefaultcc},
684683
{"internal/runtime/sys", "zversion.go", mkzversion},
685684
{"time/tzdata", "zzipdata.go", mktzdata},

src/cmd/dist/buildgo.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package main
77
import (
88
"fmt"
99
"io"
10-
"os"
1110
"path/filepath"
1211
"sort"
1312
"strings"
@@ -108,22 +107,6 @@ func defaultCCFunc(name string, defaultcc map[string]string) string {
108107
return buf.String()
109108
}
110109

111-
// mkzcgo writes zcgo.go for the go/build package:
112-
//
113-
// package build
114-
// const defaultCGO_ENABLED = <CGO_ENABLED>
115-
//
116-
// It is invoked to write go/build/zcgo.go.
117-
func mkzcgo(dir, file string) {
118-
var buf strings.Builder
119-
writeHeader(&buf)
120-
fmt.Fprintf(&buf, "package build\n")
121-
fmt.Fprintln(&buf)
122-
fmt.Fprintf(&buf, "const defaultCGO_ENABLED = %s\n", quote(os.Getenv("CGO_ENABLED")))
123-
124-
writefile(buf.String(), file, writeSkipSame)
125-
}
126-
127110
// mktzdata src/time/tzdata/zzipdata.go:
128111
//
129112
// package tzdata

0 commit comments

Comments
 (0)