| 
678
 | 
     1  | 
@.str = private constant [4 x i8] c"%d\0A\00"
  | 
| 
 | 
     2  | 
  | 
| 
 | 
     3  | 
declare i32 @printf(i8*, ...)
  | 
| 
 | 
     4  | 
  | 
| 
 | 
     5  | 
; prints out an integer
  | 
| 
 | 
     6  | 
define i32 @printInt(i32 %x) {
 | 
| 
 | 
     7  | 
   %t0 = getelementptr [4 x i8], [4 x i8]* @.str, i32 0, i32 0
  | 
| 
 | 
     8  | 
   call i32 (i8*, ...) @printf(i8* %t0, i32 %x) 
  | 
| 
 | 
     9  | 
   ret i32 %x
  | 
| 
 | 
    10  | 
}
  | 
| 
 | 
    11  | 
  | 
| 
 | 
    12  | 
; square function
  | 
| 
 | 
    13  | 
define i32 @sqr(i32 %x) {
 | 
| 
 | 
    14  | 
   %tmp = mul i32 %x, %x
  | 
| 
 | 
    15  | 
   ret i32 %tmp
  | 
| 
 | 
    16  | 
}
  | 
| 
 | 
    17  | 
  | 
| 
 | 
    18  | 
; main 
  | 
| 
 | 
    19  | 
define i32 @main() {
 | 
| 
 | 
    20  | 
  %1 = call i32 @sqr(i32 5)
  | 
| 
701
 | 
    21  | 
  %2 = call i32 @printInt(i32 %1)
  | 
| 
678
 | 
    22  | 
  ret i32 %1
  | 
| 
 | 
    23  | 
}
  | 
| 
 | 
    24  | 
  |