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@36077 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			49 lines
		
	
	
		
			1014 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1014 B
		
	
	
	
		
			LLVM
		
	
	
	
	
	
| ; RUN: llvm-upgrade < %s | llvm-as | llc -march=c | \
 | |
| ; RUN:   grep __BITCAST | wc -l | grep 14
 | |
| 
 | |
| int %test1(float %F) {
 | |
|    %X = bitcast float %F to int
 | |
|    ret int %X
 | |
| }
 | |
| 
 | |
| float %test2(int %I) {
 | |
|   %X = bitcast int %I to float
 | |
|   ret float %X
 | |
| }
 | |
| 
 | |
| long %test3(double %D) {
 | |
|   %X = bitcast double %D to long
 | |
|   ret long %X
 | |
| }
 | |
| 
 | |
| double %test4(long %L) {
 | |
|   %X = bitcast long %L to double
 | |
|   ret double %X
 | |
| }
 | |
| 
 | |
| double %test5(double %D) {
 | |
|   %X = bitcast double %D to double
 | |
|   %Y = add double %X, 2.0
 | |
|   %Z = bitcast double %Y to long
 | |
|   %res = bitcast long %Z to double
 | |
|   ret double %res
 | |
| }
 | |
| 
 | |
| float %test6(float %F) {
 | |
|   %X = bitcast float %F to float
 | |
|   %Y = add float %X, 2.0
 | |
|   %Z = bitcast float %Y to int
 | |
|   %res = bitcast int %Z to float
 | |
|   ret float %res
 | |
| }
 | |
| 
 | |
| int %main(int %argc, sbyte** %argv) {
 | |
|   %a = call int %test1(float 3.1415926)
 | |
|   %b = call float %test2(int %a)
 | |
|   %c = call long %test3(double 3.1415926)
 | |
|   %d = call double %test4(long %c)
 | |
|   %e = call double %test5(double 7.0)
 | |
|   %f = call float %test6(float 7.0)
 | |
|   ret int %a
 | |
| }
 |