diff options
| author | Michael Munday <mike.munday@ibm.com> | 2018-04-03 15:49:06 +0100 |
|---|---|---|
| committer | Michael Munday <mike.munday@ibm.com> | 2018-04-03 16:08:04 +0000 |
| commit | 32e6461dc63b8f2577bbd9a08a5ad06ff91d173b (patch) | |
| tree | e36f522fc0c4c6e8e8efcc7b95340fd4c600af74 /src/math | |
| parent | 7dbf9d43f5a62a604ab3e6ceb1ee7ac4f3a80d80 (diff) | |
| download | go-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.s | 2 | ||||
| -rw-r--r-- | src/math/asinh_s390x.s | 6 | ||||
| -rw-r--r-- | src/math/atan2_s390x.s | 8 | ||||
| -rw-r--r-- | src/math/cbrt_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/cosh_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/erfc_s390x.s | 4 | ||||
| -rw-r--r-- | src/math/exp_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/expm1_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/log10_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/log_s390x.s | 6 | ||||
| -rw-r--r-- | src/math/pow_s390x.s | 18 | ||||
| -rw-r--r-- | src/math/sin_s390x.s | 4 | ||||
| -rw-r--r-- | src/math/sinh_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/tan_s390x.s | 2 | ||||
| -rw-r--r-- | src/math/tanh_s390x.s | 2 |
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 |
