blob: 3ab92d1187b1751408df26375a6673d8ce256b96 [file] [log] [blame]
Reid Spencerbf895532007-01-05 18:34:20 +00001; RUN: llvm-as < %s | llc -march=ppc32 &&
2; RUN: llvm-as < %s | llc -march=ppc32 | not grep 'extsh\|rlwinm'
Chris Lattnerc7307062005-08-31 18:19:50 +00003
Reid Spencere3ff5ad2007-01-26 08:25:06 +00004declare i16 @foo() sext
Chris Lattnerc7d855e2006-02-28 06:54:19 +00005
Reid Spencere3ff5ad2007-01-26 08:25:06 +00006define i32 @test1(i16 sext %X) {
Reid Spencerbf895532007-01-05 18:34:20 +00007 %Y = sext i16 %X to i32 ;; dead
8 ret i32 %Y
Chris Lattnerc7307062005-08-31 18:19:50 +00009}
10
Reid Spencere3ff5ad2007-01-26 08:25:06 +000011define i32 @test2(i16 zext %X) {
Reid Spencerbf895532007-01-05 18:34:20 +000012 %Y = sext i16 %X to i32
13 %Z = and i32 %Y, 65535 ;; dead
14 ret i32 %Z
Chris Lattnerc7307062005-08-31 18:19:50 +000015}
Chris Lattner9832ce02005-09-01 23:43:58 +000016
Reid Spencere3ff5ad2007-01-26 08:25:06 +000017define void @test3() {
18 %tmp.0 = call i16 @foo() sext ;; no extsh!
Reid Spencerbf895532007-01-05 18:34:20 +000019 %tmp.1 = icmp slt i16 %tmp.0, 1234
Reid Spencer737ec512007-01-13 05:06:52 +000020 br i1 %tmp.1, label %then, label %UnifiedReturnBlock
Chris Lattner9832ce02005-09-01 23:43:58 +000021
22then:
Reid Spencere3ff5ad2007-01-26 08:25:06 +000023 call i32 @test1(i16 0 sext)
Chris Lattner9832ce02005-09-01 23:43:58 +000024 ret void
25UnifiedReturnBlock:
26 ret void
27}
28
Reid Spencere3ff5ad2007-01-26 08:25:06 +000029define i32 @test4(i16* %P) {
Reid Spencerbf895532007-01-05 18:34:20 +000030 %tmp.1 = load i16* %P
31 %tmp.2 = zext i16 %tmp.1 to i32
32 %tmp.3 = and i32 %tmp.2, 255
33 ret i32 %tmp.3
Chris Lattnerc7d855e2006-02-28 06:54:19 +000034}
35
Reid Spencere3ff5ad2007-01-26 08:25:06 +000036define i32 @test5(i16* %P) {
Reid Spencerbf895532007-01-05 18:34:20 +000037 %tmp.1 = load i16* %P
38 %tmp.2 = bitcast i16 %tmp.1 to i16
39 %tmp.3 = zext i16 %tmp.2 to i32
40 %tmp.4 = and i32 %tmp.3, 255
41 ret i32 %tmp.4
Chris Lattnerc7d855e2006-02-28 06:54:19 +000042}
43
Reid Spencere3ff5ad2007-01-26 08:25:06 +000044define i32 @test6(i32* %P) {
Reid Spencerbf895532007-01-05 18:34:20 +000045 %tmp.1 = load i32* %P
46 %tmp.2 = and i32 %tmp.1, 255
47 ret i32 %tmp.2
Chris Lattnerc7d855e2006-02-28 06:54:19 +000048}
49
Reid Spencere3ff5ad2007-01-26 08:25:06 +000050define i16 @test7(float %a) zext {
Reid Spencerbf895532007-01-05 18:34:20 +000051 %tmp.1 = fptoui float %a to i16
52 ret i16 %tmp.1
Chris Lattnerc7d855e2006-02-28 06:54:19 +000053}