X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FPowerPC%2Fsmall-arguments.ll;h=31bcee6bc811f7a093af3ca65abd26935a31f21f;hb=f2e4afd96c9d26ff0dd2fb5eca0a94207d2a8fb4;hp=d00326ebc7c638f9fe1367f0d6aba2e406edaf3d;hpb=7dd8b05fd7283a7ca4a6b2cd7df554bc989927e8;p=oota-llvm.git diff --git a/test/CodeGen/PowerPC/small-arguments.ll b/test/CodeGen/PowerPC/small-arguments.ll index d00326ebc7c..31bcee6bc81 100644 --- a/test/CodeGen/PowerPC/small-arguments.ll +++ b/test/CodeGen/PowerPC/small-arguments.ll @@ -1,26 +1,52 @@ -; RUN: llvm-as < %s | llc -march=ppc32 | not grep 'extsh\|rlwinm' +; RUN: llc < %s -march=ppc32 | not grep {extsh\\|rlwinm} -int %test1(short %X) { - %Y = cast short %X to int ;; dead - ret int %Y +declare i16 @foo() signext + +define i32 @test1(i16 signext %X) { + %Y = sext i16 %X to i32 ;; dead + ret i32 %Y } -int %test2(ushort %X) { - %Y = cast ushort %X to int - %Z = and int %Y, 65535 ;; dead - ret int %Z +define i32 @test2(i16 zeroext %X) { + %Y = sext i16 %X to i32 + %Z = and i32 %Y, 65535 ;; dead + ret i32 %Z } -void %test3() { - %tmp.0 = call short %foo() ;; no extsh! - %tmp.1 = setlt short %tmp.0, 1234 - br bool %tmp.1, label %then, label %UnifiedReturnBlock +define void @test3() { + %tmp.0 = call i16 @foo() signext ;; no extsh! + %tmp.1 = icmp slt i16 %tmp.0, 1234 + br i1 %tmp.1, label %then, label %UnifiedReturnBlock then: - call int %test1(short 0) + call i32 @test1(i16 0 signext) ret void UnifiedReturnBlock: ret void } -declare short %foo() +define i32 @test4(i16* %P) { + %tmp.1 = load i16* %P + %tmp.2 = zext i16 %tmp.1 to i32 + %tmp.3 = and i32 %tmp.2, 255 + ret i32 %tmp.3 +} + +define i32 @test5(i16* %P) { + %tmp.1 = load i16* %P + %tmp.2 = bitcast i16 %tmp.1 to i16 + %tmp.3 = zext i16 %tmp.2 to i32 + %tmp.4 = and i32 %tmp.3, 255 + ret i32 %tmp.4 +} + +define i32 @test6(i32* %P) { + %tmp.1 = load i32* %P + %tmp.2 = and i32 %tmp.1, 255 + ret i32 %tmp.2 +} + +define i16 @test7(float %a) zeroext { + %tmp.1 = fptoui float %a to i16 + ret i16 %tmp.1 +}