; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu \ ; RUN: -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix CHECK-32BIT ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ ; RUN: -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix CHECK-64BIT define dso_local zeroext range(i8 -1, 1) i8 @f(i8 noundef zeroext %x) { ; CHECK-32BIT-LABEL: f: ; CHECK-32BIT: # %bb.0: # %entry ; CHECK-32BIT-NEXT: addic r3, r3, -1 ; CHECK-32BIT-NEXT: subfe r3, r3, r3 ; CHECK-32BIT-NEXT: clrlwi r3, r3, 24 ; CHECK-32BIT-NEXT: blr ; ; CHECK-64BIT-LABEL: f: ; CHECK-64BIT: # %bb.0: # %entry ; CHECK-64BIT-NEXT: addic r3, r3, -1 ; CHECK-64BIT-NEXT: subfe r3, r3, r3 ; CHECK-64BIT-NEXT: clrldi r3, r3, 56 ; CHECK-64BIT-NEXT: blr entry: %cmp = icmp eq i8 %x, 0 %conv2 = sext i1 %cmp to i8 ret i8 %conv2 } define i32 @compare32(i64 %conv1) { ; CHECK-32BIT-LABEL: compare32: ; CHECK-32BIT: # %bb.0: # %entry ; CHECK-32BIT-NEXT: or r3, r4, r3 ; CHECK-32BIT-NEXT: addic r3, r3, -1 ; CHECK-32BIT-NEXT: subfe r3, r3, r3 ; CHECK-32BIT-NEXT: blr ; ; CHECK-64BIT-LABEL: compare32: ; CHECK-64BIT: # %bb.0: # %entry ; CHECK-64BIT-NEXT: addic r3, r3, -1 ; CHECK-64BIT-NEXT: subfe r3, r3, r3 ; CHECK-64BIT-NEXT: blr entry: %tobool2.not = icmp eq i64 %conv1, 0 %cond = sext i1 %tobool2.not to i32 ret i32 %cond } define i64 @compare64(i32 %conv1) { ; CHECK-32BIT-LABEL: compare64: ; CHECK-32BIT: # %bb.0: # %entry ; CHECK-32BIT-NEXT: addic r3, r3, -1 ; CHECK-32BIT-NEXT: subfe r3, r3, r3 ; CHECK-32BIT-NEXT: mr r4, r3 ; CHECK-32BIT-NEXT: blr ; ; CHECK-64BIT-LABEL: compare64: ; CHECK-64BIT: # %bb.0: # %entry ; CHECK-64BIT-NEXT: clrldi r3, r3, 32 ; CHECK-64BIT-NEXT: addic r3, r3, -1 ; CHECK-64BIT-NEXT: subfe r3, r3, r3 ; CHECK-64BIT-NEXT: blr entry: %tobool2.not = icmp eq i32 %conv1, 0 %cond = sext i1 %tobool2.not to i64 ret i64 %cond }