| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3 |
| ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 | FileCheck %s |
| ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix -mcpu=pwr8 | FileCheck %s |
| |
| define i64 @rldimi1(i64 %a) { |
| ; CHECK-LABEL: rldimi1: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: rldimi 3, 3, 8, 0 |
| ; CHECK-NEXT: blr |
| entry: |
| %x0 = shl i64 %a, 8 |
| %x1 = and i64 %a, 255 |
| %x2 = or i64 %x0, %x1 |
| ret i64 %x2 |
| } |
| |
| define i64 @rldimi2(i64 %a) { |
| ; CHECK-LABEL: rldimi2: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: mr 4, 3 |
| ; CHECK-NEXT: rlwimi 4, 3, 8, 16, 23 |
| ; CHECK-NEXT: rlwimi 4, 3, 16, 8, 15 |
| ; CHECK-NEXT: rldimi 4, 3, 24, 0 |
| ; CHECK-NEXT: mr 3, 4 |
| ; CHECK-NEXT: blr |
| entry: |
| %x0 = shl i64 %a, 8 |
| %x1 = and i64 %a, 255 |
| %x2 = or i64 %x0, %x1 |
| %x3 = shl i64 %x2, 16 |
| %x4 = and i64 %x2, 65535 |
| %x5 = or i64 %x3, %x4 |
| ret i64 %x5 |
| } |
| |
| define i64 @rldimi3(i64 %a) { |
| ; CHECK-LABEL: rldimi3: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: rotldi 4, 3, 32 |
| ; CHECK-NEXT: rlwimi 4, 3, 0, 24, 31 |
| ; CHECK-NEXT: rlwimi 4, 3, 8, 16, 23 |
| ; CHECK-NEXT: rlwimi 4, 3, 16, 8, 15 |
| ; CHECK-NEXT: rlwimi 4, 3, 24, 0, 7 |
| ; CHECK-NEXT: rldimi 4, 3, 40, 16 |
| ; CHECK-NEXT: rldimi 4, 3, 48, 8 |
| ; CHECK-NEXT: rldimi 4, 3, 56, 0 |
| ; CHECK-NEXT: mr 3, 4 |
| ; CHECK-NEXT: blr |
| entry: |
| %0 = shl i64 %a, 8 |
| %1 = and i64 %a, 255 |
| %2 = or i64 %0, %1 |
| %3 = shl i64 %2, 16 |
| %4 = and i64 %2, 65535 |
| %5 = or i64 %3, %4 |
| %6 = shl i64 %5, 32 |
| %7 = and i64 %5, 4294967295 |
| %8 = or i64 %6, %7 |
| ret i64 %8 |
| } |