98 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt -S < %s -passes=infer-alignment | FileCheck %s3 4; ------------------------------------------------------------------------------5; load/store of null6; ------------------------------------------------------------------------------7 8define void @load_null() {9; CHECK-LABEL: define void @load_null() {10; CHECK-NEXT: [[X_0:%.*]] = load atomic i32, ptr null unordered, align 429496729611; CHECK-NEXT: [[X_1:%.*]] = load atomic i32, ptr null monotonic, align 429496729612; CHECK-NEXT: [[X_2:%.*]] = load atomic i32, ptr null seq_cst, align 429496729613; CHECK-NEXT: ret void14;15 %x.0 = load atomic i32, ptr null unordered, align 416 %x.1 = load atomic i32, ptr null monotonic, align 417 %x.2 = load atomic i32, ptr null seq_cst, align 418 ret void19}20 21define void @store_null() {22; CHECK-LABEL: define void @store_null() {23; CHECK-NEXT: store atomic i32 0, ptr null unordered, align 429496729624; CHECK-NEXT: store atomic i32 0, ptr null monotonic, align 429496729625; CHECK-NEXT: store atomic i32 0, ptr null seq_cst, align 429496729626; CHECK-NEXT: ret void27;28 store atomic i32 0, ptr null unordered, align 429 store atomic i32 0, ptr null monotonic, align 430 store atomic i32 0, ptr null seq_cst, align 431 ret void32}33 34; ------------------------------------------------------------------------------35; load/store of global36; ------------------------------------------------------------------------------37@c = global i64 4238 39define void @load_nonnull() {40; CHECK-LABEL: define void @load_nonnull() {41; CHECK-NEXT: [[X_0:%.*]] = load atomic i32, ptr @c unordered, align 842; CHECK-NEXT: [[X_1:%.*]] = load atomic i32, ptr @c monotonic, align 843; CHECK-NEXT: [[X_2:%.*]] = load atomic i32, ptr @c seq_cst, align 844; CHECK-NEXT: ret void45;46 %x.0 = load atomic i32, ptr @c unordered, align 447 %x.1 = load atomic i32, ptr @c monotonic, align 448 %x.2 = load atomic i32, ptr @c seq_cst, align 449 ret void50}51 52define void @store_nonnull() {53; CHECK-LABEL: define void @store_nonnull() {54; CHECK-NEXT: store atomic i32 0, ptr @c unordered, align 855; CHECK-NEXT: store atomic i32 0, ptr @c monotonic, align 856; CHECK-NEXT: store atomic i32 0, ptr @c seq_cst, align 857; CHECK-NEXT: ret void58;59 store atomic i32 0, ptr @c unordered, align 460 store atomic i32 0, ptr @c monotonic, align 461 store atomic i32 0, ptr @c seq_cst, align 462 ret void63}64 65; ------------------------------------------------------------------------------66; load/store of alloca67; ------------------------------------------------------------------------------68 69define void @load_alloca() {70; CHECK-LABEL: define void @load_alloca() {71; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 472; CHECK-NEXT: [[X_0:%.*]] = load atomic i32, ptr [[ALLOCA]] unordered, align 473; CHECK-NEXT: [[X_1:%.*]] = load atomic i32, ptr [[ALLOCA]] monotonic, align 474; CHECK-NEXT: [[X_2:%.*]] = load atomic i32, ptr [[ALLOCA]] seq_cst, align 475; CHECK-NEXT: ret void76;77 %alloca = alloca i3278 %x.0 = load atomic i32, ptr %alloca unordered, align 179 %x.1 = load atomic i32, ptr %alloca monotonic, align 180 %x.2 = load atomic i32, ptr %alloca seq_cst, align 181 ret void82}83 84define void @store_alloca() {85; CHECK-LABEL: define void @store_alloca() {86; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 487; CHECK-NEXT: store atomic i32 0, ptr [[ALLOCA]] unordered, align 488; CHECK-NEXT: store atomic i32 0, ptr [[ALLOCA]] monotonic, align 489; CHECK-NEXT: store atomic i32 0, ptr [[ALLOCA]] seq_cst, align 490; CHECK-NEXT: ret void91;92 %alloca = alloca i3293 store atomic i32 0, ptr %alloca unordered, align 194 store atomic i32 0, ptr %alloca monotonic, align 195 store atomic i32 0, ptr %alloca seq_cst, align 196 ret void97}98