brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · 04fe27f Raw
190 lines · plain
1; XFAIL: *2; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py3; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \4; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \5; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl6; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \7; RUN:   -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \8; RUN:  --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl9 10; Function Attrs: nounwind11define signext i32 @logic_ne_32(i32 signext %a, i32 signext %b, i32 signext %c) {12; CHECK-LABEL: logic_ne_32:13; CHECK:    xor r7, r3, r414; CHECK-NEXT:    li r6, 5515; CHECK-NEXT:    xor r5, r5, r616; CHECK-NEXT:    or r7, r7, r417; CHECK-NEXT:    cntlzw r5, r518; CHECK-NEXT:    cntlzw r6, r719; CHECK-NEXT:    srwi r6, r6, 520; CHECK-NEXT:    srwi r5, r5, 521; CHECK-NEXT:    or. r5, r6, r522; CHECK-NEXT:    bc 4, gt23entry:24  %tobool = icmp eq i32 %a, %b25  %tobool1 = icmp eq i32 %b, 026  %or.cond = and i1 %tobool, %tobool127  %tobool3 = icmp eq i32 %c, 5528  %or.cond5 = or i1 %or.cond, %tobool329  br i1 %or.cond5, label %if.end, label %if.then30 31if.then:                                          ; preds = %entry32  %call = tail call signext i32 @foo(i32 signext %a) #233  br label %return34 35if.end:                                           ; preds = %entry36  %call4 = tail call signext i32 @bar(i32 signext %b) #237  br label %return38 39return:                                           ; preds = %if.end, %if.then40  %retval.0 = phi i32 [ %call4, %if.end ], [ %call, %if.then ]41  ret i32 %retval.042}43 44define void @neg_truncate_i32_eq(ptr %ptr) {45; CHECK-LABEL: neg_truncate_i32_eq:46; CHECK:       # %bb.0: # %entry47; CHECK-NEXT:    lwz r3, 0(r3)48; CHECK-NEXT:    rldicl. r3, r3, 0, 6349; CHECK-NEXT:    bclr 12, eq, 050; CHECK-NEXT:  # %bb.1: # %if.end29.thread13651entry:52  %0 = load i32, ptr %ptr, align 453  %rem17127 = and i32 %0, 154  %cmp18 = icmp eq i32 %rem17127, 055  br label %if.else56 57if.else:                                          ; preds = %entry58  br i1 %cmp18, label %if.end29, label %if.end29.thread13659 60if.end29.thread136:                               ; preds = %if.else61  unreachable62 63if.end29:                                         ; preds = %if.else64  ret void65 66}67 68; Function Attrs: nounwind69define i64 @logic_eq_64(i64 %a, i64 %b, i64 %c) {70; CHECK-LABEL: logic_eq_64:71; CHECK:    xor r7, r3, r472; CHECK-NEXT:    li r6, 5573; CHECK-NEXT:    xor r5, r5, r674; CHECK-NEXT:    or r7, r7, r475; CHECK-NEXT:    cntlzd r6, r776; CHECK-NEXT:    cntlzd r5, r577; CHECK-NEXT:    rldicl r6, r6, 58, 6378; CHECK-NEXT:    rldicl r5, r5, 58, 6379; CHECK-NEXT:    or. r5, r6, r580; CHECK-NEXT:    bc 4, gt81entry:82  %tobool = icmp eq i64 %a, %b83  %tobool1 = icmp eq i64 %b, 084  %or.cond = and i1 %tobool, %tobool185  %tobool3 = icmp eq i64 %c, 5586  %or.cond5 = or i1 %or.cond, %tobool387  br i1 %or.cond5, label %if.end, label %if.then88 89if.then:                                          ; preds = %entry90  %call = tail call i64 @foo64(i64 %a) #291  br label %return92 93if.end:                                           ; preds = %entry94  %call4 = tail call i64 @bar64(i64 %b) #295  br label %return96 97return:                                           ; preds = %if.end, %if.then98  %retval.0 = phi i64 [ %call4, %if.end ], [ %call, %if.then ]99  ret i64 %retval.0100}101 102define void @neg_truncate_i64_eq(ptr %ptr) {103; CHECK-LABEL: neg_truncate_i64_eq:104; CHECK:       # %bb.0: # %entry105; CHECK-NEXT:    ld r3, 0(r3)106; CHECK-NEXT:    rldicl. r3, r3, 0, 63107; CHECK-NEXT:    bclr 12, eq, 0108; CHECK-NEXT:  # %bb.1: # %if.end29.thread136109entry:110  %0 = load i64, ptr %ptr, align 4111  %rem17127 = and i64 %0, 1112  %cmp18 = icmp eq i64 %rem17127, 0113  br label %if.else114 115if.else:                                          ; preds = %entry116  br i1 %cmp18, label %if.end29, label %if.end29.thread136117 118if.end29.thread136:                               ; preds = %if.else119  unreachable120 121if.end29:                                         ; preds = %if.else122  ret void123 124}125 126; Function Attrs: nounwind127define i64 @logic_ne_64(i64 %a, i64 %b, i64 %c) {128; CHECK-LABEL: logic_ne_64:129; CHECK:    xor r7, r3, r4130; CHECK-NEXT:    li r6, 55131; CHECK-NEXT:    addic r8, r7, -1132; CHECK-NEXT:    xor r5, r5, r6133; CHECK-NEXT:    subfe r7, r8, r7134; CHECK-NEXT:    cntlzd r5, r5135; CHECK-NEXT:    addic r12, r4, -1136; CHECK-NEXT:    rldicl r5, r5, 58, 63137; CHECK-NEXT:    subfe r6, r12, r4138; CHECK-NEXT:    and r6, r7, r6139; CHECK-NEXT:    or. r5, r6, r5140; CHECK-NEXT:    bc 4, gt141entry:142  %tobool = icmp ne i64 %a, %b143  %tobool1 = icmp ne i64 %b, 0144  %or.cond = and i1 %tobool, %tobool1145  %tobool3 = icmp eq i64 %c, 55146  %or.cond5 = or i1 %or.cond, %tobool3147  br i1 %or.cond5, label %if.end, label %if.then148 149if.then:                                          ; preds = %entry150  %call = tail call i64 @foo64(i64 %a) #2151  br label %return152 153if.end:                                           ; preds = %entry154  %call4 = tail call i64 @bar64(i64 %b) #2155  br label %return156 157return:                                           ; preds = %if.end, %if.then158  %retval.0 = phi i64 [ %call4, %if.end ], [ %call, %if.then ]159  ret i64 %retval.0160}161 162define void @neg_truncate_i64_ne(ptr %ptr) {163; CHECK-LABEL: neg_truncate_i64_ne:164; CHECK:       # %bb.0: # %entry165; CHECK-NEXT:    ld r3, 0(r3)166; CHECK-NEXT:    andi. r3, r3, 1167; CHECK-NEXT:    bclr 12, gt, 0168; CHECK-NEXT:  # %bb.1: # %if.end29.thread136169entry:170  %0 = load i64, ptr %ptr, align 4171  %rem17127 = and i64 %0, 1172  %cmp18 = icmp ne i64 %rem17127, 0173  br label %if.else174 175if.else:                                          ; preds = %entry176  br i1 %cmp18, label %if.end29, label %if.end29.thread136177 178if.end29.thread136:                               ; preds = %if.else179  unreachable180 181if.end29:                                         ; preds = %if.else182  ret void183 184}185 186declare signext i32 @foo(i32 signext)187declare signext i32 @bar(i32 signext)188declare i64 @foo64(i64)189declare i64 @bar64(i64)190