33 lines
		
	
	
		
			1012 B
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1012 B
		
	
	
	
		
			LLVM
		
	
	
	
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 | 
						|
; RUN: llc -march=mips -mattr=+single-float < %s | FileCheck %s
 | 
						|
 | 
						|
define void @f0() nounwind {
 | 
						|
; CHECK-LABEL: f0:
 | 
						|
; CHECK:       # %bb.0: # %entry
 | 
						|
; CHECK-NEXT:    addiu $sp, $sp, -8
 | 
						|
; CHECK-NEXT:    addiu $1, $zero, 1
 | 
						|
; CHECK-NEXT:    sw $1, 4($sp)
 | 
						|
; CHECK-NEXT:    lw $1, 4($sp)
 | 
						|
; CHECK-NEXT:    srl $2, $1, 1
 | 
						|
; CHECK-NEXT:    andi $3, $1, 1
 | 
						|
; CHECK-NEXT:    or $2, $3, $2
 | 
						|
; CHECK-NEXT:    mtc1 $2, $f0
 | 
						|
; CHECK-NEXT:    cvt.s.w $f0, $f0
 | 
						|
; CHECK-NEXT:    add.s $f0, $f0, $f0
 | 
						|
; CHECK-NEXT:    mtc1 $1, $f1
 | 
						|
; CHECK-NEXT:    cvt.s.w $f1, $f1
 | 
						|
; CHECK-NEXT:    slti $1, $1, 0
 | 
						|
; CHECK-NEXT:    movn.s $f1, $f0, $1
 | 
						|
; CHECK-NEXT:    swc1 $f1, 0($sp)
 | 
						|
; CHECK-NEXT:    jr $ra
 | 
						|
; CHECK-NEXT:    addiu $sp, $sp, 8
 | 
						|
entry:
 | 
						|
  %b = alloca i32, align 4
 | 
						|
  %a = alloca float, align 4
 | 
						|
  store volatile i32 1, i32* %b, align 4
 | 
						|
  %0 = load volatile i32, i32* %b, align 4
 | 
						|
  %conv = uitofp i32 %0 to float
 | 
						|
  store float %conv, float* %a, align 4
 | 
						|
  ret void
 | 
						|
}
 |