| ; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -mcpu=pwr4 --mattr=-altivec \ |
| ; RUN: --verify-machineinstrs < %s | FileCheck --check-prefix=64BIT %s |
| |
| ; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -mcpu=pwr4 --mattr=-altivec \ |
| ; RUN: --verify-machineinstrs < %s | FileCheck --check-prefix=32BIT %s |
| |
| define dso_local signext i32 @killOne(i32 signext %i) { |
| entry: |
| tail call void asm sideeffect "# Clobber CR", "~{cr4}"() |
| %call = call signext i32 @do_something(i32 %i) |
| ret i32 %call |
| } |
| |
| define dso_local signext i32 @killAll(i32 signext %i) { |
| entry: |
| tail call void asm sideeffect "# Clobber CR", "~{cr0},~{cr1},~{cr2},~{cr3},~{cr4},~{cr5},~{cr6},~{cr7}" () |
| %call = call signext i32 @do_something(i32 %i) |
| ret i32 %call |
| } |
| |
| declare signext i32 @do_something(i32 signext) |
| |
| ; 64BIT-LABEL: .killOne: |
| |
| ; 64BIT: mflr 0 |
| ; 64BIT-NEXT: std 0, 16(1) |
| ; 64BIT-NEXT: mfcr 12 |
| ; 64BIT-NEXT: stw 12, 8(1) |
| ; 64BIT: stdu 1, -112(1) |
| |
| ; 64BIT: # Clobber CR |
| ; 64BIT: bl .do_something |
| |
| ; 64BIT: addi 1, 1, 112 |
| ; 64BIT-NEXT: ld 0, 16(1) |
| ; 64BIT-NEXT: lwz 12, 8(1) |
| ; 64BIT-NEXT: mtlr 0 |
| ; 64BIT-NEXT: mtocrf 8, 12 |
| ; 64BIT: blr |
| |
| ; 32BIT-LABEL: .killOne: |
| |
| ; 32BIT: mflr 0 |
| ; 32BIT-NEXT: stw 0, 8(1) |
| ; 32BIT-NEXT: mfcr 12 |
| ; 32BIT-NEXT: stw 12, 4(1) |
| ; 32BIT: stwu 1, -64(1) |
| |
| ; 32BIT: # Clobber CR |
| ; 32BIT: bl .do_something |
| |
| ; 32BIT: addi 1, 1, 64 |
| ; 32BIT-NEXT: lwz 0, 8(1) |
| ; 32BIT-NEXT: lwz 12, 4(1) |
| ; 32BIT-NEXT: mtlr 0 |
| ; 32BIT-NEXT: mtocrf 8, 12 |
| ; 32BIT: blr |
| |
| |
| ; 64BIT-LABEL: .killAll: |
| |
| ; 64BIT: addi 1, 1, 112 |
| ; 64BIT-NEXT: ld 0, 16(1) |
| ; 64BIT-NEXT: lwz 12, 8(1) |
| ; 64BIT-NEXT: mtlr 0 |
| ; 64BIT-NEXT: mtocrf 32, 12 |
| ; 64BIT-NEXT: mtocrf 16, 12 |
| ; 64BIT-NEXT: mtocrf 8, 12 |
| ; 64BIT-NEXT: blr |
| |
| |
| ; 32BIT-LABEL: .killAll: |
| |
| ; 32BIT: addi 1, 1, 64 |
| ; 32BIT-NEXT: lwz 0, 8(1) |
| ; 32BIT-NEXT: lwz 12, 4(1) |
| ; 32BIT-NEXT: mtlr 0 |
| ; 32BIT-NEXT: mtocrf 32, 12 |
| ; 32BIT-NEXT: mtocrf 16, 12 |
| ; 32BIT-NEXT: mtocrf 8, 12 |
| ; 32BIT-NEXT: blr |