* DIEBR test $Id$
sysclear
archmode esame
r 1a0=00000001800000000000000000000200 # z/Arch restart PSW
r 1d0=000000018000000000000000000002E0 # z/Arch pgm new PSW
r 200=B7000320     # LCTL R0,R0,CTLR0  Set CR0 bit 45
r 204=B29D0324     # LFPC FPCREG       Load value into FPC register
r 208=41000020     # LA R0,32          R0=Number of test data
r 20C=41100800     # LA R1,TEST1       R1=>Test data table
r 210=41F00A00     # LA R15,RES1       R15=>Result table
r 214=1B88         # SR R8,R8          Clear CC register
r 216=D70FF000F000 #A XC 0(16,R15),0(R15)  Clear result table entry
r 21C=78401000     # LE F4,0(,R1)      Load FPR4=TESTn
r 220=78501004     # LE F5,4(,R1)      Load FPR5=TESTn+4
r 224=B29D1008     # LFPC 8(R1)        Load FPC=TESTn+8
r 228=7830032C     # LE F3,JUNKWORD    Load initial pattern into FPR3
r 22C=B3533045     # DIEBR F4,F3,F5,0  Divide FPR4 by FPR5
r 230=B2220080     # IPM R8            R8=Cond code and pgm mask
r 234=7040F000     #B ST F4,0(,R15)    Store remainder in result table
r 238=7030F004     # ST F3,4(,R15)     Store quotient in result table
r 23C=BE88F008     # STCM R8,B'1000',8(R15)  Store CC in table
r 240=B29CF00C     # STFPC 12(R15)     Store FPC in table
r 244=41F0F010     # LA R15,16(,R15)   R15=>next result table
r 248=41101010     # LA R1,16(,R1)     R1=>Next TESTn
r 24C=46000216     # BCT R0,A          Loop to end of TEST table
r 250=41000A00     # LA R0,RES1        R0->Actual results
r 254=41100200     # LA R1,32*16       R1=Length of results table
r 258=41200C00     # LA R2,EXP1        R2->Expected results
r 25C=41300200     # LA R3,32*16       R3=Length of results table
r 260=0F02         # CLCL R0,R2        Compare with expected results
r 262=477002FC     # BNE DIE           Error if not equal
r 266=B2B20300     # LPSWE WAITPSW     Load enabled wait PSW
r 2E0=92FFF009     #PGM MVI 9(R15),X'FF' Indicate program check
r 2E4=D201F00A008E # MVC 10(2,R15),PGMINT+2  Save interrupt code in result table
r 2EA=BF880152     # ICM R8,B'1000',PGMOPSW+2  R8=cond code from old PSW
r 2EE=47F00234     # B B               Continue to next test
r 2FC=B2B20310     #DIE LPSWE DISWAIT  Load disabled wait PSW
r 300=07020001800000000000000000AAAAAA # WAITPSW Enabled wait state PSW
r 310=00020001800000000000000000BADBAD # DISWAIT Disabled wait state PSW
r 320=00040000     # CTLR0             Control register 0 (bit45 AFP control)
r 324=00000000     # FPCREG            Floating point control register
r 328=00000000     # COUNT             Error counter
r 32C=DEADBEEF     # JUNKWORD          Initial pattern
*     <--F4--><--F5--><--FPC->         Test data
r 800=FF8000008000000000000001         # TEST1 -INF,-0,BRM=Z
r 810=7F8000007FC1234500000001         # TEST2 +INF,QNAN(12345),BRM=Z
r 820=7F8000007F82345600000001         # TEST3 +INF,SNAN(23456),BRM=Z
r 830=7FC123457FC5678900000001         # TEST4 QNAN(12345),QNAN(56789),BRM=Z
r 840=7F8345677F85678900000001         # TEST5 SNAN(34567),SNAN(56789),BRM=Z
r 850=40E000004000000000000001         # TEST6 EB'7',EB'2'
r 860=3E000FF8163FFEFF00000001         # TEST7 Partial quotient
r 870=322B99D9163FFEFF00000001         # TEST8
r 880=25E642A6163FFEFF00000001         # TEST9
r 890=19B82722163FFEFF00000001         # TEST10
r 8A0=FF0D7C30007FFFFF00000001         # TEST11 Partial quotient with overflow
r 8B0=F1D7C310007FFFFF00000001         # TEST12
r 8C0=E5AF8622007FFFFF00000001         # TEST13
r 8D0=D93E188C007FFFFF00000001         # TEST14
r 8E0=CCF86234007FFFFF00000001         # TEST15
r 8F0=C0F0C46A007FFFFF00000001         # TEST16
r 900=B4E188D6007FFFFF00000001         # TEST17
r 910=A8C311AE007FFFFF00000001         # TEST18
r 920=9C86235E007FFFFF00000001         # TEST19
r 930=8EC46BE0007FFFFF00000001         # TEST20
r 940=8288D7C2007FFFFF00000001         # TEST21
r 950=4FFFFFFFB380003B00000001         # TEST22 Partial quotient
r 960=3EDB6800B380003B00000001         # TEST23
r 970=6B7FC1FFDEDF658E00000001         # TEST24 Partial quotient, negative divisor
r 980=5EE52600DEDF658E00000001         # TEST25
r 990=C100200200FFFFFE00000001         # TEST26 Partial quotient, overflow, negative dividend
r 9A0=B0800C0000FFFFFE00000001         # TEST27
r 9B0=9F40100000FFFFFE00000001         # TEST28
r 9C0=9300200200FFFFFE00000001         # TEST29
r 9D0=82800C0000FFFFFE00000001         # TEST30
r 9E0=729414B8615DEB6D00000001         # TEST31 Partial quotient
r 9F0=66AC8AD9615DEB6D00000001         # TEST32
*     <--F4--><--F3--><C--INT><--FPC->   Expected results, condition codes, and FPC
r C00=7FC000007FC000001000000000800001 # EXP1 DNAN,DNAN,CC1,INV
r C10=7FC123457FC123451000000000000001 # EXP2 QNAN(12345),QNAN(12345),CC1
r C20=7FC234567FC234561000000000800001 # EXP3 QNAN(23456),QNAN(23456),CC1,INV
r C30=7FC123457FC123451000000000000001 # EXP4 QNAN(12345),QNAN(12345),CC1
r C40=7FC345677FC345671000000000800001 # EXP5 QNAN(34567),QNAN(34567),CC1,INV
r C50=3F800000404000000000000000000001 # EXP6 EB'1',EB'3',CC0
r C60=322B99D9672AC0D92000000000000001 # EXP7 CC2 Partial quotient
r C70=25E642A65B64CE532000000000000001 # EXP8 CC2
r C80=19B827224F1982912000000000000001 # EXP9 CC2
r C90=16140B7A42F400000000000000000001 # EXP10 CC0
r CA0=F1D7C310DE0D7C313000000000000001 # EXP11 CC3 Partial quotient with overflow
r CB0=E5AF8622D0D7C3113000000000000001 # EXP12 CC3
r CC0=D93E188CC4AF86233000000000000001 # EXP13 CC3
r CD0=CCF86234B83E188D3000000000000001 # EXP14 CC3
r CE0=C0F0C46AABF862353000000000000001 # EXP15 CC3
r CF0=B4E188D69FF0C46B3000000000000001 # EXP16 CC3
r D00=A8C311AEF3E188D72000000000000001 # EXP17 CC2
r D10=9C86235EE7C311AF2000000000000001 # EXP18 CC2
r D20=8EC46BE0DB86235F2000000000000001 # EXP19 CC2
r D30=8288D7C2CDC46BE12000000000000001 # EXP20 CC2
r D40=800D7C31C18800000000000000000001 # EXP21 CC0
r D50=3EDB6800DBFFFF892000000000000001 # EXP22 CC2 Partial quotient
r D60=32DE3F04CADB679A0000000000000001 # EXP23 CC0
r D70=5EE52600CC128AC02000000000000001 # EXP24 CC2 Partial quotient, negative divisor
r D80=5C380E40BF8000000000000000000001 # EXP25 CC0
r D90=B0800C009F8020033000000000000001 # EXP26 CC3 Partial quotient, overflow, negative dividend
r DA0=9F401000EF000C012000000000000001 # EXP27 CC2
r DB0=93002002DDC010012000000000000001 # EXP28 CC2
r DC0=82800C00D18020032000000000000001 # EXP29 CC2
r DD0=8000C010C10000000000000000000001 # EXP30 CC0
r DE0=66AC8AD950AAD2632000000000000001 # EXP31 CC2 Partial quotient
r DF0=608D745044C700000000000000000001 # EXP32 CC0
pgmtrace +7
restart
pause 1
* Display test data (tests 1-10)
r 800.A0
* Display expected results (tests 1-10)
r C00.A0
* Display actual results (tests 1-10)
r A00.A0
* Display test data (tests 11-21)
r 8A0.B0
* Display expected results (tests 11-21)
r CA0.B0
* Display actual results (tests 11-21)
r AA0.B0
* Display test data (tests 22-32)
r 950.B0
* Display expected results (tests 22-32)
r D50.B0
* Display actual results (tests 22-32)
r B50.B0
