Revert "[InstCombine] Support gep nuw in icmp folds" (#118698)
[llvm-project.git] / llvm / test / Transforms / InstCombine / load-bitcast64.ll
blob15ff8ad3382a1bcbd7050e33104bacbe37335acd
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -passes=instcombine -S < %s | FileCheck %s
4 target datalayout = "p:64:64:64-i64:32:32"
7 define ptr @test1(ptr %x) {
8 ; CHECK-LABEL: @test1(
9 ; CHECK-NEXT:  entry:
10 ; CHECK-NEXT:    [[B:%.*]] = load i64, ptr [[X:%.*]], align 4
11 ; CHECK-NEXT:    [[C:%.*]] = inttoptr i64 [[B]] to ptr
12 ; CHECK-NEXT:    ret ptr [[C]]
14 entry:
15   %b = load i64, ptr %x
16   %c = inttoptr i64 %b to ptr
18   ret ptr %c
21 define ptr @test2(ptr %x) {
22 ; CHECK-LABEL: @test2(
23 ; CHECK-NEXT:  entry:
24 ; CHECK-NEXT:    [[B:%.*]] = load i32, ptr [[X:%.*]], align 4
25 ; CHECK-NEXT:    [[TMP0:%.*]] = zext i32 [[B]] to i64
26 ; CHECK-NEXT:    [[C:%.*]] = inttoptr i64 [[TMP0]] to ptr
27 ; CHECK-NEXT:    ret ptr [[C]]
29 entry:
30   %b = load i32, ptr %x
31   %c = inttoptr i32 %b to ptr
33   ret ptr %c
36 define ptr @test3(ptr %x) {
37 ; CHECK-LABEL: @test3(
38 ; CHECK-NEXT:  entry:
39 ; CHECK-NEXT:    [[B:%.*]] = load i32, ptr [[X:%.*]], align 4
40 ; CHECK-NEXT:    [[TMP0:%.*]] = zext i32 [[B]] to i64
41 ; CHECK-NEXT:    [[C:%.*]] = inttoptr i64 [[TMP0]] to ptr
42 ; CHECK-NEXT:    ret ptr [[C]]
44 entry:
45   %b = load i32, ptr %x
46   %c = inttoptr i32 %b to ptr
48   ret ptr %c
51 define i64 @test4(ptr %x) {
52 ; CHECK-LABEL: @test4(
53 ; CHECK-NEXT:  entry:
54 ; CHECK-NEXT:    [[B:%.*]] = load ptr, ptr [[X:%.*]], align 8
55 ; CHECK-NEXT:    [[C:%.*]] = ptrtoint ptr [[B]] to i64
56 ; CHECK-NEXT:    ret i64 [[C]]
58 entry:
59   %b = load ptr, ptr %x
60   %c = ptrtoint ptr %b to i64
62   ret i64 %c
65 define i32 @test5(ptr %x) {
66 ; CHECK-LABEL: @test5(
67 ; CHECK-NEXT:  entry:
68 ; CHECK-NEXT:    [[B:%.*]] = load ptr, ptr [[X:%.*]], align 8
69 ; CHECK-NEXT:    [[TMP0:%.*]] = ptrtoint ptr [[B]] to i64
70 ; CHECK-NEXT:    [[C:%.*]] = trunc i64 [[TMP0]] to i32
71 ; CHECK-NEXT:    ret i32 [[C]]
73 entry:
74   %b = load ptr, ptr %x
75   %c = ptrtoint ptr %b to i32
77   ret i32 %c
80 define i64 @test6(ptr %x) {
81 ; CHECK-LABEL: @test6(
82 ; CHECK-NEXT:  entry:
83 ; CHECK-NEXT:    [[B:%.*]] = load ptr, ptr [[X:%.*]], align 8
84 ; CHECK-NEXT:    [[C:%.*]] = ptrtoint ptr [[B]] to i64
85 ; CHECK-NEXT:    ret i64 [[C]]
87 entry:
88   %b = load ptr, ptr %x
89   %c = ptrtoint ptr %b to i64
91   ret i64 %c