Skip to content

[ARM] Incorrect __gnu_h2f_ieee ABI #147935

@nikic

Description

@nikic
target triple = "arm-unknown-linux-gnueabihf"

define i1 @test(half %self) #0 {
  %_0 = fcmp une half %self, %self
  ret i1 %_0
}

attributes #0 = { "target-features"="+vfp2" }

Produces:

	.save	{r11, lr}
	push	{r11, lr}
	vmov	r0, s0
	bl	__gnu_h2f_ieee
	vcmp.f32	s0, s0
	mov	r0, #0
	vmrs	APSR_nzcv, fpscr
	movvs	r0, #1
	pop	{r11, lr}
	mov	pc, lr

LLVM 20 produced the correct:

	.save	{r11, lr}
	push	{r11, lr}
	vmov	r0, s0
	bl	__gnu_h2f_ieee
	vmov	s0, r0
	mov	r0, #0
	vcmp.f32	s0, s0
	vmrs	APSR_nzcv, fpscr
	movvs	r0, #1
	pop	{r11, lr}
	mov	pc, lr

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions