73 lines · plain
1; Check handling of the mftb instruction.2; For CPUs 601 and pwr3, the mftb instruction should be emitted.3; On all other CPUs (including generic, ppc, ppc64), the mfspr instruction 4; should be used instead. There should no longer be a deprecated warning 5; message emittedfor this instruction for any CPU.6 7; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s 2>&1 \8; RUN: | FileCheck %s --check-prefix=CHECK-MFSPR9; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s 2>&1 \10; RUN: | FileCheck %s --check-prefix=CHECK-MFSPR11; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu < %s 2>&1 \12; RUN: | FileCheck %s --check-prefix=CHECK-MFSPR13; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu < %s 2>&1 \14; RUN: | FileCheck %s --check-prefix=CHECK-MFSPR15; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu -mcpu=ppc < %s 2>&1 \16; RUN: | FileCheck %s --check-prefix=CHECK-MFSPR17; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu -mcpu=601 < %s 2>&1 \18; RUN: | FileCheck %s --check-prefix=CHECK-MFTB19; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu -mcpu=pwr3 < %s 2>&1 \20; RUN: | FileCheck %s --check-prefix=CHECK-MFTB21 22; CHECK-MFSPR-NOT: warning: deprecated23; CHECK-MFTB-NOT: warning: deprecated24 25define i32 @get_time() {26 %time = call i32 asm "mftb $0, 268", "=r"()27 ret i32 %time28; CHECK-MFSPR-LABEL: @get_time29; CHECK-MFSPR: mfspr 3, 26830; CHECK-MFSPR: blr31 32; CHECK-MFTB-LABEL: @get_time33; CHECK-MFTB: mftb 3, 26834; CHECK-MFTB: blr35}36 37define i32 @get_timeu() {38 %time = call i32 asm "mftb $0, 269", "=r"()39 ret i32 %time40; CHECK-MFSPR-LABEL: @get_timeu41; CHECK-MFSPR: mfspr 3, 26942; CHECK-MFSPR: blr43 44; CHECK-MFTB-LABEL: @get_timeu45; CHECK-MFTB: mftbu 346; CHECK-MFTB: blr47}48 49define i32 @get_time_e() {50 %time = call i32 asm "mftb $0", "=r"()51 ret i32 %time52; CHECK-MFSPR-LABEL: @get_time_e53; CHECK-MFSPR: mfspr 3, 26854; CHECK-MFSPR: blr55 56; CHECK-MFTB-LABEL: @get_time_e57; CHECK-MFTB: mftb 3, 26858; CHECK-MFTB: blr59}60 61define i32 @get_timeu_e() {62 %time = call i32 asm "mftbu $0", "=r"()63 ret i32 %time64; CHECK-MFSPR-LABEL: @get_timeu_e65; CHECK-MFSPR: mfspr 3, 26966; CHECK-MFSPR: blr67 68; CHECK-MFTB-LABEL: @get_timeu_e69; CHECK-MFTB: mftbu 370; CHECK-MFTB: blr71}72 73