1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm %s -o %t 2*67e74705SXin Li 3*67e74705SXin Li /* Sparc is not C99-compliant */ 4*67e74705SXin Li #if defined(sparc) || defined(__sparc__) || defined(__sparcv9) 5*67e74705SXin Li main()6*67e74705SXin Liint main() { return 0; } 7*67e74705SXin Li 8*67e74705SXin Li #else /* sparc */ 9*67e74705SXin Li 10*67e74705SXin Li #define ESCAPE 2 11*67e74705SXin Li #define IMAGE_WIDTH 150 12*67e74705SXin Li #define IMAGE_HEIGHT 50 13*67e74705SXin Li #if 1 14*67e74705SXin Li #define IMAGE_SIZE 60 15*67e74705SXin Li #else 16*67e74705SXin Li #define IMAGE_SIZE 5000 17*67e74705SXin Li #endif 18*67e74705SXin Li #define START_X -2.1 19*67e74705SXin Li #define END_X 1.0 20*67e74705SXin Li #define START_Y -1.25 21*67e74705SXin Li #define MAX_ITER 100 22*67e74705SXin Li 23*67e74705SXin Li #define step_X ((END_X - START_X)/IMAGE_WIDTH) 24*67e74705SXin Li #define step_Y ((-START_Y - START_Y)/IMAGE_HEIGHT) 25*67e74705SXin Li 26*67e74705SXin Li #define I 1.0iF 27*67e74705SXin Li 28*67e74705SXin Li int putchar(char c); 29*67e74705SXin Li 30*67e74705SXin Li volatile double __complex__ accum; 31*67e74705SXin Li mandel()32*67e74705SXin Livoid mandel() { 33*67e74705SXin Li int x, y, n; 34*67e74705SXin Li for (y = 0; y < IMAGE_HEIGHT; ++y) { 35*67e74705SXin Li for (x = 0; x < IMAGE_WIDTH; ++x) { 36*67e74705SXin Li double __complex__ c = (START_X+x*step_X) + (START_Y+y*step_Y) * I; 37*67e74705SXin Li double __complex__ z = 0.0; 38*67e74705SXin Li 39*67e74705SXin Li for (n = 0; n < MAX_ITER; ++n) { 40*67e74705SXin Li z = z * z + c; 41*67e74705SXin Li if (hypot(__real__ z, __imag__ z) >= ESCAPE) 42*67e74705SXin Li break; 43*67e74705SXin Li } 44*67e74705SXin Li 45*67e74705SXin Li if (n == MAX_ITER) 46*67e74705SXin Li putchar(' '); 47*67e74705SXin Li else if (n > 6) 48*67e74705SXin Li putchar('.'); 49*67e74705SXin Li else if (n > 3) 50*67e74705SXin Li putchar('+'); 51*67e74705SXin Li else if (n > 2) 52*67e74705SXin Li putchar('x'); 53*67e74705SXin Li else 54*67e74705SXin Li putchar('*'); 55*67e74705SXin Li } 56*67e74705SXin Li putchar('\n'); 57*67e74705SXin Li } 58*67e74705SXin Li } 59*67e74705SXin Li main()60*67e74705SXin Liint main() { 61*67e74705SXin Li mandel(); 62*67e74705SXin Li return 0; 63*67e74705SXin Li } 64*67e74705SXin Li 65*67e74705SXin Li #endif /* sparc */ 66