140 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr8 -mtriple=powerpc64-unknown-unknown %s -o - | FileCheck %s3 4define i32 @xori64i32(i64 %a) {5; CHECK-LABEL: xori64i32:6; CHECK: # %bb.0:7; CHECK-NEXT: sradi 3, 3, 638; CHECK-NEXT: xori 3, 3, 655359; CHECK-NEXT: xoris 3, 3, 3276710; CHECK-NEXT: blr11 %shr4 = ashr i64 %a, 6312 %conv5 = trunc i64 %shr4 to i3213 %xor = xor i32 %conv5, 214748364714 ret i32 %xor15}16 17define i64 @selecti64i64(i64 %a) {18; CHECK-LABEL: selecti64i64:19; CHECK: # %bb.0:20; CHECK-NEXT: sradi 3, 3, 6321; CHECK-NEXT: xori 3, 3, 6553522; CHECK-NEXT: xoris 3, 3, 3276723; CHECK-NEXT: blr24 %c = icmp sgt i64 %a, -125 %s = select i1 %c, i64 2147483647, i64 -214748364826 ret i64 %s27}28 29define i32 @selecti64i32(i64 %a) {30; CHECK-LABEL: selecti64i32:31; CHECK: # %bb.0:32; CHECK-NEXT: sradi 3, 3, 6333; CHECK-NEXT: xori 3, 3, 6553534; CHECK-NEXT: xoris 3, 3, 3276735; CHECK-NEXT: blr36 %c = icmp sgt i64 %a, -137 %s = select i1 %c, i32 2147483647, i32 -214748364838 ret i32 %s39}40 41define i64 @selecti32i64(i32 %a) {42; CHECK-LABEL: selecti32i64:43; CHECK: # %bb.0:44; CHECK-NEXT: srawi 3, 3, 3145; CHECK-NEXT: xori 3, 3, 6553546; CHECK-NEXT: xoris 3, 3, 3276747; CHECK-NEXT: blr48 %c = icmp sgt i32 %a, -149 %s = select i1 %c, i64 2147483647, i64 -214748364850 ret i64 %s51}52 53 54 55define i8 @xori32i8(i32 %a) {56; CHECK-LABEL: xori32i8:57; CHECK: # %bb.0:58; CHECK-NEXT: srawi 3, 3, 3159; CHECK-NEXT: xori 3, 3, 8460; CHECK-NEXT: blr61 %shr4 = ashr i32 %a, 3162 %conv5 = trunc i32 %shr4 to i863 %xor = xor i8 %conv5, 8464 ret i8 %xor65}66 67define i32 @selecti32i32(i32 %a) {68; CHECK-LABEL: selecti32i32:69; CHECK: # %bb.0:70; CHECK-NEXT: srawi 3, 3, 3171; CHECK-NEXT: xori 3, 3, 8472; CHECK-NEXT: blr73 %c = icmp sgt i32 %a, -174 %s = select i1 %c, i32 84, i32 -8575 ret i32 %s76}77 78define i8 @selecti32i8(i32 %a) {79; CHECK-LABEL: selecti32i8:80; CHECK: # %bb.0:81; CHECK-NEXT: srawi 3, 3, 3182; CHECK-NEXT: xori 3, 3, 8483; CHECK-NEXT: blr84 %c = icmp sgt i32 %a, -185 %s = select i1 %c, i8 84, i8 -8586 ret i8 %s87}88 89define i32 @selecti8i32(i8 %a) {90; CHECK-LABEL: selecti8i32:91; CHECK: # %bb.0:92; CHECK-NEXT: extsb 3, 393; CHECK-NEXT: srawi 3, 3, 794; CHECK-NEXT: xori 3, 3, 8495; CHECK-NEXT: blr96 %c = icmp sgt i8 %a, -197 %s = select i1 %c, i32 84, i32 -8598 ret i32 %s99}100 101define i32 @icmpasreq(i32 %input, i32 %a, i32 %b) {102; CHECK-LABEL: icmpasreq:103; CHECK: # %bb.0:104; CHECK-NEXT: cmpwi 3, 0105; CHECK-NEXT: isellt 3, 4, 5106; CHECK-NEXT: blr107 %sh = ashr i32 %input, 31108 %c = icmp eq i32 %sh, -1109 %s = select i1 %c, i32 %a, i32 %b110 ret i32 %s111}112 113define i32 @icmpasrne(i32 %input, i32 %a, i32 %b) {114; CHECK-LABEL: icmpasrne:115; CHECK: # %bb.0:116; CHECK-NEXT: cmpwi 3, -1117; CHECK-NEXT: iselgt 3, 4, 5118; CHECK-NEXT: blr119 %sh = ashr i32 %input, 31120 %c = icmp ne i32 %sh, -1121 %s = select i1 %c, i32 %a, i32 %b122 ret i32 %s123}124 125define i32 @oneusecmp(i32 %a, i32 %b, i32 %d) {126; CHECK-LABEL: oneusecmp:127; CHECK: # %bb.0:128; CHECK-NEXT: cmpwi 3, 0129; CHECK-NEXT: srawi 6, 3, 31130; CHECK-NEXT: xori 6, 6, 127131; CHECK-NEXT: isellt 3, 5, 4132; CHECK-NEXT: add 3, 6, 3133; CHECK-NEXT: blr134 %c = icmp sle i32 %a, -1135 %s = select i1 %c, i32 -128, i32 127136 %s2 = select i1 %c, i32 %d, i32 %b137 %x = add i32 %s, %s2138 ret i32 %x139}140