brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 82ecbd4 Raw
100 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -passes=instcombine -S | FileCheck %s3target 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"4 5define i1 @test1(ptr %x) nounwind {6; CHECK-LABEL: @test1(7; CHECK-NEXT:  entry:8; CHECK-NEXT:    [[TMP0:%.*]] = ptrtoint ptr [[X:%.*]] to i649; CHECK-NEXT:    [[TMP2:%.*]] = trunc i64 [[TMP0]] to i110; CHECK-NEXT:    ret i1 [[TMP2]]11;12entry:13  %0 = ptrtoint ptr %x to i114  ret i1 %015}16 17define ptr @test2(i128 %x) nounwind {18; CHECK-LABEL: @test2(19; CHECK-NEXT:  entry:20; CHECK-NEXT:    [[TMP0:%.*]] = trunc i128 [[X:%.*]] to i6421; CHECK-NEXT:    [[TMP1:%.*]] = inttoptr i64 [[TMP0]] to ptr22; CHECK-NEXT:    ret ptr [[TMP1]]23;24entry:25  %0 = inttoptr i128 %x to ptr26  ret ptr %027}28 29; PR357430define i64 @f0(i32 %a0) nounwind {31; CHECK-LABEL: @f0(32; CHECK-NEXT:    [[TMP1:%.*]] = zext i32 [[A0:%.*]] to i6433; CHECK-NEXT:    ret i64 [[TMP1]]34;35  %t0 = inttoptr i32 %a0 to ptr36  %t1 = ptrtoint ptr %t0 to i6437  ret i64 %t138}39 40define <4 x i32> @test4(<4 x ptr> %arg) nounwind {41; CHECK-LABEL: @test4(42; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint <4 x ptr> [[ARG:%.*]] to <4 x i64>43; CHECK-NEXT:    [[P1:%.*]] = trunc <4 x i64> [[TMP1]] to <4 x i32>44; CHECK-NEXT:    ret <4 x i32> [[P1]]45;46  %p1 = ptrtoint <4 x ptr> %arg to <4 x i32>47  ret <4 x i32> %p148}49 50define <vscale x 4 x i32> @testvscale4(<vscale x 4 x ptr> %arg) nounwind {51; CHECK-LABEL: @testvscale4(52; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint <vscale x 4 x ptr> [[ARG:%.*]] to <vscale x 4 x i64>53; CHECK-NEXT:    [[P1:%.*]] = trunc <vscale x 4 x i64> [[TMP1]] to <vscale x 4 x i32>54; CHECK-NEXT:    ret <vscale x 4 x i32> [[P1]]55;56  %p1 = ptrtoint <vscale x 4 x ptr> %arg to <vscale x 4 x i32>57  ret <vscale x 4 x i32> %p158}59 60define <4 x i128> @test5(<4 x ptr> %arg) nounwind {61; CHECK-LABEL: @test5(62; CHECK-NEXT:    [[TMP1:%.*]] = ptrtoint <4 x ptr> [[ARG:%.*]] to <4 x i64>63; CHECK-NEXT:    [[P1:%.*]] = zext <4 x i64> [[TMP1]] to <4 x i128>64; CHECK-NEXT:    ret <4 x i128> [[P1]]65;66  %p1 = ptrtoint <4 x ptr> %arg to <4 x i128>67  ret <4 x i128> %p168}69 70define <4 x ptr> @test6(<4 x i32> %arg) nounwind {71; CHECK-LABEL: @test6(72; CHECK-NEXT:    [[TMP1:%.*]] = zext <4 x i32> [[ARG:%.*]] to <4 x i64>73; CHECK-NEXT:    [[P1:%.*]] = inttoptr <4 x i64> [[TMP1]] to <4 x ptr>74; CHECK-NEXT:    ret <4 x ptr> [[P1]]75;76  %p1 = inttoptr <4 x i32> %arg to <4 x ptr>77  ret <4 x ptr> %p178}79 80define <4 x ptr> @test7(<4 x i128> %arg) nounwind {81; CHECK-LABEL: @test7(82; CHECK-NEXT:    [[TMP1:%.*]] = trunc <4 x i128> [[ARG:%.*]] to <4 x i64>83; CHECK-NEXT:    [[P1:%.*]] = inttoptr <4 x i64> [[TMP1]] to <4 x ptr>84; CHECK-NEXT:    ret <4 x ptr> [[P1]]85;86  %p1 = inttoptr <4 x i128> %arg to <4 x ptr>87  ret <4 x ptr> %p188}89 90define i64 @ptrtoint_gep_sub(ptr %ptr, i64 %end.addr) {91; CHECK-LABEL: @ptrtoint_gep_sub(92; CHECK-NEXT:    ret i64 [[END_ADDR:%.*]]93;94  %ptr.addr = ptrtoint ptr %ptr to i6495  %size = sub i64 %end.addr, %ptr.addr96  %end = getelementptr i8, ptr %ptr, i64 %size97  %end.addr2 = ptrtoint ptr %end to i6498  ret i64 %end.addr299}100