61 lines
1.6 KiB
LLVM
61 lines
1.6 KiB
LLVM
|
; 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
|
||
|
}
|