aboutsummaryrefslogtreecommitdiff
path: root/src/math
diff options
context:
space:
mode:
authorMichael Munday <mike.munday@ibm.com>2018-04-03 15:49:06 +0100
committerMichael Munday <mike.munday@ibm.com>2018-04-03 16:08:04 +0000
commit32e6461dc63b8f2577bbd9a08a5ad06ff91d173b (patch)
treee36f522fc0c4c6e8e8efcc7b95340fd4c600af74 /src/math
parent7dbf9d43f5a62a604ab3e6ceb1ee7ac4f3a80d80 (diff)
downloadgo-32e6461dc63b8f2577bbd9a08a5ad06ff91d173b.tar.xz
cmd/asm, math: add s390x floating point test instructions
Floating point test instructions allow special cases (NaN, ±∞ and a few other useful properties) to be checked directly. This CL adds the following instructions to the assembler: * LTEBR - load and test (float32) * LTDBR - load and test (float64) * TCEB - test data class (float32) * TCDB - test data class (float64) Note that I have only added immediate versions of the 'test data class' instructions for now as that's the only case I think the compiler will use. Change-Id: I3398aab2b3a758bf909bd158042234030c8af582 Reviewed-on: https://go-review.googlesource.com/104457 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Michael Munday <mike.munday@ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/math')
-rw-r--r--src/math/acosh_s390x.s2
-rw-r--r--src/math/asinh_s390x.s6
-rw-r--r--src/math/atan2_s390x.s8
-rw-r--r--src/math/cbrt_s390x.s2
-rw-r--r--src/math/cosh_s390x.s2
-rw-r--r--src/math/erfc_s390x.s4
-rw-r--r--src/math/exp_s390x.s2
-rw-r--r--src/math/expm1_s390x.s2
-rw-r--r--src/math/log10_s390x.s2
-rw-r--r--src/math/log_s390x.s6
-rw-r--r--src/math/pow_s390x.s18
-rw-r--r--src/math/sin_s390x.s4
-rw-r--r--src/math/sinh_s390x.s2
-rw-r--r--src/math/tan_s390x.s2
-rw-r--r--src/math/tanh_s390x.s2
15 files changed, 32 insertions, 32 deletions
diff --git a/src/math/acosh_s390x.s b/src/math/acosh_s390x.s
index e120285c3d..3575ed6394 100644
--- a/src/math/acosh_s390x.s
+++ b/src/math/acosh_s390x.s
@@ -146,7 +146,7 @@ L10:
FMOVD F0, F8
FMOVD 0(R9), F0
FMADD F8, F8, F0
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
FSQRT F0, F10
L4:
WFADB V10, V8, V0
diff --git a/src/math/asinh_s390x.s b/src/math/asinh_s390x.s
index 870a64a7a0..a9cee342d3 100644
--- a/src/math/asinh_s390x.s
+++ b/src/math/asinh_s390x.s
@@ -84,7 +84,7 @@ L3:
BYTE $0xFF
CMPW R1, R2
BGT L1
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
FMOVD F0, F10
BLTU L15
L9:
@@ -120,13 +120,13 @@ L1:
FMOVD F0, ret+8(FP)
RET
L14:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L17
FMOVD F0, F10
L4:
FMOVD 192(R9), F2
WFMADB V0, V0, V2, V0
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
FSQRT F0, F8
L5:
WFADB V8, V10, V0
diff --git a/src/math/atan2_s390x.s b/src/math/atan2_s390x.s
index 5d90d488fc..f37555b07f 100644
--- a/src/math/atan2_s390x.s
+++ b/src/math/atan2_s390x.s
@@ -212,10 +212,10 @@ L3:
WFMADB V4, V1, V3, V4
BLT L18
BGT L7
- WORD $0xB3120022 //ltdbr %f2,%f2
+ LTDBR F2, F2
BLTU L21
L8:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L22
L9:
WFCHDBS V2, V0, V0
@@ -238,11 +238,11 @@ L1:
RET
L20:
- WORD $0xB3120022 //ltdbr %f2,%f2
+ LTDBR F2, F2
BLTU L23
FMOVD F2, F6
L4:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L24
FMOVD F0, F4
L5:
diff --git a/src/math/cbrt_s390x.s b/src/math/cbrt_s390x.s
index 20d9fe6f55..85a2fcb576 100644
--- a/src/math/cbrt_s390x.s
+++ b/src/math/cbrt_s390x.s
@@ -96,7 +96,7 @@ L1:
RET
L3:
L2:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BEQ L1
FMOVD F0, F2
WORD $0xED209040 //mdb %f2,.L10-.L9(%r9)
diff --git a/src/math/cosh_s390x.s b/src/math/cosh_s390x.s
index 343ae22e7d..5e7a8d88cc 100644
--- a/src/math/cosh_s390x.s
+++ b/src/math/cosh_s390x.s
@@ -64,7 +64,7 @@ GLOBL coshe6<>+0(SB), RODATA, $8
TEXT ·coshAsm(SB),NOSPLIT,$0-16
FMOVD x+0(FP), F0
MOVD $coshrodataL23<>+0(SB), R9
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
MOVD $0x4086000000000000, R2
MOVD $0x4086000000000000, R3
BLTU L19
diff --git a/src/math/erfc_s390x.s b/src/math/erfc_s390x.s
index edf51440a5..1a867ad9f4 100644
--- a/src/math/erfc_s390x.s
+++ b/src/math/erfc_s390x.s
@@ -166,7 +166,7 @@ TEXT ·erfcAsm(SB), NOSPLIT, $0-16
RET
L2:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
MOVH $0x0, R4
BLTU L3
FMOVD F0, F1
@@ -264,7 +264,7 @@ L1:
FMOVD F2, ret+8(FP)
RET
L3:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L30
FMOVD 568(R9), F2
WFSDB V0, V2, V0
diff --git a/src/math/exp_s390x.s b/src/math/exp_s390x.s
index dac0a5cd9b..613ec24136 100644
--- a/src/math/exp_s390x.s
+++ b/src/math/exp_s390x.s
@@ -59,7 +59,7 @@ GLOBL ·exptexp<> + 0(SB), RODATA, $128
TEXT ·expAsm(SB), NOSPLIT, $0-16
FMOVD x+0(FP), F0
MOVD $·exprodataL22<>+0(SB), R5
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L20
FMOVD F0, F2
L2:
diff --git a/src/math/expm1_s390x.s b/src/math/expm1_s390x.s
index 641b2a893d..22e5eb16a9 100644
--- a/src/math/expm1_s390x.s
+++ b/src/math/expm1_s390x.s
@@ -64,7 +64,7 @@ GLOBL ·expm1tab<> + 0(SB), RODATA, $128
TEXT ·expm1Asm(SB), NOSPLIT, $0-16
FMOVD x+0(FP), F0
MOVD $·expm1rodataL22<>+0(SB), R5
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L20
FMOVD F0, F2
L2:
diff --git a/src/math/log10_s390x.s b/src/math/log10_s390x.s
index edbc181bc9..d6b750065b 100644
--- a/src/math/log10_s390x.s
+++ b/src/math/log10_s390x.s
@@ -87,7 +87,7 @@ L1:
RET
L2:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLEU L13
WORD $0xED009080 //mdb %f0,.L20-.L19(%r9)
BYTE $0x00
diff --git a/src/math/log_s390x.s b/src/math/log_s390x.s
index b0e193f594..3e24ca79bb 100644
--- a/src/math/log_s390x.s
+++ b/src/math/log_s390x.s
@@ -79,7 +79,7 @@ TEXT ·logAsm(SB), NOSPLIT, $0-16
BYTE $0x59
MOVW R1, R7
CMPBGT R7, $22, L17
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
MOVD $·logx43f<>+0(SB), R1
FMOVD 0(R1), F2
BLEU L3
@@ -87,7 +87,7 @@ TEXT ·logAsm(SB), NOSPLIT, $0-16
MOVH $0x8405, R0
BR L15
L7:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLEU L3
L15:
FMUL F2, F0
@@ -161,7 +161,7 @@ L1:
FMOVD F0, ret+8(FP)
RET
L3:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BEQ L20
BGE L1
BVS L1
diff --git a/src/math/pow_s390x.s b/src/math/pow_s390x.s
index fa8decb806..fd19617561 100644
--- a/src/math/pow_s390x.s
+++ b/src/math/pow_s390x.s
@@ -426,7 +426,7 @@ L1:
FMOVD F1, ret+16(FP)
RET
L43:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L44
FMOVD F0, F3
L7:
@@ -438,7 +438,7 @@ L7:
L8:
WFCEDBS V2, V2, V3
BVS L9
- WORD $0xB3120022 //ltdbr %f2,%f2
+ LTDBR F2, F2
BEQ L26
MOVW R1, R6
CMPBLT R6, $0, L45
@@ -469,7 +469,7 @@ L11:
BYTE $0x1C
BR L1
L42:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L46
FMOVD F0, F4
L3:
@@ -534,7 +534,7 @@ L26:
L34:
FMOVD 8(R9), F4
L19:
- WORD $0xB3120066 //ltdbr %f6,%f6
+ LTDBR F6, F6
BLEU L47
L18:
WFMDB V4, V5, V1
@@ -552,7 +552,7 @@ L5:
L45:
WFCEDBS V0, V0, V4
BVS L35
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLEU L48
FMOVD 8(R9), F4
L12:
@@ -576,7 +576,7 @@ L48:
BYTE $0x59
MOVW R1, R6
CMPBEQ R6, $0, L29
- WORD $0xB3120022 //ltdbr %f2,%f2
+ LTDBR F2, F2
BLTU L50
FMOVD F2, F4
L14:
@@ -588,11 +588,11 @@ L14:
FSUB F7, F3
WFCEDBS V4, V3, V3
BEQ L15
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
FMOVD 8(R9), F4
BNE L16
L13:
- WORD $0xB3120022 //ltdbr %f2,%f2
+ LTDBR F2, F2
BLT L18
L40:
FMOVD $0, F0
@@ -615,7 +615,7 @@ L15:
BEQ L32
FMOVD 0(R9), F4
L17:
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BNE L12
BR L13
L32:
diff --git a/src/math/sin_s390x.s b/src/math/sin_s390x.s
index e2201e0b2c..7eb2206ca9 100644
--- a/src/math/sin_s390x.s
+++ b/src/math/sin_s390x.s
@@ -69,7 +69,7 @@ TEXT ·sinAsm(SB),NOSPLIT,$0-16
FMOVD $(0.0), F1
FCMPU F0, F1
BEQ sinIsZero
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L17
FMOVD F0, F5
L2:
@@ -219,7 +219,7 @@ sinIsZero:
TEXT ·cosAsm(SB),NOSPLIT,$0-16
FMOVD x+0(FP), F0
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L35
FMOVD F0, F1
L21:
diff --git a/src/math/sinh_s390x.s b/src/math/sinh_s390x.s
index aa494de19a..bad2e218f8 100644
--- a/src/math/sinh_s390x.s
+++ b/src/math/sinh_s390x.s
@@ -69,7 +69,7 @@ TEXT ·sinhAsm(SB),NOSPLIT,$0-16
BGT sinhIsInf
MOVD $sinhrodataL21<>+0(SB), R5
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
MOVD sinhxinit<>+0(SB), R1
FMOVD F0, F4
MOVD R1, R3
diff --git a/src/math/tan_s390x.s b/src/math/tan_s390x.s
index c03b24033b..7b05ba053e 100644
--- a/src/math/tan_s390x.s
+++ b/src/math/tan_s390x.s
@@ -44,7 +44,7 @@ TEXT ·tanAsm(SB), NOSPLIT, $0-16
BEQ atanIsZero
MOVD $·tanrodataL13<>+0(SB), R5
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
BLTU L10
FMOVD F0, F2
L2:
diff --git a/src/math/tanh_s390x.s b/src/math/tanh_s390x.s
index 026d989bd6..456ed623ee 100644
--- a/src/math/tanh_s390x.s
+++ b/src/math/tanh_s390x.s
@@ -64,7 +64,7 @@ TEXT ·tanhAsm(SB),NOSPLIT,$0-16
FCMPU F0, F1
BEQ tanhIsZero
MOVD $tanhrodataL18<>+0(SB), R5
- WORD $0xB3120000 //ltdbr %f0,%f0
+ LTDBR F0, F0
MOVD $0x4034000000000000, R1
BLTU L15
FMOVD F0, F1