38 lines
1018 B
C
38 lines
1018 B
C
//===-- CBackend.cpp - Library for converting LLVM code to C ----------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===------------------------------------------------------------------------------===//
|
|
//
|
|
// Tests if the CBE will execute a fibonacci numbers example.
|
|
// Credit: http://en.literateprograms.org/Fibonacci_numbers_(C)
|
|
// *TW
|
|
//===------------------------------------------------------------------------------===//
|
|
|
|
unsigned int fastfib(unsigned int n);
|
|
|
|
int main(){
|
|
return fastfib(6) - 2;
|
|
}
|
|
|
|
unsigned int fastfib(unsigned int n){
|
|
unsigned int a[3];
|
|
unsigned int *p=a;
|
|
unsigned int i;
|
|
|
|
for(i=0; i<=n; ++i) {
|
|
if(i<2) *p=i;
|
|
else{
|
|
if(p==a) *p=*(a+1)+*(a+2);
|
|
else if(p==a+1) *p=*a+*(a+2);
|
|
else *p=*a+*(a+1);
|
|
}
|
|
if(++p>a+2) p=a;
|
|
}
|
|
return p==a?*(p+2):*(p-1);
|
|
}
|
|
|