897 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			897 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 | |
| 
 | |
| ; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv2_sf | FileCheck %s --check-prefix=CHECK-SF
 | |
| ; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -float-abi=hard -mattr=+hard-float -mattr=+2e3 -mattr=+fpuv3_sf | FileCheck %s --check-prefix=CHECK-SF2
 | |
| 
 | |
| ;ueq
 | |
| define i1 @fcmpRR_ueq(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ueq:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF-NEXT:    or16 a0, a1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ueq:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF2-NEXT:    or16 a0, a1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ueq float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ueq(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ueq:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a1
 | |
| ; CHECK-SF-NEXT:    or16 a0, a1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ueq:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a1
 | |
| ; CHECK-SF2-NEXT:    or16 a0, a1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ueq float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ueq(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ueq:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    fcmpznes vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF-NEXT:    or16 a0, a1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ueq:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    fcmpnez.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF2-NEXT:    or16 a0, a1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ueq float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;une
 | |
| define i1 @fcmpRR_une(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_une:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_une:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp une float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_une(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_une:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_une:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp une float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_une(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_une:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpznes vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_une:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpnez.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp une float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;ugt
 | |
| define i1 @fcmpRR_ugt(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ugt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmphss vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ugt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ugt float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ugt(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ugt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmphss vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ugt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ugt float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ugt(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ugt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzlss vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ugt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmplsz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ugt float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;uge
 | |
| define i1 @fcmpRR_uge(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_uge:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmplts vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_uge:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp uge float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_uge(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_uge:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmplts vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_uge:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp uge float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_uge(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_uge:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzhss vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_uge:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpltz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp uge float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| ;ult
 | |
| define i1 @fcmpRR_ult(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ult:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmphss vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ult:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ult float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ult(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ult:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmphss vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ult:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ult float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ult(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ult:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzhss vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ult:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphsz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ult float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;ule
 | |
| define i1 @fcmpRR_ule(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ule:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmplts vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ule:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ule float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ule(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ule:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmplts vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ule:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ule float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ule(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ule:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzlss vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ule:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    xori32 a0, a0, 1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ule float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;ogt
 | |
| define i1 @fcmpRR_ogt(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ogt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmplts vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ogt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ogt float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ogt(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ogt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmplts vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ogt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ogt float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ogt(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ogt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzlss vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ogt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ogt float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;oge
 | |
| define i1 @fcmpRR_oge(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_oge:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmphss vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_oge:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp oge float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_oge(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_oge:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmphss vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_oge:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp oge float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_oge(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_oge:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzhss vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_oge:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphsz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp oge float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;olt
 | |
| define i1 @fcmpRR_olt(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_olt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmplts vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_olt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp olt float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_olt(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_olt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmplts vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_olt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmplt.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp olt float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_olt(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_olt:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzhss vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_olt:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpltz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp olt float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;ole
 | |
| define i1 @fcmpRR_ole(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ole:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmphss vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ole:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ole float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ole(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ole:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmphss vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ole:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmphs.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ole float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ole(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ole:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpzlss vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ole:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmplsz.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ole float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;one
 | |
| define i1 @fcmpRR_one(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_one:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a1
 | |
| ; CHECK-SF-NEXT:    and16 a0, a1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_one:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a1
 | |
| ; CHECK-SF2-NEXT:    and16 a0, a1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp one float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_one(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_one:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF-NEXT:    and16 a0, a1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_one:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF2-NEXT:    and16 a0, a1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp one float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_one(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_one:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    fcmpznes vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a1
 | |
| ; CHECK-SF-NEXT:    and16 a0, a1
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_one:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movi16 a0, 0
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a1
 | |
| ; CHECK-SF2-NEXT:    and16 a0, a1
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp one float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;oeq
 | |
| define i1 @fcmpRR_oeq(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_oeq:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_oeq:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp oeq float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_oeq(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_oeq:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF-NEXT:    fmtvrl vr1, a0
 | |
| ; CHECK-SF-NEXT:    fcmpnes vr0, vr1
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_oeq:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    movih32 a0, 49440
 | |
| ; CHECK-SF2-NEXT:    fmtvr.32.1 vr1, a0
 | |
| ; CHECK-SF2-NEXT:    fcmpne.32 vr0, vr1
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp oeq float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_oeq(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_oeq:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpznes vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_oeq:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpnez.32 vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp oeq float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;ord
 | |
| define i1 @fcmpRR_ord(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_ord:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_ord:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ord float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_ord(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_ord:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_ord:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ord float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_ord(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_ord:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_ord:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvcv16 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp ord float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| 
 | |
| ;uno
 | |
| define i1 @fcmpRR_uno(float %x, float %y) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRR_uno:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr1, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRR_uno:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr1, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp uno float %y, %x
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_uno(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_uno:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_uno:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp uno float %x, -10.0
 | |
|   ret i1 %fcmp
 | |
| }
 | |
| 
 | |
| define i1 @fcmpRI_X_uno(float %x) {
 | |
| ;
 | |
| ; CHECK-SF-LABEL: fcmpRI_X_uno:
 | |
| ; CHECK-SF:       # %bb.0: # %entry
 | |
| ; CHECK-SF-NEXT:    fcmpuos vr0, vr0
 | |
| ; CHECK-SF-NEXT:    mvc32 a0
 | |
| ; CHECK-SF-NEXT:    rts16
 | |
| ;
 | |
| ; CHECK-SF2-LABEL: fcmpRI_X_uno:
 | |
| ; CHECK-SF2:       # %bb.0: # %entry
 | |
| ; CHECK-SF2-NEXT:    fcmpuo.32 vr0, vr0
 | |
| ; CHECK-SF2-NEXT:    mvc32 a0
 | |
| ; CHECK-SF2-NEXT:    rts16
 | |
| entry:
 | |
|   %fcmp = fcmp uno float %x, 0.0
 | |
|   ret i1 %fcmp
 | |
| }
 |