1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=bpfel -show-mc-encoding | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @lshr8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone { 4*9880d681SAndroid Build Coastguard Workerentry: 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lshr8: 6*9880d681SAndroid Build Coastguard Worker; CHECK: srl r1, r2 # encoding: [0x7f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 7*9880d681SAndroid Build Coastguard Worker %shr = lshr i8 %a, %cnt 8*9880d681SAndroid Build Coastguard Worker ret i8 %shr 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine signext i8 @ashr8(i8 signext %a, i8 zeroext %cnt) nounwind readnone { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr8: 14*9880d681SAndroid Build Coastguard Worker; CHECK: sra r1, r2 # encoding: [0xcf,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 15*9880d681SAndroid Build Coastguard Worker %shr = ashr i8 %a, %cnt 16*9880d681SAndroid Build Coastguard Worker ret i8 %shr 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @shl8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone { 20*9880d681SAndroid Build Coastguard Workerentry: 21*9880d681SAndroid Build Coastguard Worker; CHECK: shl8 22*9880d681SAndroid Build Coastguard Worker; CHECK: sll r1, r2 # encoding: [0x6f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 23*9880d681SAndroid Build Coastguard Worker %shl = shl i8 %a, %cnt 24*9880d681SAndroid Build Coastguard Worker ret i8 %shl 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @lshr16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone { 28*9880d681SAndroid Build Coastguard Workerentry: 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lshr16: 30*9880d681SAndroid Build Coastguard Worker; CHECK: srl r1, r2 # encoding: [0x7f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 31*9880d681SAndroid Build Coastguard Worker %shr = lshr i16 %a, %cnt 32*9880d681SAndroid Build Coastguard Worker ret i16 %shr 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine signext i16 @ashr16(i16 signext %a, i16 zeroext %cnt) nounwind readnone { 36*9880d681SAndroid Build Coastguard Workerentry: 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr16: 38*9880d681SAndroid Build Coastguard Worker; CHECK: sra r1, r2 # encoding: [0xcf,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 39*9880d681SAndroid Build Coastguard Worker %shr = ashr i16 %a, %cnt 40*9880d681SAndroid Build Coastguard Worker ret i16 %shr 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @shl16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone { 44*9880d681SAndroid Build Coastguard Workerentry: 45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl16: 46*9880d681SAndroid Build Coastguard Worker; CHECK: sll r1, r2 # encoding: [0x6f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 47*9880d681SAndroid Build Coastguard Worker %shl = shl i16 %a, %cnt 48*9880d681SAndroid Build Coastguard Worker ret i16 %shl 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @lshr32(i32 zeroext %a, i32 zeroext %cnt) nounwind readnone { 52*9880d681SAndroid Build Coastguard Workerentry: 53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lshr32: 54*9880d681SAndroid Build Coastguard Worker; CHECK: srl r1, r2 # encoding: [0x7f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 55*9880d681SAndroid Build Coastguard Worker; CHECK: slli r1, 32 # encoding: [0x67,0x01,0x00,0x00,0x20,0x00,0x00,0x00] 56*9880d681SAndroid Build Coastguard Worker %shr = lshr i32 %a, %cnt 57*9880d681SAndroid Build Coastguard Worker ret i32 %shr 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerdefine signext i32 @ashr32(i32 signext %a, i32 zeroext %cnt) nounwind readnone { 61*9880d681SAndroid Build Coastguard Workerentry: 62*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr32: 63*9880d681SAndroid Build Coastguard Worker; CHECK: sra r1, r2 # encoding: [0xcf,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 64*9880d681SAndroid Build Coastguard Worker %shr = ashr i32 %a, %cnt 65*9880d681SAndroid Build Coastguard Worker ret i32 %shr 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Workerdefine zeroext i32 @shl32(i32 zeroext %a, i32 zeroext %cnt) nounwind readnone { 69*9880d681SAndroid Build Coastguard Workerentry: 70*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl32: 71*9880d681SAndroid Build Coastguard Worker; CHECK: sll r1, r2 # encoding: [0x6f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 72*9880d681SAndroid Build Coastguard Worker %shl = shl i32 %a, %cnt 73*9880d681SAndroid Build Coastguard Worker ret i32 %shl 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine zeroext i64 @lshr64(i64 zeroext %a, i64 zeroext %cnt) nounwind readnone { 77*9880d681SAndroid Build Coastguard Workerentry: 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: lshr64: 79*9880d681SAndroid Build Coastguard Worker; CHECK: srl r1, r2 # encoding: [0x7f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 80*9880d681SAndroid Build Coastguard Worker %shr = lshr i64 %a, %cnt 81*9880d681SAndroid Build Coastguard Worker ret i64 %shr 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine signext i64 @ashr64(i64 signext %a, i64 zeroext %cnt) nounwind readnone { 85*9880d681SAndroid Build Coastguard Workerentry: 86*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr64: 87*9880d681SAndroid Build Coastguard Worker; CHECK: sra r1, r2 # encoding: [0xcf,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 88*9880d681SAndroid Build Coastguard Worker %shr = ashr i64 %a, %cnt 89*9880d681SAndroid Build Coastguard Worker ret i64 %shr 90*9880d681SAndroid Build Coastguard Worker} 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workerdefine zeroext i64 @shl64(i64 zeroext %a, i64 zeroext %cnt) nounwind readnone { 93*9880d681SAndroid Build Coastguard Workerentry: 94*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shl64: 95*9880d681SAndroid Build Coastguard Worker; CHECK: sll r1, r2 # encoding: [0x6f,0x21,0x00,0x00,0x00,0x00,0x00,0x00] 96*9880d681SAndroid Build Coastguard Worker; CHECK: mov r0, r1 # encoding: [0xbf,0x10,0x00,0x00,0x00,0x00,0x00,0x00] 97*9880d681SAndroid Build Coastguard Worker; CHECK: ret # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00] 98*9880d681SAndroid Build Coastguard Worker %shl = shl i64 %a, %cnt 99*9880d681SAndroid Build Coastguard Worker ret i64 %shl 100*9880d681SAndroid Build Coastguard Worker} 101