]> Cypherpunks repositories - gostls13.git/commitdiff
test/codegen: port floats tests to codegen
authorAlberto Donizetti <alb.donizetti@gmail.com>
Thu, 15 Mar 2018 10:15:22 +0000 (11:15 +0100)
committerAlberto Donizetti <alb.donizetti@gmail.com>
Thu, 15 Mar 2018 18:05:59 +0000 (18:05 +0000)
And delete them from asm_test.

Change-Id: Ibdaca3496eefc73c731b511ddb9636a1f3dff68c
Reviewed-on: https://go-review.googlesource.com/100915
Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
src/cmd/compile/internal/gc/asm_test.go
test/codegen/arithmetic.go
test/codegen/floats.go [new file with mode: 0644]

index ced465c65d78edf7079645684695546a0266e90b..29033db7ee247c379a4b5b21a321ed64136b2415 100644 (file)
@@ -410,35 +410,6 @@ var linuxAMD64Tests = []*asmTest{
                }`,
                pos: []string{"\tADDQ\t[A-Z]"},
        },
-       // Floating-point strength reduction
-       {
-               fn: `
-               func f60(f float64) float64 {
-                       return f * 2.0
-               }`,
-               pos: []string{"\tADDSD\t"},
-       },
-       {
-               fn: `
-               func f62(f float64) float64 {
-                       return f / 16.0
-               }`,
-               pos: []string{"\tMULSD\t"},
-       },
-       {
-               fn: `
-               func f63(f float64) float64 {
-                       return f / 0.125
-               }`,
-               pos: []string{"\tMULSD\t"},
-       },
-       {
-               fn: `
-               func f64(f float64) float64 {
-                       return f / 0.5
-               }`,
-               pos: []string{"\tADDSD\t"},
-       },
        // Check that compare to constant string uses 2/4/8 byte compares
        {
                fn: `
@@ -634,39 +605,6 @@ var linux386Tests = []*asmTest{
 }
 
 var linuxS390XTests = []*asmTest{
-       // Fused multiply-add/sub instructions.
-       {
-               fn: `
-               func f14(x, y, z float64) float64 {
-                       return x * y + z
-               }
-               `,
-               pos: []string{"\tFMADD\t"},
-       },
-       {
-               fn: `
-               func f15(x, y, z float64) float64 {
-                       return x * y - z
-               }
-               `,
-               pos: []string{"\tFMSUB\t"},
-       },
-       {
-               fn: `
-               func f16(x, y, z float32) float32 {
-                       return x * y + z
-               }
-               `,
-               pos: []string{"\tFMADDS\t"},
-       },
-       {
-               fn: `
-               func f17(x, y, z float32) float32 {
-                       return x * y - z
-               }
-               `,
-               pos: []string{"\tFMSUBS\t"},
-       },
        {
                // check that stack store is optimized away
                fn: `
@@ -1113,39 +1051,6 @@ var linuxMIPS64Tests = []*asmTest{
 }
 
 var linuxPPC64LETests = []*asmTest{
-       // Fused multiply-add/sub instructions.
-       {
-               fn: `
-               func f0(x, y, z float64) float64 {
-                       return x * y + z
-               }
-               `,
-               pos: []string{"\tFMADD\t"},
-       },
-       {
-               fn: `
-               func f1(x, y, z float64) float64 {
-                       return x * y - z
-               }
-               `,
-               pos: []string{"\tFMSUB\t"},
-       },
-       {
-               fn: `
-               func f2(x, y, z float32) float32 {
-                       return x * y + z
-               }
-               `,
-               pos: []string{"\tFMADDS\t"},
-       },
-       {
-               fn: `
-               func f3(x, y, z float32) float32 {
-                       return x * y - z
-               }
-               `,
-               pos: []string{"\tFMSUBS\t"},
-       },
        {
                // check that stack store is optimized away
                fn: `
index 16517cfac423c9f6d18be31d60e05bdee9cf84a0..0cd4d2ee232cecf38715acab26ce5e3573a7775f 100644 (file)
@@ -7,7 +7,8 @@
 package codegen
 
 // This file contains codegen tests related to arithmetic
-// simplifications/optimizations.
+// simplifications and optimizations on integer types.
+// For codegen tests on float types, see floats.go.
 
 // -------------------- //
 //    Multiplication    //
diff --git a/test/codegen/floats.go b/test/codegen/floats.go
new file mode 100644 (file)
index 0000000..e397518
--- /dev/null
@@ -0,0 +1,73 @@
+// asmcheck
+
+// 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 codegen
+
+// This file contains codegen tests related to arithmetic
+// simplifications and optimizations on float types.
+// For codegen tests on integer types, see arithmetic.go.
+
+// --------------------- //
+//    Strength-reduce    //
+// --------------------- //
+
+func Mul2(f float64) float64 {
+       // 386:"ADDSD",-"MULSD"
+       // amd64:"ADDSD",-"MULSD"
+       // arm:"ADDD",-"MULD"
+       // arm64:"FADDD",-"FMULD"
+       return f * 2.0
+}
+
+func DivPow2(f1, f2, f3 float64) (float64, float64, float64) {
+       // 386:"MULSD",-"DIVSD"
+       // amd64:"MULSD",-"DIVSD"
+       // arm:"MULD",-"DIVD"
+       // arm64:"FMULD",-"FDIVD"
+       x := f1 / 16.0
+
+       // 386:"MULSD",-"DIVSD"
+       // amd64:"MULSD",-"DIVSD"
+       // arm:"MULD",-"DIVD"
+       // arm64:"FMULD",-"FDIVD"
+       y := f2 / 0.125
+
+       // 386:"ADDSD",-"DIVSD",-"MULSD"
+       // amd64:"ADDSD",-"DIVSD",-"MULSD"
+       // arm:"ADDD",-"MULD",-"DIVD"
+       // arm64:"FADDD",-"FMULD",-"FDIVD"
+       z := f3 / 0.5
+
+       return x, y, z
+}
+
+// ----------- //
+//    Fused    //
+// ----------- //
+
+func FusedAdd32(x, y, z float32) float32 {
+       // s390x:"FMADDS\t"
+       // ppc64le:"FMADDS\t"
+       return x*y + z
+}
+
+func FusedSub32(x, y, z float32) float32 {
+       // s390x:"FMSUBS\t"
+       // ppc64le:"FMSUBS\t"
+       return x*y - z
+}
+
+func FusedAdd64(x, y, z float64) float64 {
+       // s390x:"FMADD\t"
+       // ppc64le:"FMADD\t"
+       return x*y + z
+}
+
+func FusedSub64(x, y, z float64) float64 {
+       // s390x:"FMSUB\t"
+       // ppc64le:"FMSUB\t"
+       return x*y - z
+}