1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=ppc64 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-m:e-i64:64-n32:64" 3*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 6*9880d681SAndroid Build Coastguard Workerdefine i64 @cn1() #0 { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker ret i64 281474976710655 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @cn1 11*9880d681SAndroid Build Coastguard Worker; CHECK: lis [[REG1:[0-9]+]], -1 12*9880d681SAndroid Build Coastguard Worker; CHECK: rldicr 3, [[REG1]], 48, 63 13*9880d681SAndroid Build Coastguard Worker; CHECK: blr 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 17*9880d681SAndroid Build Coastguard Workerdefine i64 @cnb() #0 { 18*9880d681SAndroid Build Coastguard Workerentry: 19*9880d681SAndroid Build Coastguard Worker ret i64 281474976710575 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @cnb 22*9880d681SAndroid Build Coastguard Worker; CHECK: lis [[REG1:[0-9]+]], -81 23*9880d681SAndroid Build Coastguard Worker; CHECK: rldicr 3, [[REG1]], 48, 63 24*9880d681SAndroid Build Coastguard Worker; CHECK: blr 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 28*9880d681SAndroid Build Coastguard Workerdefine i64 @f2(i64 %x) #0 { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker ret i64 -68719476736 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f2 33*9880d681SAndroid Build Coastguard Worker; CHECK: li [[REG1:[0-9]+]], -1 34*9880d681SAndroid Build Coastguard Worker; CHECK: sldi 3, [[REG1]], 36 35*9880d681SAndroid Build Coastguard Worker; CHECK: blr 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 39*9880d681SAndroid Build Coastguard Workerdefine i64 @f2a(i64 %x) #0 { 40*9880d681SAndroid Build Coastguard Workerentry: 41*9880d681SAndroid Build Coastguard Worker ret i64 -361850994688 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f2a 44*9880d681SAndroid Build Coastguard Worker; CHECK: li [[REG1:[0-9]+]], -337 45*9880d681SAndroid Build Coastguard Worker; CHECK: sldi 3, [[REG1]], 30 46*9880d681SAndroid Build Coastguard Worker; CHECK: blr 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 50*9880d681SAndroid Build Coastguard Workerdefine i64 @f2n(i64 %x) #0 { 51*9880d681SAndroid Build Coastguard Workerentry: 52*9880d681SAndroid Build Coastguard Worker ret i64 68719476735 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f2n 55*9880d681SAndroid Build Coastguard Worker; CHECK: lis [[REG1:[0-9]+]], -4096 56*9880d681SAndroid Build Coastguard Worker; CHECK: rldicr 3, [[REG1]], 36, 63 57*9880d681SAndroid Build Coastguard Worker; CHECK: blr 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 61*9880d681SAndroid Build Coastguard Workerdefine i64 @f3(i64 %x) #0 { 62*9880d681SAndroid Build Coastguard Workerentry: 63*9880d681SAndroid Build Coastguard Worker ret i64 8589934591 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @f3 66*9880d681SAndroid Build Coastguard Worker; CHECK: lis [[REG1:[0-9]+]], -32768 67*9880d681SAndroid Build Coastguard Worker; CHECK: rldicr 3, [[REG1]], 33, 63 68*9880d681SAndroid Build Coastguard Worker; CHECK: blr 69*9880d681SAndroid Build Coastguard Worker} 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 72*9880d681SAndroid Build Coastguard Workerdefine i64 @cn2n() #0 { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker ret i64 -1407374887747585 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @cn2n 77*9880d681SAndroid Build Coastguard Worker; CHECK: lis [[REG1:[0-9]+]], -5121 78*9880d681SAndroid Build Coastguard Worker; CHECK: ori [[REG2:[0-9]+]], [[REG1]], 65534 79*9880d681SAndroid Build Coastguard Worker; CHECK: rldicr 3, [[REG2]], 22, 63 80*9880d681SAndroid Build Coastguard Worker; CHECK: blr 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind readnone } 84*9880d681SAndroid Build Coastguard Worker 85