Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc -mcpu=pwr7 < %s | FileCheck %s
      2 target datalayout = "E-m:e-i64:64-n32:64"
      3 target triple = "powerpc64-unknown-linux-gnu"
      4 
      5 %struct.cd = type { i64, i64, i64 }
      6 
      7 @something = global [33 x i8] c"this is not really code, but...\0A\00", align 1
      8 @tls_something = thread_local global %struct.cd zeroinitializer, align 8
      9 @extern_something = external global %struct.cd
     10 
     11 ; Function Attrs: nounwind
     12 define void @foo() #0 {
     13 entry:
     14   tail call void bitcast ([33 x i8]* @something to void ()*)() #0
     15   ret void
     16 
     17 ; CHECK-LABEL: @foo
     18 ; CHECK-DAG: addis [[REG1:[0-9]+]], 2, something@toc@ha
     19 ; CHECK-DAG: std 2, 40(1)
     20 ; CHECK-DAG: addi [[REG3:[0-9]+]], [[REG1]], something@toc@l
     21 ; CHECK-DAG: ld [[REG2:[0-9]+]], 0([[REG3]])
     22 ; CHECK-DAG: ld 11, 16([[REG3]])
     23 ; CHECK-DAG: ld 2, 8([[REG3]])
     24 ; CHECK-DAG: mtctr [[REG2]]
     25 ; CHECK: bctrl
     26 ; CHECK: ld 2, 40(1)
     27 ; CHECK: blr
     28 }
     29 
     30 ; Function Attrs: nounwind
     31 define void @bar() #0 {
     32 entry:
     33   tail call void bitcast (%struct.cd* @tls_something to void ()*)() #0
     34   ret void
     35 
     36 ; CHECK-LABEL: @bar
     37 ; CHECK-DAG: addis [[REG1:[0-9]+]], 13, tls_something@tprel@ha
     38 ; CHECK-DAG: std 2, 40(1)
     39 ; CHECK-DAG: addi [[REG3:[0-9]+]], [[REG1]], tls_something@tprel@l
     40 ; CHECK-DAG: ld [[REG2:[0-9]+]], 0([[REG3]])
     41 ; CHECK-DAG: ld 11, 16([[REG3]])
     42 ; CHECK-DAG: ld 2, 8([[REG3]])
     43 ; CHECK-DAG: mtctr [[REG2]]
     44 ; CHECK: bctrl
     45 ; CHECK: ld 2, 40(1)
     46 ; CHECK: blr
     47 }
     48 
     49 ; Function Attrs: nounwind
     50 define void @ext() #0 {
     51 entry:
     52   tail call void bitcast (%struct.cd* @extern_something to void ()*)() #0
     53   ret void
     54 
     55 ; CHECK-LABEL: @ext
     56 ; CHECK-DAG: addis [[REG1:[0-9]+]], 2, [[NAME:[._A-Za-z0-9]+]]@toc@ha
     57 ; CHECK-DAG: std 2, 40(1)
     58 ; CHECK-DAG: ld [[REG3:[0-9]+]], [[NAME]]@toc@l(3)
     59 ; CHECK-DAG: ld [[REG2:[0-9]+]], 0([[REG3]])
     60 ; CHECK-DAG: ld 11, 16([[REG3]])
     61 ; CHECK-DAG: ld 2, 8([[REG3]])
     62 ; CHECK-DAG: mtctr [[REG2]]
     63 ; CHECK: bctrl
     64 ; CHECK: ld 2, 40(1)
     65 ; CHECK: blr
     66 }
     67 
     68 attributes #0 = { nounwind }
     69 
     70