Bug 43860 - Inline asm doesn't respect q clobbers
Summary: Inline asm doesn't respect q clobbers
Status: RESOLVED DUPLICATE of bug 43440
Alias: None
Product: gcc
Classification: Unclassified
Component: inline-asm (show other bugs)
Version: 4.4.3
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-22 23:18 UTC by David Conrad
Modified: 2010-04-22 23:21 UTC (History)
3 users (show)

See Also:
Host: x86_64-apple-darwin
Target: arm-none-linux-gnueabi
Build: x86_64-apple-darwin
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Conrad 2010-04-22 23:18:25 UTC
Source:

void foo(float *a, float *b) {
    __asm__ volatile (
        "vld1.32 {d8[],d9[]}, [%1,:32] \n\t"
        "vst1.32 {q4},        [%0,:128] \n\t"
        :: "r"(a), "r"(b)
        : "q4"
    );
}

arm-none-linux-gnueabi-gcc-4.4.3 -O3 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp neonasm.c -S

foo:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	@ link register save eliminated.
	fstmfdd	sp!, {d8}
#APP
@ 2 "neonasm.c" 1
	vld1.32 {d8[],d9[]}, [r1,:32] 
	vst1.32 {q4},        [r0,:128] 
	
@ 0 "" 2
	fldmfdd	sp!, {d8}
	bx	lr


Both d8 and d9 should be saved, not just d8.
Comment 1 Andrew Pinski 2010-04-22 23:21:04 UTC

*** This bug has been marked as a duplicate of 43440 ***