.cpu ep9312 .fpu maverick .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 2 .eabi_attribute 30, 6 .eabi_attribute 18, 4 .file "denorm.c" .global failed .bss .align 2 .type failed, %object .size failed, 4 failed: .space 4 .section .rodata .align 2 .LC0: .ascii "FLOAT\012\000" .align 2 .LC1: .ascii "one = %e\012\000" .align 2 .LC2: .ascii "two = %e\012\000" .align 2 .LC3: .ascii "-one = %e\012\000" .align 2 .LC4: .ascii "-two = %e\012\000" .align 2 .LC5: .ascii "one == two\000" .align 2 .LC6: .ascii "one + one != two\000" .align 2 .LC7: .ascii "two - one != one\000" .align 2 .LC8: .ascii "one * 2.0 != two\000" .align 2 .LC9: .ascii "-one != minus_one\000" .align 2 .LC10: .ascii "-minus_one != one\000" .align 2 .LC11: .ascii "fabsf(one) != one\000" .align 2 .LC12: .ascii "fabsf(minus_one) != one\000" .text .align 2 .global check_float .type check_float, %function check_float: @ Function supports interworking. @ args = 0, pretend = 0, frame = 16 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp stmfd sp!, {fp, ip, lr, pc} cfstrd mvd8, [sp, #-8]! sub fp, ip, #4 sub sp, sp, #16 ldr r2, .L28 mov r3, #1 str r3, [r2, #0] ldr r3, .L28 cfldrs mvf0, [r3, #0] cfstrs mvf0, [fp, #-32] ldr r2, .L28 mov r3, #2 str r3, [r2, #0] ldr r3, .L28 cfldrs mvf1, [r3, #0] cfstrs mvf1, [fp, #-24] ldr r2, .L28 mov r3, #-2147483647 str r3, [r2, #0] ldr r3, .L28 cfldrs mvf2, [r3, #0] cfstrs mvf2, [fp, #-28] ldr r2, .L28 mov r3, #-2147483646 str r3, [r2, #0] ldr r3, .L28 cfldrs mvf8, [r3, #0] cfldrs mvf1, [fp, #-32] cfcvtsd mvd0, mvf1 ldr r0, .L28+4 cfmvrdl r2, mvd0 cfmvrdh r3, mvd0 bl printf cfldrs mvf2, [fp, #-32] cfcvtsd mvd0, mvf2 ldr r0, .L28+8 cfmvrdl r2, mvd0 cfmvrdh r3, mvd0 bl printf cfldrs mvf1, [fp, #-24] cfcvtsd mvd0, mvf1 ldr r0, .L28+12 cfmvrdl r2, mvd0 cfmvrdh r3, mvd0 bl printf cfldrs mvf2, [fp, #-28] cfcvtsd mvd0, mvf2 ldr r0, .L28+16 cfmvrdl r2, mvd0 cfmvrdh r3, mvd0 bl printf cfcvtsd mvd0, mvf8 ldr r0, .L28+20 cfmvrdl r2, mvd0 cfmvrdh r3, mvd0 bl printf cfldrs mvf0, [fp, #-32] cfldrs mvf1, [fp, #-24] cfcmps r15, mvf0, mvf1 bne .L2 .L19: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+28 bl puts .L2: cfldrs mvf2, [fp, #-32] cfldrs mvf2, [fp, #-32] cfadds mvf0, mvf2, mvf2 cfldrs mvf1, [fp, #-24] cfcmps r15, mvf0, mvf1 beq .L4 .L20: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+32 bl puts .L4: cfldrs mvf2, [fp, #-24] cfldrs mvf1, [fp, #-32] cfsubs mvf0, mvf2, mvf1 cfldrs mvf2, [fp, #-32] cfcmps r15, mvf0, mvf2 beq .L6 .L21: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+36 bl puts .L6: cfldrs mvf1, [fp, #-32] cfldrs mvf1, [fp, #-32] cfadds mvf0, mvf1, mvf1 cfldrs mvf2, [fp, #-24] cfcmps r15, mvf0, mvf2 beq .L8 .L22: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+40 bl puts .L8: ldr r2, [fp, #-32] eor r3, r2, #-2147483648 cfmvsr mvf0, r3 cfldrs mvf1, [fp, #-28] cfcmps r15, mvf0, mvf1 beq .L10 .L23: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+44 bl puts .L10: ldr r2, [fp, #-28] eor r3, r2, #-2147483648 cfmvsr mvf0, r3 cfldrs mvf1, [fp, #-32] cfcmps r15, mvf0, mvf1 beq .L12 .L24: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+48 bl puts .L12: cfldrs mvf2, [fp, #-32] cfabss mvf0, mvf2 cfldrs mvf1, [fp, #-32] cfcmps r15, mvf0, mvf1 beq .L14 .L25: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+52 bl puts .L14: cfldrs mvf2, [fp, #-28] cfabss mvf0, mvf2 cfldrs mvf1, [fp, #-32] cfcmps r15, mvf0, mvf1 beq .L27 .L26: ldr r3, .L28+24 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L28+24 str r2, [r3, #0] ldr r0, .L28+56 bl puts .L27: cfldrd mvd8, [fp, #-20] sub sp, fp, #12 ldmfd sp, {fp, sp, lr} bx lr .L29: .align 2 .L28: .word uf .word .LC0 .word .LC1 .word .LC2 .word .LC3 .word .LC4 .word failed .word .LC5 .word .LC6 .word .LC7 .word .LC8 .word .LC9 .word .LC10 .word .LC11 .word .LC12 .size check_float, .-check_float .section .rodata .align 2 .LC13: .ascii "DOUBLE\012\000" .align 2 .LC14: .ascii "fabs(one) != one\000" .align 2 .LC15: .ascii "fabs(minus_one) != one\000" .text .align 2 .global check_double .type check_double, %function check_double: @ Function supports interworking. @ args = 0, pretend = 0, frame = 40 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp stmfd sp!, {r4, r5, fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #40 ldr r2, .L57+16 mov r3, #1 mov r4, #0 stmia r2, {r3-r4} ldr r3, .L57+16 ldmia r3, {r1-r2} @ double str r1, [fp, #-52] str r2, [fp, #-48] ldr r2, .L57+16 mov r3, #2 mov r4, #0 stmia r2, {r3-r4} ldr r3, .L57+16 ldmia r3, {r1-r2} @ double str r1, [fp, #-36] str r2, [fp, #-32] ldr r2, .L57+16 adr r3, .L57 ldmia r3, {r3-r4} stmia r2, {r3-r4} ldr r3, .L57+16 ldmia r3, {r1-r2} @ double str r1, [fp, #-44] str r2, [fp, #-40] ldr r2, .L57+16 adr r3, .L57+8 ldmia r3, {r3-r4} stmia r2, {r3-r4} ldr r3, .L57+16 ldmia r3, {r4-r5} @ double ldr r0, .L57+20 sub r2, fp, #52 ldmia r2, {r2-r3} bl printf ldr r0, .L57+24 sub r2, fp, #52 ldmia r2, {r2-r3} bl printf ldr r0, .L57+28 sub r2, fp, #36 ldmia r2, {r2-r3} bl printf ldr r0, .L57+32 sub r2, fp, #44 ldmia r2, {r2-r3} bl printf ldr r0, .L57+36 mov r2, r4 mov r3, r5 bl printf cfldrd mvd0, [fp, #-52] cfldrd mvd1, [fp, #-36] cfcmpd r15, mvd0, mvd1 bne .L31 .L48: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+44 bl puts .L31: cfldrd mvd2, [fp, #-52] cfldrd mvd2, [fp, #-52] cfaddd mvd0, mvd2, mvd2 cfldrd mvd1, [fp, #-36] cfcmpd r15, mvd0, mvd1 beq .L33 .L49: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+48 bl puts .L33: cfldrd mvd2, [fp, #-36] cfldrd mvd1, [fp, #-52] cfsubd mvd0, mvd2, mvd1 cfldrd mvd2, [fp, #-52] cfcmpd r15, mvd0, mvd2 beq .L35 .L50: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+52 bl puts .L35: cfldrd mvd1, [fp, #-52] cfldrd mvd1, [fp, #-52] cfaddd mvd0, mvd1, mvd1 cfldrd mvd2, [fp, #-36] cfcmpd r15, mvd0, mvd2 beq .L37 .L51: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+56 bl puts .L37: ldr r1, [fp, #-52] mov r3, r1 ldr r2, [fp, #-48] eor r4, r2, #-2147483648 cfmvdlr mvd0, r3 cfmvdhr mvd0, r4 cfldrd mvd1, [fp, #-44] cfcmpd r15, mvd0, mvd1 beq .L39 .L52: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+60 bl puts .L39: ldr r1, [fp, #-44] mov r3, r1 ldr r2, [fp, #-40] eor r4, r2, #-2147483648 cfmvdlr mvd0, r3 cfmvdhr mvd0, r4 cfldrd mvd1, [fp, #-52] cfcmpd r15, mvd0, mvd1 beq .L41 .L53: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+64 bl puts .L41: cfldrd mvd2, [fp, #-52] cfabsd mvd0, mvd2 cfldrd mvd1, [fp, #-52] cfcmpd r15, mvd0, mvd1 beq .L43 .L54: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+68 bl puts .L43: cfldrd mvd2, [fp, #-44] cfabsd mvd0, mvd2 cfldrd mvd1, [fp, #-52] cfcmpd r15, mvd0, mvd1 beq .L56 .L55: ldr r3, .L57+40 ldr r3, [r3, #0] add r2, r3, #1 ldr r3, .L57+40 str r2, [r3, #0] ldr r0, .L57+72 bl puts .L56: sub sp, fp, #20 ldmfd sp, {r4, r5, fp, sp, lr} bx lr .L58: .align 3 .L57: .word 1 .word -2147483648 .word 2 .word -2147483648 .word ud .word .LC13 .word .LC1 .word .LC2 .word .LC3 .word .LC4 .word failed .word .LC5 .word .LC6 .word .LC7 .word .LC8 .word .LC9 .word .LC10 .word .LC14 .word .LC15 .size check_double, .-check_double .align 2 .global main .type main, %function main: @ Function supports interworking. @ args = 0, pretend = 0, frame = 0 @ frame_needed = 1, uses_anonymous_args = 0 mov ip, sp stmfd sp!, {fp, ip, lr, pc} sub fp, ip, #4 adr r0, .L62 ldmia r0, {r0-r1} bl check_float adr r0, .L62 ldmia r0, {r0-r1} bl check_double ldr r3, .L62+8 ldr r3, [r3, #0] cmp r3, #0 beq .L60 bl abort .L60: mov r0, #0 bl exit .L63: .align 3 .L62: .word 0 .word 1072693248 .word failed .size main, .-main .comm uf,4,4 .comm ud,8,8 .ident "GCC: (GNU) 4.3.2" .section .note.GNU-stack,"",%progbits