129 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 32; RUN: opt < %s -passes=gvn -S | FileCheck %s3 4define i1 @test_i1(ptr %a, ptr %b, ptr %c) {5; CHECK-LABEL: define i1 @test_i1(6; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {7; CHECK-NEXT: entry:8; CHECK-NEXT: [[TMP0:%.*]] = load i1, ptr [[A]], align 19; CHECK-NEXT: store i1 [[TMP0]], ptr [[B]], align 110; CHECK-NEXT: ret i1 [[TMP0]]11;12entry:13 %0 = load i1, ptr %a, align 114 store i1 %0, ptr %b, align 115 %1 = load i1, ptr %a, align 116 ret i1 %117}18 19define i8 @test_i8(ptr %a, ptr %b, ptr %c) {20; CHECK-LABEL: define i8 @test_i8(21; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {22; CHECK-NEXT: entry:23; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[A]], align 124; CHECK-NEXT: store i8 [[TMP0]], ptr [[B]], align 125; CHECK-NEXT: ret i8 [[TMP0]]26;27entry:28 %0 = load i8, ptr %a, align 129 store i8 %0, ptr %b, align 130 %1 = load i8, ptr %a, align 131 ret i8 %132}33 34define i32 @test_i32(ptr %a, ptr %b, ptr %c) {35; CHECK-LABEL: define i32 @test_i32(36; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {37; CHECK-NEXT: entry:38; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 439; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 440; CHECK-NEXT: ret i32 [[TMP0]]41;42entry:43 %0 = load i32, ptr %a, align 444 store i32 %0, ptr %b, align 445 %1 = load i32, ptr %a, align 446 ret i32 %147}48 49define float @test_float(ptr %a, ptr %b, ptr %c) {50; CHECK-LABEL: define float @test_float(51; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {52; CHECK-NEXT: entry:53; CHECK-NEXT: [[TMP0:%.*]] = load float, ptr [[A]], align 454; CHECK-NEXT: store float [[TMP0]], ptr [[B]], align 455; CHECK-NEXT: ret float [[TMP0]]56;57entry:58 %0 = load float, ptr %a, align 459 store float %0, ptr %b, align 460 %1 = load float, ptr %a, align 461 ret float %162}63 64define i32 @test_unaligned_store(ptr %a, ptr %b, ptr %c) {65; CHECK-LABEL: define i32 @test_unaligned_store(66; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {67; CHECK-NEXT: entry:68; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 469; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 270; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[A]], align 471; CHECK-NEXT: ret i32 [[TMP1]]72;73entry:74 %0 = load i32, ptr %a, align 475 store i32 %0, ptr %b, align 276 %1 = load i32, ptr %a, align 477 ret i32 %178}79 80define i32 @test_unaligned_loads(ptr %a, ptr %b, ptr %c) {81; CHECK-LABEL: define i32 @test_unaligned_loads(82; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {83; CHECK-NEXT: entry:84; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 285; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 486; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[A]], align 287; CHECK-NEXT: ret i32 [[TMP1]]88;89entry:90 %0 = load i32, ptr %a, align 291 store i32 %0, ptr %b, align 492 %1 = load i32, ptr %a, align 293 ret i32 %194}95 96define i8 @test_modify_between(ptr %a, ptr %b, ptr %c) {97; CHECK-LABEL: define i8 @test_modify_between(98; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {99; CHECK-NEXT: entry:100; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[A]], align 1101; CHECK-NEXT: store i8 42, ptr [[C]], align 1102; CHECK-NEXT: store i8 [[TMP0]], ptr [[B]], align 1103; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr [[A]], align 1104; CHECK-NEXT: ret i8 [[TMP1]]105;106entry:107 %0 = load i8, ptr %a, align 1108 store i8 42, ptr %c, align 1109 store i8 %0, ptr %b, align 1110 %1 = load i8, ptr %a, align 1111 ret i8 %1112}113 114define i32 @test_unordered(ptr %a, ptr %b, ptr %c) {115; CHECK-LABEL: define i32 @test_unordered(116; CHECK-SAME: ptr [[A:%.*]], ptr [[B:%.*]], ptr [[C:%.*]]) {117; CHECK-NEXT: entry:118; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[A]], align 4119; CHECK-NEXT: store i32 [[TMP0]], ptr [[B]], align 4120; CHECK-NEXT: [[TMP1:%.*]] = load atomic i32, ptr [[A]] unordered, align 4121; CHECK-NEXT: ret i32 [[TMP1]]122;123entry:124 %0 = load i32, ptr %a, align 4125 store i32 %0, ptr %b, align 4126 %1 = load atomic i32, ptr %a unordered, align 4127 ret i32 %1128}129