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 define i64 @test1(i64 %a, i64 %b) {
      6 entry:
      7   %c = icmp eq i64 %a, %b
      8   br label %foo
      9 
     10 foo:
     11   call { i64, i64 } asm sideeffect "sc", "={r0},={r3},{r0},~{cr0},~{cr1},~{cr2},~{cr3},~{cr4},~{cr5},~{cr6},~{cr7}" (i64 %a)
     12   br i1 %c, label %bar, label %end
     13 
     14 bar:
     15   ret i64 %b
     16 
     17 end:
     18   ret i64 %a
     19 
     20 ; CHECK-LABEL: @test1
     21 ; CHECK: mfcr [[REG1:[0-9]+]]
     22 ; CHECK-DAG: cmpd
     23 ; CHECK-DAG: mfocrf [[REG2:[0-9]+]],
     24 ; CHECK-DAG: stw [[REG1]], 8(1)
     25 ; CHECK-DAG: stw [[REG2]], -4(1)
     26 
     27 ; CHECK: sc
     28 ; CHECK: lwz [[REG3:[0-9]+]], -4(1)
     29 ; CHECK: mtocrf 128, [[REG3]]
     30 
     31 ; CHECK: lwz [[REG4:[0-9]+]], 8(1)
     32 ; CHECK-DAG: mtocrf 32, [[REG4]]
     33 ; CHECK-DAG: mtocrf 16, [[REG4]]
     34 ; CHECK-DAG: mtocrf 8, [[REG4]]
     35 ; CHECK: blr
     36 }
     37 
     38 define i64 @test2(i64 %a, i64 %b) {
     39 entry:
     40   %c = icmp eq i64 %a, %b
     41   br label %foo
     42 
     43 foo:
     44   call { i64, i64 } asm sideeffect "sc", "={r0},={r3},{r0},~{cc}" (i64 %a)
     45   br i1 %c, label %bar, label %end
     46 
     47 bar:
     48   ret i64 %b
     49 
     50 end:
     51   ret i64 %a
     52 
     53 ; CHECK-LABEL: @test2
     54 ; CHECK: mfcr [[REG1:[0-9]+]]
     55 ; CHECK-DAG: cmpd
     56 ; CHECK-DAG: mfocrf [[REG2:[0-9]+]],
     57 ; CHECK-DAG: stw [[REG1]], 8(1)
     58 ; CHECK-DAG: stw [[REG2]], -4(1)
     59 
     60 ; CHECK: sc
     61 ; CHECK: lwz [[REG3:[0-9]+]], -4(1)
     62 ; CHECK: mtocrf 128, [[REG3]]
     63 
     64 ; CHECK: lwz [[REG4:[0-9]+]], 8(1)
     65 ; CHECK-DAG: mtocrf 32, [[REG4]]
     66 ; CHECK-DAG: mtocrf 16, [[REG4]]
     67 ; CHECK-DAG: mtocrf 8, [[REG4]]
     68 ; CHECK: blr
     69 }
     70 
     71