| ; 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 |
| } |
| |