Bug 306098

Summary: s390x: alternate opcode form for convert to/from fixed
Product: [Developer tools] valgrind Reporter: Florian Krohm <flo2030>
Component: vexAssignee: Julian Seward <jseward>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version First Reported In: 3.9.0.SVN   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Florian Krohm 2012-08-31 17:32:09 UTC
Beginning with z196:

convert to fixed
- additional m4 field
- issue an emulation warning when m4 is != 0

convert from fixed
- alternate form that has an m3 and also an m4 field
- issue an emulation warning when m4 is != 0
- properly handle m3 (rounding mode)
Comment 1 Florian Krohm 2012-09-02 14:23:05 UTC
"load rounded" also has an alternate form
Issue emulation warning if m3 != 0 and host does not have floating point extension
and continue with m3 == 0.  This may or may ot work out but it's better to continue executing than terminating the process.
Comment 2 Florian Krohm 2012-09-02 18:15:31 UTC
VEX r2501 and valgrind r12935 have been checked in.

We still need testcases for these opcodes similar to none/tests/s390x/fpext.c
- convert from fixed
- convert to fixed
- load rounded

It is sufficient for now to check with m3 = 0.

I'll leave this bug as unresolved and unannounced in NEWS until we have such a testcase.
Comment 3 Florian Krohm 2012-09-05 13:39:28 UTC
(In reply to comment #2)
> 
> We still need testcases for these opcodes similar to none/tests/s390x/fpext.c
> - convert from fixed
> - convert to fixed
> - load rounded

"convert to fixed" is already covered in fpconv.c and the floating point extension does not add anything interesting for this opcode (except a rounding mode that we cannot handle). So that can be stricken off the list
Comment 4 Florian Krohm 2025-09-29 21:43:29 UTC
bfp-emit.pl tests all BFP insns with rounding mode specification (BZ 509572)
What is left to do here is to check that emulation warnings will be issued when the M4 field is
not zero.
Fixed in d60982b80c6a7ae7a731305e3087345de4c1a023