82 lines · plain
1; RUN: llc -mtriple=powerpc64-unknown-aix-xcoff -mcpu=pwr4 --mattr=-altivec \2; RUN: --verify-machineinstrs < %s | FileCheck --check-prefix=64BIT %s3 4; RUN: llc -mtriple=powerpc-unknown-aix-xcoff -mcpu=pwr4 --mattr=-altivec \5; RUN: --verify-machineinstrs < %s | FileCheck --check-prefix=32BIT %s6 7define dso_local signext i32 @killOne(i32 signext %i) {8entry:9 tail call void asm sideeffect "# Clobber CR", "~{cr4}"()10 %call = call signext i32 @do_something(i32 %i)11 ret i32 %call12}13 14define dso_local signext i32 @killAll(i32 signext %i) {15entry:16 tail call void asm sideeffect "# Clobber CR", "~{cr0},~{cr1},~{cr2},~{cr3},~{cr4},~{cr5},~{cr6},~{cr7}" ()17 %call = call signext i32 @do_something(i32 %i)18 ret i32 %call19}20 21declare signext i32 @do_something(i32 signext)22 23; 64BIT-LABEL: .killOne:24 25; 64BIT: mfcr 1226; 64BIT-NEXT: stw 12, 8(1)27; 64BIT-NEXT: mflr 028; 64BIT-NEXT: stdu 1, -112(1)29; 64BIT: std 0, 128(1)30 31; 64BIT: # Clobber CR32; 64BIT: bl .do_something33 34; 64BIT: addi 1, 1, 11235; 64BIT-NEXT: ld 0, 16(1)36; 64BIT-NEXT: lwz 12, 8(1)37; 64BIT-NEXT: mtlr 038; 64BIT-NEXT: mtocrf 8, 1239; 64BIT: blr40 41; 32BIT-LABEL: .killOne:42 43; 32BIT: mfcr 1244; 32BIT-NEXT: stw 12, 4(1)45; 32BIT-NEXT: mflr 046; 32BIT-NEXT: stwu 1, -64(1)47; 32BIT: stw 0, 72(1)48 49; 32BIT: # Clobber CR50; 32BIT: bl .do_something51 52; 32BIT: addi 1, 1, 6453; 32BIT-NEXT: lwz 0, 8(1)54; 32BIT-NEXT: lwz 12, 4(1)55; 32BIT-NEXT: mtlr 056; 32BIT-NEXT: mtocrf 8, 1257; 32BIT: blr58 59 60; 64BIT-LABEL: .killAll:61 62; 64BIT: addi 1, 1, 11263; 64BIT-NEXT: ld 0, 16(1)64; 64BIT-NEXT: lwz 12, 8(1)65; 64BIT-NEXT: mtlr 066; 64BIT-NEXT: mtocrf 32, 1267; 64BIT-NEXT: mtocrf 16, 1268; 64BIT-NEXT: mtocrf 8, 1269; 64BIT-NEXT: blr70 71 72; 32BIT-LABEL: .killAll:73 74; 32BIT: addi 1, 1, 6475; 32BIT-NEXT: lwz 0, 8(1)76; 32BIT-NEXT: lwz 12, 4(1)77; 32BIT-NEXT: mtlr 078; 32BIT-NEXT: mtocrf 32, 1279; 32BIT-NEXT: mtocrf 16, 1280; 32BIT-NEXT: mtocrf 8, 1281; 32BIT-NEXT: blr82