171 lines · plain
1; RUN: llc -verify-machineinstrs < %s | FileCheck %s2 3target 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"4target triple = "powerpc64-unknown-linux-gnu"5 6define ptr @test_stbu(ptr %base, i8 zeroext %val) nounwind {7entry:8 %arrayidx = getelementptr inbounds i8, ptr %base, i64 169 store i8 %val, ptr %arrayidx, align 110 ret ptr %arrayidx11}12; CHECK: @test_stbu13; CHECK: %entry14; CHECK-NEXT: stbu15; CHECK-NEXT: blr16 17define ptr @test_stbux(ptr %base, i8 zeroext %val, i64 %offset) nounwind {18entry:19 %arrayidx = getelementptr inbounds i8, ptr %base, i64 %offset20 store i8 %val, ptr %arrayidx, align 121 ret ptr %arrayidx22}23; CHECK: @test_stbux24; CHECK: %entry25; CHECK-NEXT: stbux26; CHECK-NEXT: blr27 28define ptr @test_sthu(ptr %base, i16 zeroext %val) nounwind {29entry:30 %arrayidx = getelementptr inbounds i16, ptr %base, i64 1631 store i16 %val, ptr %arrayidx, align 232 ret ptr %arrayidx33}34; CHECK: @test_sthu35; CHECK: %entry36; CHECK-NEXT: sthu37; CHECK-NEXT: blr38 39define ptr @test_sthux(ptr %base, i16 zeroext %val, i64 %offset) nounwind {40entry:41 %arrayidx = getelementptr inbounds i16, ptr %base, i64 %offset42 store i16 %val, ptr %arrayidx, align 243 ret ptr %arrayidx44}45; CHECK: @test_sthux46; CHECK: %entry47; CHECK-NEXT: sldi48; CHECK-NEXT: sthux49; CHECK-NEXT: blr50 51define ptr @test_stwu(ptr %base, i32 zeroext %val) nounwind {52entry:53 %arrayidx = getelementptr inbounds i32, ptr %base, i64 1654 store i32 %val, ptr %arrayidx, align 455 ret ptr %arrayidx56}57; CHECK: @test_stwu58; CHECK: %entry59; CHECK-NEXT: stwu60; CHECK-NEXT: blr61 62define ptr @test_stwux(ptr %base, i32 zeroext %val, i64 %offset) nounwind {63entry:64 %arrayidx = getelementptr inbounds i32, ptr %base, i64 %offset65 store i32 %val, ptr %arrayidx, align 466 ret ptr %arrayidx67}68; CHECK: @test_stwux69; CHECK: %entry70; CHECK-NEXT: sldi71; CHECK-NEXT: stwux72; CHECK-NEXT: blr73 74define ptr @test_stbu8(ptr %base, i64 %val) nounwind {75entry:76 %conv = trunc i64 %val to i877 %arrayidx = getelementptr inbounds i8, ptr %base, i64 1678 store i8 %conv, ptr %arrayidx, align 179 ret ptr %arrayidx80}81; CHECK: @test_stbu882; CHECK: %entry83; CHECK-NEXT: stbu84; CHECK-NEXT: blr85 86define ptr @test_stbux8(ptr %base, i64 %val, i64 %offset) nounwind {87entry:88 %conv = trunc i64 %val to i889 %arrayidx = getelementptr inbounds i8, ptr %base, i64 %offset90 store i8 %conv, ptr %arrayidx, align 191 ret ptr %arrayidx92}93; CHECK: @test_stbux894; CHECK: %entry95; CHECK-NEXT: stbux96; CHECK-NEXT: blr97 98define ptr @test_sthu8(ptr %base, i64 %val) nounwind {99entry:100 %conv = trunc i64 %val to i16101 %arrayidx = getelementptr inbounds i16, ptr %base, i64 16102 store i16 %conv, ptr %arrayidx, align 2103 ret ptr %arrayidx104}105; CHECK: @test_sthu106; CHECK: %entry107; CHECK-NEXT: sthu108; CHECK-NEXT: blr109 110define ptr @test_sthux8(ptr %base, i64 %val, i64 %offset) nounwind {111entry:112 %conv = trunc i64 %val to i16113 %arrayidx = getelementptr inbounds i16, ptr %base, i64 %offset114 store i16 %conv, ptr %arrayidx, align 2115 ret ptr %arrayidx116}117; CHECK: @test_sthux118; CHECK: %entry119; CHECK-NEXT: sldi120; CHECK-NEXT: sthux121; CHECK-NEXT: blr122 123define ptr @test_stwu8(ptr %base, i64 %val) nounwind {124entry:125 %conv = trunc i64 %val to i32126 %arrayidx = getelementptr inbounds i32, ptr %base, i64 16127 store i32 %conv, ptr %arrayidx, align 4128 ret ptr %arrayidx129}130; CHECK: @test_stwu131; CHECK: %entry132; CHECK-NEXT: stwu133; CHECK-NEXT: blr134 135define ptr @test_stwux8(ptr %base, i64 %val, i64 %offset) nounwind {136entry:137 %conv = trunc i64 %val to i32138 %arrayidx = getelementptr inbounds i32, ptr %base, i64 %offset139 store i32 %conv, ptr %arrayidx, align 4140 ret ptr %arrayidx141}142; CHECK: @test_stwux143; CHECK: %entry144; CHECK-NEXT: sldi145; CHECK-NEXT: stwux146; CHECK-NEXT: blr147 148define ptr @test_stdu(ptr %base, i64 %val) nounwind {149entry:150 %arrayidx = getelementptr inbounds i64, ptr %base, i64 16151 store i64 %val, ptr %arrayidx, align 8152 ret ptr %arrayidx153}154; CHECK: @test_stdu155; CHECK: %entry156; CHECK-NEXT: stdu157; CHECK-NEXT: blr158 159define ptr @test_stdux(ptr %base, i64 %val, i64 %offset) nounwind {160entry:161 %arrayidx = getelementptr inbounds i64, ptr %base, i64 %offset162 store i64 %val, ptr %arrayidx, align 8163 ret ptr %arrayidx164}165; CHECK: @test_stdux166; CHECK: %entry167; CHECK-NEXT: sldi168; CHECK-NEXT: stdux169; CHECK-NEXT: blr170 171