1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64" 4*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu" 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine i8* @test_stbu(i8* %base, i8 zeroext %val) nounwind { 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i8, i8* %base, i64 16 9*9880d681SAndroid Build Coastguard Worker store i8 %val, i8* %arrayidx, align 1 10*9880d681SAndroid Build Coastguard Worker ret i8* %arrayidx 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stbu 13*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 14*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stbu 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine i8* @test_stbux(i8* %base, i8 zeroext %val, i64 %offset) nounwind { 18*9880d681SAndroid Build Coastguard Workerentry: 19*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i8, i8* %base, i64 %offset 20*9880d681SAndroid Build Coastguard Worker store i8 %val, i8* %arrayidx, align 1 21*9880d681SAndroid Build Coastguard Worker ret i8* %arrayidx 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stbux 24*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stbux 26*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine i16* @test_sthu(i16* %base, i16 zeroext %val) nounwind { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i16, i16* %base, i64 16 31*9880d681SAndroid Build Coastguard Worker store i16 %val, i16* %arrayidx, align 2 32*9880d681SAndroid Build Coastguard Worker ret i16* %arrayidx 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker; CHECK: @test_sthu 35*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sthu 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine i16* @test_sthux(i16* %base, i16 zeroext %val, i64 %offset) nounwind { 40*9880d681SAndroid Build Coastguard Workerentry: 41*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i16, i16* %base, i64 %offset 42*9880d681SAndroid Build Coastguard Worker store i16 %val, i16* %arrayidx, align 2 43*9880d681SAndroid Build Coastguard Worker ret i16* %arrayidx 44*9880d681SAndroid Build Coastguard Worker} 45*9880d681SAndroid Build Coastguard Worker; CHECK: @test_sthux 46*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sldi 48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sthux 49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine i32* @test_stwu(i32* %base, i32 zeroext %val) nounwind { 52*9880d681SAndroid Build Coastguard Workerentry: 53*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i32, i32* %base, i64 16 54*9880d681SAndroid Build Coastguard Worker store i32 %val, i32* %arrayidx, align 4 55*9880d681SAndroid Build Coastguard Worker ret i32* %arrayidx 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stwu 58*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stwu 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdefine i32* @test_stwux(i32* %base, i32 zeroext %val, i64 %offset) nounwind { 63*9880d681SAndroid Build Coastguard Workerentry: 64*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i32, i32* %base, i64 %offset 65*9880d681SAndroid Build Coastguard Worker store i32 %val, i32* %arrayidx, align 4 66*9880d681SAndroid Build Coastguard Worker ret i32* %arrayidx 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stwux 69*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sldi 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stwux 72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerdefine i8* @test_stbu8(i8* %base, i64 %val) nounwind { 75*9880d681SAndroid Build Coastguard Workerentry: 76*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %val to i8 77*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i8, i8* %base, i64 16 78*9880d681SAndroid Build Coastguard Worker store i8 %conv, i8* %arrayidx, align 1 79*9880d681SAndroid Build Coastguard Worker ret i8* %arrayidx 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stbu8 82*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stbu 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine i8* @test_stbux8(i8* %base, i64 %val, i64 %offset) nounwind { 87*9880d681SAndroid Build Coastguard Workerentry: 88*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %val to i8 89*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i8, i8* %base, i64 %offset 90*9880d681SAndroid Build Coastguard Worker store i8 %conv, i8* %arrayidx, align 1 91*9880d681SAndroid Build Coastguard Worker ret i8* %arrayidx 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stbux8 94*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stbux 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Workerdefine i16* @test_sthu8(i16* %base, i64 %val) nounwind { 99*9880d681SAndroid Build Coastguard Workerentry: 100*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %val to i16 101*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i16, i16* %base, i64 16 102*9880d681SAndroid Build Coastguard Worker store i16 %conv, i16* %arrayidx, align 2 103*9880d681SAndroid Build Coastguard Worker ret i16* %arrayidx 104*9880d681SAndroid Build Coastguard Worker} 105*9880d681SAndroid Build Coastguard Worker; CHECK: @test_sthu 106*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sthu 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 109*9880d681SAndroid Build Coastguard Worker 110*9880d681SAndroid Build Coastguard Workerdefine i16* @test_sthux8(i16* %base, i64 %val, i64 %offset) nounwind { 111*9880d681SAndroid Build Coastguard Workerentry: 112*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %val to i16 113*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i16, i16* %base, i64 %offset 114*9880d681SAndroid Build Coastguard Worker store i16 %conv, i16* %arrayidx, align 2 115*9880d681SAndroid Build Coastguard Worker ret i16* %arrayidx 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker; CHECK: @test_sthux 118*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sldi 120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sthux 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workerdefine i32* @test_stwu8(i32* %base, i64 %val) nounwind { 124*9880d681SAndroid Build Coastguard Workerentry: 125*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %val to i32 126*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i32, i32* %base, i64 16 127*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* %arrayidx, align 4 128*9880d681SAndroid Build Coastguard Worker ret i32* %arrayidx 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stwu 131*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stwu 133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerdefine i32* @test_stwux8(i32* %base, i64 %val, i64 %offset) nounwind { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %val to i32 138*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i32, i32* %base, i64 %offset 139*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* %arrayidx, align 4 140*9880d681SAndroid Build Coastguard Worker ret i32* %arrayidx 141*9880d681SAndroid Build Coastguard Worker} 142*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stwux 143*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sldi 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stwux 146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerdefine i64* @test_stdu(i64* %base, i64 %val) nounwind { 149*9880d681SAndroid Build Coastguard Workerentry: 150*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i64, i64* %base, i64 16 151*9880d681SAndroid Build Coastguard Worker store i64 %val, i64* %arrayidx, align 8 152*9880d681SAndroid Build Coastguard Worker ret i64* %arrayidx 153*9880d681SAndroid Build Coastguard Worker} 154*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stdu 155*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stdu 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Workerdefine i64* @test_stdux(i64* %base, i64 %val, i64 %offset) nounwind { 160*9880d681SAndroid Build Coastguard Workerentry: 161*9880d681SAndroid Build Coastguard Worker %arrayidx = getelementptr inbounds i64, i64* %base, i64 %offset 162*9880d681SAndroid Build Coastguard Worker store i64 %val, i64* %arrayidx, align 8 163*9880d681SAndroid Build Coastguard Worker ret i64* %arrayidx 164*9880d681SAndroid Build Coastguard Worker} 165*9880d681SAndroid Build Coastguard Worker; CHECK: @test_stdux 166*9880d681SAndroid Build Coastguard Worker; CHECK: %entry 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: sldi 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stdux 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blr 170*9880d681SAndroid Build Coastguard Worker 171