Home | History | Annotate | Download | only in InstCombine
      1 ; RUN: opt < %s -instcombine -S | FileCheck %s
      2 target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
      3 
      4 define i1 @test1(i32 *%x) nounwind {
      5 entry:
      6 ; CHECK: test1
      7 ; CHECK: ptrtoint i32* %x to i64
      8 	%0 = ptrtoint i32* %x to i1
      9 	ret i1 %0
     10 }
     11 
     12 define i32* @test2(i128 %x) nounwind {
     13 entry:
     14 ; CHECK: test2
     15 ; CHECK: inttoptr i64 %0 to i32*
     16 	%0 = inttoptr i128 %x to i32*
     17 	ret i32* %0
     18 }
     19 
     20 ; PR3574
     21 ; CHECK: f0
     22 ; CHECK: %1 = zext i32 %a0 to i64
     23 ; CHECK: ret i64 %1
     24 define i64 @f0(i32 %a0) nounwind {
     25        %t0 = inttoptr i32 %a0 to i8*
     26        %t1 = ptrtoint i8* %t0 to i64
     27        ret i64 %t1
     28 }
     29 
     30 define <4 x i32> @test4(<4 x i8*> %arg) nounwind {
     31 ; CHECK-LABEL: @test4(
     32 ; CHECK: ptrtoint <4 x i8*> %arg to <4 x i64>
     33 ; CHECK: trunc <4 x i64> %1 to <4 x i32>
     34   %p1 = ptrtoint <4 x i8*> %arg to <4 x i32>
     35   ret <4 x i32> %p1
     36 }
     37 
     38 define <4 x i128> @test5(<4 x i8*> %arg) nounwind {
     39 ; CHECK-LABEL: @test5(
     40 ; CHECK: ptrtoint <4 x i8*> %arg to <4 x i64>
     41 ; CHECK: zext <4 x i64> %1 to <4 x i128>
     42   %p1 = ptrtoint <4 x i8*> %arg to <4 x i128>
     43   ret <4 x i128> %p1
     44 }
     45 
     46 define <4 x i8*> @test6(<4 x i32> %arg) nounwind {
     47 ; CHECK-LABEL: @test6(
     48 ; CHECK: zext <4 x i32> %arg to <4 x i64>
     49 ; CHECK: inttoptr <4 x i64> %1 to <4 x i8*>
     50   %p1 = inttoptr <4 x i32> %arg to <4 x i8*>
     51   ret <4 x i8*> %p1
     52 }
     53 
     54 define <4 x i8*> @test7(<4 x i128> %arg) nounwind {
     55 ; CHECK-LABEL: @test7(
     56 ; CHECK: trunc <4 x i128> %arg to <4 x i64>
     57 ; CHECK: inttoptr <4 x i64> %1 to <4 x i8*>
     58   %p1 = inttoptr <4 x i128> %arg to <4 x i8*>
     59   ret <4 x i8*> %p1
     60 }
     61