blob: 0068427772b6e545e7d880fab9f6062f1bbbc70f [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 Spencerbf895532007-01-05 18:34:20 +00004declare i16 %foo() sext
Chris Lattnerc7d855e2006-02-28 06:54:19 +00005
Reid Spencerbf895532007-01-05 18:34:20 +00006define i32 %test1(i16 sext %X) {
7 %Y = sext i16 %X to i32 ;; dead
8 ret i32 %Y
Chris Lattnerc7307062005-08-31 18:19:50 +00009}
10
Reid Spencerbf895532007-01-05 18:34:20 +000011define i32 %test2(i16 zext %X) {
12 %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 Spencerbf895532007-01-05 18:34:20 +000017define void %test3() {
18 %tmp.0 = call i16 %foo() sext ;; no extsh!
19 %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 Spencerbf895532007-01-05 18:34:20 +000023 call i32 %test1(i16 0 sext)
Chris Lattner9832ce02005-09-01 23:43:58 +000024 ret void
25UnifiedReturnBlock:
26 ret void
27}
28
Reid Spencerbf895532007-01-05 18:34:20 +000029define i32 %test4(i16* %P) {
30 %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 Spencerbf895532007-01-05 18:34:20 +000036define i32 %test5(i16* %P) {
37 %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 Spencerbf895532007-01-05 18:34:20 +000044define i32 %test6(i32* %P) {
45 %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 Spencerbf895532007-01-05 18:34:20 +000050define i16 %test7(float %a) zext {
51 %tmp.1 = fptoui float %a to i16
52 ret i16 %tmp.1
Chris Lattnerc7d855e2006-02-28 06:54:19 +000053}