1 ; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s
2 target datalayout = "E-m:e-i64:64-n32:64"
3 target triple = "powerpc64-unknown-linux-gnu"
5 define i64 @test1(i64 %a, i64 %b) {
7 %c = icmp eq i64 %a, %b
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
21 ; CHECK: mfcr [[REG1:[0-9]+]]
23 ; CHECK-DAG: mfocrf [[REG2:[0-9]+]],
24 ; CHECK-DAG: stw [[REG1]], 8(1)
25 ; CHECK-DAG: stw [[REG2]], -4(1)
28 ; CHECK: lwz [[REG3:[0-9]+]], -4(1)
29 ; CHECK: mtocrf 128, [[REG3]]
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]]
38 define i64 @test2(i64 %a, i64 %b) {
40 %c = icmp eq i64 %a, %b
44 call { i64, i64 } asm sideeffect "sc", "={r0},={r3},{r0},~{cc},~{cr1},~{cr2},~{cr3},~{cr4},~{cr5},~{cr6},~{cr7}" (i64 %a)
45 br i1 %c, label %bar, label %end
54 ; CHECK: mfcr [[REG1:[0-9]+]]
56 ; CHECK-DAG: mfocrf [[REG2:[0-9]+]],
57 ; CHECK-DAG: stw [[REG1]], 8(1)
58 ; CHECK-DAG: stw [[REG2]], -4(1)
61 ; CHECK: lwz [[REG3:[0-9]+]], -4(1)
62 ; CHECK: mtocrf 128, [[REG3]]
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]]