mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
![Keith Randall](/assets/img/avatar_default.png)
When loading multiple elements of an array into a single register, make sure we treat them as unsigned. When treated as signed, the upper bits might all be set, causing the shift-or combo to clobber the values higher in the register. Fixes #23719. Change-Id: Ic87da03e9bd0fe2c60bb214b99f846e4e9446052 Reviewed-on: https://go-review.googlesource.com/92335 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ilya Tocar <ilya.tocar@intel.com>
43 lines
826 B
Go
43 lines
826 B
Go
// run
|
|
|
|
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
func main() {
|
|
v1 := [2]int32{-1, 88}
|
|
v2 := [2]int32{-1, 99}
|
|
if v1 == v2 {
|
|
panic("bad comparison")
|
|
}
|
|
|
|
w1 := [2]int16{-1, 88}
|
|
w2 := [2]int16{-1, 99}
|
|
if w1 == w2 {
|
|
panic("bad comparison")
|
|
}
|
|
x1 := [4]int16{-1, 88, 88, 88}
|
|
x2 := [4]int16{-1, 99, 99, 99}
|
|
if x1 == x2 {
|
|
panic("bad comparison")
|
|
}
|
|
|
|
a1 := [2]int8{-1, 88}
|
|
a2 := [2]int8{-1, 99}
|
|
if a1 == a2 {
|
|
panic("bad comparison")
|
|
}
|
|
b1 := [4]int8{-1, 88, 88, 88}
|
|
b2 := [4]int8{-1, 99, 99, 99}
|
|
if b1 == b2 {
|
|
panic("bad comparison")
|
|
}
|
|
c1 := [8]int8{-1, 88, 88, 88, 88, 88, 88, 88}
|
|
c2 := [8]int8{-1, 99, 99, 99, 99, 99, 99, 99}
|
|
if c1 == c2 {
|
|
panic("bad comparison")
|
|
}
|
|
}
|