Home | History | Annotate | Download | only in PowerPC
      1 ; RUN: llc < %s -march=ppc32 | not grep {extsh\\|rlwinm}
      2 
      3 declare signext i16 @foo()  
      4 
      5 define i32 @test1(i16 signext %X) {
      6 	%Y = sext i16 %X to i32  ;; dead
      7 	ret i32 %Y
      8 }
      9 
     10 define i32 @test2(i16 zeroext %X) {
     11 	%Y = sext i16 %X to i32
     12 	%Z = and i32 %Y, 65535      ;; dead
     13 	ret i32 %Z
     14 }
     15 
     16 define void @test3() {
     17 	%tmp.0 = call signext i16 @foo()             ;; no extsh!
     18 	%tmp.1 = icmp slt i16 %tmp.0, 1234
     19 	br i1 %tmp.1, label %then, label %UnifiedReturnBlock
     20 
     21 then:	
     22 	call i32 @test1(i16 signext 0)
     23 	ret void
     24 UnifiedReturnBlock:
     25 	ret void
     26 }
     27 
     28 define i32 @test4(i16* %P) {
     29         %tmp.1 = load i16* %P
     30         %tmp.2 = zext i16 %tmp.1 to i32
     31         %tmp.3 = and i32 %tmp.2, 255
     32         ret i32 %tmp.3
     33 }
     34 
     35 define i32 @test5(i16* %P) {
     36         %tmp.1 = load i16* %P
     37         %tmp.2 = bitcast i16 %tmp.1 to i16
     38         %tmp.3 = zext i16 %tmp.2 to i32
     39         %tmp.4 = and i32 %tmp.3, 255
     40         ret i32 %tmp.4
     41 }
     42 
     43 define i32 @test6(i32* %P) {
     44         %tmp.1 = load i32* %P
     45         %tmp.2 = and i32 %tmp.1, 255
     46         ret i32 %tmp.2
     47 }
     48 
     49 define zeroext i16 @test7(float %a)  {
     50         %tmp.1 = fptoui float %a to i16
     51         ret i16 %tmp.1
     52 }
     53