mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	The Cortex-M7 has 3 options for its FPU: none, FPv5-SP-D16 and FPv5-DP-D16. FPv5 has the same instructions as FP-ARMv8, so it can be modelled using the same target feature, and all double-precision operations are already disabled by the fp-only-sp target features. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218747 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			28 lines
		
	
	
		
			969 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			969 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 -march=thumb -mcpu=cortex-m3 | FileCheck %s -check-prefix=CHECK -check-prefix=CORTEXM3
 | |
| ; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 -march=thumb -mcpu=cortex-m4 | FileCheck %s -check-prefix=CHECK -check-prefix=CORTEXM4
 | |
| ; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 -march=thumb -mcpu=cortex-m7 | FileCheck %s -check-prefix=CHECK -check-prefix=CORTEXM7
 | |
| ; RUN: llc < %s -mtriple=thumbv7-apple-darwin10 -march=thumb -mcpu=cortex-a8 | FileCheck %s -check-prefix=CHECK -check-prefix=CORTEXA8
 | |
| 
 | |
| 
 | |
| define float @foo(float %a, float %b) {
 | |
| entry:
 | |
| ; CHECK-LABEL: foo:
 | |
| ; CORTEXM3: bl ___mulsf3
 | |
| ; CORTEXM4: vmul.f32  s
 | |
| ; CORTEXM7: vmul.f32  s
 | |
| ; CORTEXA8: vmul.f32  d
 | |
|   %0 = fmul float %a, %b
 | |
|   ret float %0
 | |
| }
 | |
| 
 | |
| define double @bar(double %a, double %b) {
 | |
| entry:
 | |
| ; CHECK-LABEL: bar:
 | |
|   %0 = fmul double %a, %b
 | |
| ; CORTEXM3: bl ___muldf3
 | |
| ; CORTEXM4: {{bl|b.w}} ___muldf3
 | |
| ; CORTEXM7: vmul.f64  d
 | |
| ; CORTEXA8: vmul.f64  d
 | |
|   ret double %0
 | |
| }
 |