progs/sqr.ll
author Christian Urban <christian.urban@kcl.ac.uk>
Mon, 22 Nov 2021 11:35:38 +0000
changeset 851 2918388fe4ab
parent 701 81377a3eb717
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
678
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     1
@.str = private constant [4 x i8] c"%d\0A\00"
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     2
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     3
declare i32 @printf(i8*, ...)
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     4
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     5
; prints out an integer
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     6
define i32 @printInt(i32 %x) {
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     7
   %t0 = getelementptr [4 x i8], [4 x i8]* @.str, i32 0, i32 0
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     8
   call i32 (i8*, ...) @printf(i8* %t0, i32 %x) 
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     9
   ret i32 %x
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    10
}
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    11
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    12
; square function
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    13
define i32 @sqr(i32 %x) {
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    14
   %tmp = mul i32 %x, %x
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    15
   ret i32 %tmp
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    16
}
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    17
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    18
; main 
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    19
define i32 @main() {
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    20
  %1 = call i32 @sqr(i32 5)
701
81377a3eb717 updated
Christian Urban <urbanc@in.tum.de>
parents: 678
diff changeset
    21
  %2 = call i32 @printInt(i32 %1)
678
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    22
  ret i32 %1
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    23
}
6601ff1d9e0a updated
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    24