[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / CodeGen / PowerPC / rldimi.ll
blob4e26ddfc37f99e366c582b1adc6fe580899770f8
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 | FileCheck %s
3 ; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-ibm-aix -mcpu=pwr8 | FileCheck %s
5 define i64 @rldimi1(i64 %a) {
6 ; CHECK-LABEL: rldimi1:
7 ; CHECK:       # %bb.0: # %entry
8 ; CHECK-NEXT:    rldimi 3, 3, 8, 0
9 ; CHECK-NEXT:    blr
10 entry:
11   %x0 = shl i64 %a, 8
12   %x1 = and i64 %a, 255
13   %x2 = or i64 %x0, %x1
14   ret i64 %x2
17 define i64 @rldimi2(i64 %a) {
18 ; CHECK-LABEL: rldimi2:
19 ; CHECK:       # %bb.0: # %entry
20 ; CHECK-NEXT:    mr 4, 3
21 ; CHECK-NEXT:    rlwimi 4, 3, 8, 16, 23
22 ; CHECK-NEXT:    rlwimi 4, 3, 16, 8, 15
23 ; CHECK-NEXT:    rldimi 4, 3, 24, 0
24 ; CHECK-NEXT:    mr 3, 4
25 ; CHECK-NEXT:    blr
26 entry:
27   %x0 = shl i64 %a, 8
28   %x1 = and i64 %a, 255
29   %x2 = or i64 %x0, %x1
30   %x3 = shl i64 %x2, 16
31   %x4 = and i64 %x2, 65535
32   %x5 = or i64 %x3, %x4
33   ret i64 %x5
36 define i64 @rldimi3(i64 %a) {
37 ; CHECK-LABEL: rldimi3:
38 ; CHECK:       # %bb.0: # %entry
39 ; CHECK-NEXT:    rotldi 4, 3, 32
40 ; CHECK-NEXT:    rlwimi 4, 3, 0, 24, 31
41 ; CHECK-NEXT:    rlwimi 4, 3, 8, 16, 23
42 ; CHECK-NEXT:    rlwimi 4, 3, 16, 8, 15
43 ; CHECK-NEXT:    rlwimi 4, 3, 24, 0, 7
44 ; CHECK-NEXT:    rldimi 4, 3, 40, 16
45 ; CHECK-NEXT:    rldimi 4, 3, 48, 8
46 ; CHECK-NEXT:    rldimi 4, 3, 56, 0
47 ; CHECK-NEXT:    mr 3, 4
48 ; CHECK-NEXT:    blr
49 entry:
50   %0 = shl i64 %a, 8
51   %1 = and i64 %a, 255
52   %2 = or i64 %0, %1
53   %3 = shl i64 %2, 16
54   %4 = and i64 %2, 65535
55   %5 = or i64 %3, %4
56   %6 = shl i64 %5, 32
57   %7 = and i64 %5, 4294967295
58   %8 = or i64 %6, %7
59   ret i64 %8