mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143458 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			172 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llc < %s -march=xcore | FileCheck %s
 | |
| declare double @llvm.cos.f64(double)
 | |
| declare double @llvm.exp.f64(double)
 | |
| declare double @llvm.exp2.f64(double)
 | |
| declare double @llvm.log.f64(double)
 | |
| declare double @llvm.log10.f64(double)
 | |
| declare double @llvm.log2.f64(double)
 | |
| declare double @llvm.pow.f64(double, double)
 | |
| declare double @llvm.powi.f64(double, i32)
 | |
| declare double @llvm.sin.f64(double)
 | |
| declare double @llvm.sqrt.f64(double)
 | |
| 
 | |
| define double @cos(double %F) {
 | |
| ; CHECK: cos:
 | |
| ; CHECK: bl cos
 | |
|         %result = call double @llvm.cos.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.cos.f32(float)
 | |
| 
 | |
| ; CHECK: cosf:
 | |
| ; CHECK: bl cosf
 | |
| define float @cosf(float %F) {
 | |
|         %result = call float @llvm.cos.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @exp(double %F) {
 | |
| ; CHECK: exp:
 | |
| ; CHECK: bl exp
 | |
|         %result = call double @llvm.exp.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.exp.f32(float)
 | |
| 
 | |
| define float @expf(float %F) {
 | |
| ; CHECK: expf:
 | |
| ; CHECK: bl expf
 | |
|         %result = call float @llvm.exp.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @exp2(double %F) {
 | |
| ; CHECK: exp2:
 | |
| ; CHECK: bl exp2
 | |
|         %result = call double @llvm.exp2.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.exp2.f32(float)
 | |
| 
 | |
| define float @exp2f(float %F) {
 | |
| ; CHECK: exp2f:
 | |
| ; CHECK: bl exp2f
 | |
|         %result = call float @llvm.exp2.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @log(double %F) {
 | |
| ; CHECK: log:
 | |
| ; CHECK: bl log
 | |
|         %result = call double @llvm.log.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.log.f32(float)
 | |
| 
 | |
| define float @logf(float %F) {
 | |
| ; CHECK: logf:
 | |
| ; CHECK: bl logf
 | |
|         %result = call float @llvm.log.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @log10(double %F) {
 | |
| ; CHECK: log10:
 | |
| ; CHECK: bl log10
 | |
|         %result = call double @llvm.log10.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.log10.f32(float)
 | |
| 
 | |
| define float @log10f(float %F) {
 | |
| ; CHECK: log10f:
 | |
| ; CHECK: bl log10f
 | |
|         %result = call float @llvm.log10.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @log2(double %F) {
 | |
| ; CHECK: log2:
 | |
| ; CHECK: bl log2
 | |
|         %result = call double @llvm.log2.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.log2.f32(float)
 | |
| 
 | |
| define float @log2f(float %F) {
 | |
| ; CHECK: log2f:
 | |
| ; CHECK: bl log2f
 | |
|         %result = call float @llvm.log2.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @pow(double %F, double %power) {
 | |
| ; CHECK: pow:
 | |
| ; CHECK: bl pow
 | |
|         %result = call double @llvm.pow.f64(double %F, double %power)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.pow.f32(float, float)
 | |
| 
 | |
| define float @powf(float %F, float %power) {
 | |
| ; CHECK: powf:
 | |
| ; CHECK: bl powf
 | |
|         %result = call float @llvm.pow.f32(float %F, float %power)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @powi(double %F, i32 %power) {
 | |
| ; CHECK: powi:
 | |
| ; CHECK: bl __powidf2
 | |
|         %result = call double @llvm.powi.f64(double %F, i32 %power)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.powi.f32(float, i32)
 | |
| 
 | |
| define float @powif(float %F, i32 %power) {
 | |
| ; CHECK: powif:
 | |
| ; CHECK: bl __powisf2
 | |
|         %result = call float @llvm.powi.f32(float %F, i32 %power)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @sin(double %F) {
 | |
| ; CHECK: sin:
 | |
| ; CHECK: bl sin
 | |
|         %result = call double @llvm.sin.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.sin.f32(float)
 | |
| 
 | |
| define float @sinf(float %F) {
 | |
| ; CHECK: sinf:
 | |
| ; CHECK: bl sinf
 | |
|         %result = call float @llvm.sin.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 | |
| 
 | |
| define double @sqrt(double %F) {
 | |
| ; CHECK: sqrt:
 | |
| ; CHECK: bl sqrt
 | |
|         %result = call double @llvm.sqrt.f64(double %F)
 | |
| 	ret double %result
 | |
| }
 | |
| 
 | |
| declare float @llvm.sqrt.f32(float)
 | |
| 
 | |
| define float @sqrtf(float %F) {
 | |
| ; CHECK: sqrtf:
 | |
| ; CHECK: bl sqrtf
 | |
|         %result = call float @llvm.sqrt.f32(float %F)
 | |
| 	ret float %result
 | |
| }
 |