92 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; Testfile that verifies positive case (0 or 1 only) for BCD builtins national2packed, packed2zoned and zoned2packed.3; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \4; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s5 6; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64-unknown-unknown \7; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s8 9; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc-unknown-unknown \10; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s11 12; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64-ibm-aix-xcoff \13; RUN: -ppc-asm-full-reg-names < %s | FileCheck %s14 15declare <16 x i8> @llvm.ppc.national2packed(<16 x i8>, i32 immarg)16 17define <16 x i8> @tBcd_National2packed_imm0(<16 x i8> %a) {18; CHECK-LABEL: tBcd_National2packed_imm0:19; CHECK: # %bb.0: # %entry20; CHECK-NEXT: bcdcfn. v2, v2, 021; CHECK-NEXT: blr22entry:23 %0 = call <16 x i8> @llvm.ppc.national2packed(<16 x i8> %a, i32 0)24 ret <16 x i8> %025}26 27define <16 x i8> @tBcd_National2packed_imm1(<16 x i8> %a) {28; CHECK-LABEL: tBcd_National2packed_imm1:29; CHECK: # %bb.0: # %entry30; CHECK-NEXT: bcdcfn. v2, v2, 131; CHECK-NEXT: blr32entry:33 %0 = call <16 x i8> @llvm.ppc.national2packed(<16 x i8> %a, i32 1)34 ret <16 x i8> %035}36 37declare <16 x i8> @llvm.ppc.packed2national(<16 x i8>)38 39define <16 x i8> @tBcd_Packed2national(<16 x i8> %a) {40; CHECK-LABEL: tBcd_Packed2national:41; CHECK: # %bb.0: # %entry42; CHECK-NEXT: bcdctn. v2, v243; CHECK-NEXT: blr44entry:45 %0 = call <16 x i8> @llvm.ppc.packed2national(<16 x i8> %a)46 ret <16 x i8> %047}48 49declare <16 x i8> @llvm.ppc.packed2zoned(<16 x i8>, i32 immarg)50 51define <16 x i8> @tBcd_Packed2zoned_imm0(<16 x i8> %a) {52; CHECK-LABEL: tBcd_Packed2zoned_imm0:53; CHECK: # %bb.0: # %entry54; CHECK-NEXT: bcdctz. v2, v2, 055; CHECK-NEXT: blr56entry:57 %0 = call <16 x i8> @llvm.ppc.packed2zoned(<16 x i8> %a, i32 0)58 ret <16 x i8> %059}60 61define <16 x i8> @tBcd_Packed2zoned_imm1(<16 x i8> %a) {62; CHECK-LABEL: tBcd_Packed2zoned_imm1:63; CHECK: # %bb.0: # %entry64; CHECK-NEXT: bcdctz. v2, v2, 165; CHECK-NEXT: blr66entry:67 %0 = call <16 x i8> @llvm.ppc.packed2zoned(<16 x i8> %a, i32 1)68 ret <16 x i8> %069}70 71declare <16 x i8> @llvm.ppc.zoned2packed(<16 x i8>, i32 immarg)72 73define <16 x i8> @tBcd_Zoned2packed_imm0(<16 x i8> %a) {74; CHECK-LABEL: tBcd_Zoned2packed_imm0:75; CHECK: # %bb.0: # %entry76; CHECK-NEXT: bcdcfz. v2, v2, 077; CHECK-NEXT: blr78entry:79 %0 = call <16 x i8> @llvm.ppc.zoned2packed(<16 x i8> %a, i32 0)80 ret <16 x i8> %081}82 83define <16 x i8> @tBcd_Zoned2packed_imm1(<16 x i8> %a) {84; CHECK-LABEL: tBcd_Zoned2packed_imm1:85; CHECK: # %bb.0: # %entry86; CHECK-NEXT: bcdcfz. v2, v2, 187; CHECK-NEXT: blr88entry:89 %0 = call <16 x i8> @llvm.ppc.zoned2packed(<16 x i8> %a, i32 1)90 ret <16 x i8> %091}92