| ; |
| ; Test that branches work: 8- and 16-bit all insns, relaxing to |
| ; 32-bit, forward and backward. No need to check the border |
| ; cases for *all* insns. |
| ; |
| .text |
| start_original: |
| nop |
| startm32: ; start start2 start3 |
| nop |
| .space 32750-(256-21*2+20)-(21*2+10*2+21*4)-12,0 |
| startm16: |
| nop |
| ; The size of a bunch of short branches is start2-start = 42, |
| ; so make the threshold be dependent of the size of that block, |
| ; for the next block; half of them will be relaxed. |
| .space 256-21*2-20,0 |
| start: |
| nop |
| ba start |
| bcc start |
| bcs start |
| beq start |
| bwf start |
| bext start |
| bext start ; leftover, used to be never-implemented "bir" |
| bge start |
| bgt start |
| bhi start |
| bhs start |
| ble start |
| blo start |
| bls start |
| blt start |
| bmi start |
| bne start |
| bpl start |
| bvc start |
| bvs start |
| start2: |
| nop |
| ba startm16 |
| bcc startm16 |
| bcs startm16 |
| beq startm16 |
| bwf startm16 |
| bext startm16 |
| bext startm16 |
| bge startm16 |
| bgt startm16 |
| bhi startm16 |
| bhs startm16 |
| ble startm16 |
| blo startm16 |
| bls startm16 |
| blt startm16 |
| bmi startm16 |
| bne startm16 |
| bpl startm16 |
| bvc startm16 |
| bvs startm16 |
| start3: |
| ; Ok, once more to make sure *all* 16-bit variants get ok for |
| ; backward references. |
| nop |
| ba startm16 |
| bcc startm16 |
| bcs startm16 |
| beq startm16 |
| bwf startm16 |
| bext startm16 |
| bext startm16 |
| bge startm16 |
| bgt startm16 |
| bhi startm16 |
| bhs startm16 |
| ble startm16 |
| blo startm16 |
| bls startm16 |
| blt startm16 |
| bmi startm16 |
| bne startm16 |
| bpl startm16 |
| bvc startm16 |
| bvs startm16 |
| ; |
| ; Now check that dynamically relaxing some of these branches |
| ; from 16-bit to 32-bit works. |
| ; |
| start4: |
| nop |
| ba startm32 |
| bcc startm32 |
| bcs startm32 |
| beq startm32 |
| bwf startm32 |
| bext startm32 |
| bext startm32 |
| bge startm32 |
| bgt startm32 |
| bhi startm32 |
| bhs startm32 |
| ble startm32 |
| blo startm32 |
| bls startm32 |
| blt startm32 |
| bmi startm32 |
| bne startm32 |
| bpl startm32 |
| bvc startm32 |
| bvs startm32 |
| ; |
| ; Again, so all insns get to be tested for 32-bit relaxing. |
| ; |
| start5: |
| nop |
| ba startm32 |
| bcc startm32 |
| bcs startm32 |
| beq startm32 |
| bwf startm32 |
| bext startm32 |
| bext startm32 |
| bge startm32 |
| bgt startm32 |
| bhi startm32 |
| bhs startm32 |
| ble startm32 |
| blo startm32 |
| bls startm32 |
| blt startm32 |
| bmi startm32 |
| bne startm32 |
| bpl startm32 |
| bvc startm32 |
| bvs startm32 |
| ; |
| ; Now test forward references. Symmetrically as above. |
| ; |
| ; All to 32-bit: |
| start6: |
| nop |
| ba endp32 |
| bcc endp32 |
| bcs endp32 |
| beq endp32 |
| bwf endp32 |
| bext endp32 |
| bext endp32 |
| bge endp32 |
| bgt endp32 |
| bhi endp32 |
| bhs endp32 |
| ble endp32 |
| blo endp32 |
| bls endp32 |
| blt endp32 |
| bmi endp32 |
| bne endp32 |
| bpl endp32 |
| bvc endp32 |
| bvs endp32 |
| ; |
| ; Some get relaxed: |
| ; |
| start7: |
| nop |
| ba endp32 |
| bcc endp32 |
| bcs endp32 |
| beq endp32 |
| bwf endp32 |
| bext endp32 |
| bext endp32 |
| bge endp32 |
| bgt endp32 |
| bhi endp32 |
| bhs endp32 |
| ble endp32 |
| blo endp32 |
| bls endp32 |
| blt endp32 |
| bmi endp32 |
| bne endp32 |
| bpl endp32 |
| bvc endp32 |
| bvs endp32 |
| ; |
| ; All to 16-bit: |
| ; |
| start8: |
| nop |
| ba endp16 |
| bcc endp16 |
| bcs endp16 |
| beq endp16 |
| bwf endp16 |
| bext endp16 |
| bext endp16 |
| bge endp16 |
| bgt endp16 |
| bhi endp16 |
| bhs endp16 |
| ble endp16 |
| blo endp16 |
| bls endp16 |
| blt endp16 |
| bmi endp16 |
| bne endp16 |
| bpl endp16 |
| bvc endp16 |
| bvs endp16 |
| ; |
| ; Some relaxing: |
| ; |
| start9: |
| nop |
| ba endp16 |
| bcc endp16 |
| bcs endp16 |
| beq endp16 |
| bwf endp16 |
| bext endp16 |
| bext endp16 |
| bge endp16 |
| bgt endp16 |
| bhi endp16 |
| bhs endp16 |
| ble endp16 |
| blo endp16 |
| bls endp16 |
| blt endp16 |
| bmi endp16 |
| bne endp16 |
| bpl endp16 |
| bvc endp16 |
| bvs endp16 |
| ; |
| ; And all the short ones, forward. |
| ; |
| start10: |
| ba end |
| bcc end |
| bcs end |
| beq end |
| bwf end |
| bext end |
| bext end |
| bge end |
| bgt end |
| bhi end |
| bhs end |
| ble end |
| blo end |
| bls end |
| blt end |
| bmi end |
| bne end |
| bpl end |
| bvc end |
| bvs end |
| nop |
| end: |
| nop |
| .space 256-21*2-20,0 |
| endp16: |
| nop |
| .space 32750-(256-21*2+20)-(21*2+10*2+21*4)-12,0 |
| endp32: |
| nop |