1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out "\b(sp)\b" --filter "^\s*(ld|st[^r]|swp|cas|bl|add|and|eor|orn|orr|sub|mvn|sxt|cmp|ccmp|csel|dmb)" 2; The base test file was generated by ./llvm/test/CodeGen/AArch64/Atomics/generate-tests.py 3; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+rcpc -O0 | FileCheck %s --check-prefixes=CHECK,-O0 4; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64_be -mattr=+rcpc -O1 | FileCheck %s --check-prefixes=CHECK,-O1 5 6define dso_local i8 @load_atomic_i8_aligned_unordered(ptr %ptr) { 7; CHECK-LABEL: load_atomic_i8_aligned_unordered: 8; CHECK: ldrb w0, [x0] 9 %r = load atomic i8, ptr %ptr unordered, align 1 10 ret i8 %r 11} 12 13define dso_local i8 @load_atomic_i8_aligned_unordered_const(ptr readonly %ptr) { 14; CHECK-LABEL: load_atomic_i8_aligned_unordered_const: 15; CHECK: ldrb w0, [x0] 16 %r = load atomic i8, ptr %ptr unordered, align 1 17 ret i8 %r 18} 19 20define dso_local i8 @load_atomic_i8_aligned_monotonic(ptr %ptr) { 21; CHECK-LABEL: load_atomic_i8_aligned_monotonic: 22; CHECK: ldrb w0, [x0] 23 %r = load atomic i8, ptr %ptr monotonic, align 1 24 ret i8 %r 25} 26 27define dso_local i8 @load_atomic_i8_aligned_monotonic_const(ptr readonly %ptr) { 28; CHECK-LABEL: load_atomic_i8_aligned_monotonic_const: 29; CHECK: ldrb w0, [x0] 30 %r = load atomic i8, ptr %ptr monotonic, align 1 31 ret i8 %r 32} 33 34define dso_local i8 @load_atomic_i8_aligned_acquire(ptr %ptr) { 35; CHECK-LABEL: load_atomic_i8_aligned_acquire: 36; CHECK: ldaprb w0, [x0] 37 %r = load atomic i8, ptr %ptr acquire, align 1 38 ret i8 %r 39} 40 41define dso_local i8 @load_atomic_i8_aligned_acquire_const(ptr readonly %ptr) { 42; CHECK-LABEL: load_atomic_i8_aligned_acquire_const: 43; CHECK: ldaprb w0, [x0] 44 %r = load atomic i8, ptr %ptr acquire, align 1 45 ret i8 %r 46} 47 48define dso_local i8 @load_atomic_i8_aligned_seq_cst(ptr %ptr) { 49; CHECK-LABEL: load_atomic_i8_aligned_seq_cst: 50; CHECK: ldarb w0, [x0] 51 %r = load atomic i8, ptr %ptr seq_cst, align 1 52 ret i8 %r 53} 54 55define dso_local i8 @load_atomic_i8_aligned_seq_cst_const(ptr readonly %ptr) { 56; CHECK-LABEL: load_atomic_i8_aligned_seq_cst_const: 57; CHECK: ldarb w0, [x0] 58 %r = load atomic i8, ptr %ptr seq_cst, align 1 59 ret i8 %r 60} 61 62define dso_local i16 @load_atomic_i16_aligned_unordered(ptr %ptr) { 63; CHECK-LABEL: load_atomic_i16_aligned_unordered: 64; CHECK: ldrh w0, [x0] 65 %r = load atomic i16, ptr %ptr unordered, align 2 66 ret i16 %r 67} 68 69define dso_local i16 @load_atomic_i16_aligned_unordered_const(ptr readonly %ptr) { 70; CHECK-LABEL: load_atomic_i16_aligned_unordered_const: 71; CHECK: ldrh w0, [x0] 72 %r = load atomic i16, ptr %ptr unordered, align 2 73 ret i16 %r 74} 75 76define dso_local i16 @load_atomic_i16_aligned_monotonic(ptr %ptr) { 77; CHECK-LABEL: load_atomic_i16_aligned_monotonic: 78; CHECK: ldrh w0, [x0] 79 %r = load atomic i16, ptr %ptr monotonic, align 2 80 ret i16 %r 81} 82 83define dso_local i16 @load_atomic_i16_aligned_monotonic_const(ptr readonly %ptr) { 84; CHECK-LABEL: load_atomic_i16_aligned_monotonic_const: 85; CHECK: ldrh w0, [x0] 86 %r = load atomic i16, ptr %ptr monotonic, align 2 87 ret i16 %r 88} 89 90define dso_local i16 @load_atomic_i16_aligned_acquire(ptr %ptr) { 91; CHECK-LABEL: load_atomic_i16_aligned_acquire: 92; CHECK: ldaprh w0, [x0] 93 %r = load atomic i16, ptr %ptr acquire, align 2 94 ret i16 %r 95} 96 97define dso_local i16 @load_atomic_i16_aligned_acquire_const(ptr readonly %ptr) { 98; CHECK-LABEL: load_atomic_i16_aligned_acquire_const: 99; CHECK: ldaprh w0, [x0] 100 %r = load atomic i16, ptr %ptr acquire, align 2 101 ret i16 %r 102} 103 104define dso_local i16 @load_atomic_i16_aligned_seq_cst(ptr %ptr) { 105; CHECK-LABEL: load_atomic_i16_aligned_seq_cst: 106; CHECK: ldarh w0, [x0] 107 %r = load atomic i16, ptr %ptr seq_cst, align 2 108 ret i16 %r 109} 110 111define dso_local i16 @load_atomic_i16_aligned_seq_cst_const(ptr readonly %ptr) { 112; CHECK-LABEL: load_atomic_i16_aligned_seq_cst_const: 113; CHECK: ldarh w0, [x0] 114 %r = load atomic i16, ptr %ptr seq_cst, align 2 115 ret i16 %r 116} 117 118define dso_local i32 @load_atomic_i32_aligned_unordered(ptr %ptr) { 119; CHECK-LABEL: load_atomic_i32_aligned_unordered: 120; CHECK: ldr w0, [x0] 121 %r = load atomic i32, ptr %ptr unordered, align 4 122 ret i32 %r 123} 124 125define dso_local i32 @load_atomic_i32_aligned_unordered_const(ptr readonly %ptr) { 126; CHECK-LABEL: load_atomic_i32_aligned_unordered_const: 127; CHECK: ldr w0, [x0] 128 %r = load atomic i32, ptr %ptr unordered, align 4 129 ret i32 %r 130} 131 132define dso_local i32 @load_atomic_i32_aligned_monotonic(ptr %ptr) { 133; CHECK-LABEL: load_atomic_i32_aligned_monotonic: 134; CHECK: ldr w0, [x0] 135 %r = load atomic i32, ptr %ptr monotonic, align 4 136 ret i32 %r 137} 138 139define dso_local i32 @load_atomic_i32_aligned_monotonic_const(ptr readonly %ptr) { 140; CHECK-LABEL: load_atomic_i32_aligned_monotonic_const: 141; CHECK: ldr w0, [x0] 142 %r = load atomic i32, ptr %ptr monotonic, align 4 143 ret i32 %r 144} 145 146define dso_local i32 @load_atomic_i32_aligned_acquire(ptr %ptr) { 147; CHECK-LABEL: load_atomic_i32_aligned_acquire: 148; CHECK: ldapr w0, [x0] 149 %r = load atomic i32, ptr %ptr acquire, align 4 150 ret i32 %r 151} 152 153define dso_local i32 @load_atomic_i32_aligned_acquire_const(ptr readonly %ptr) { 154; CHECK-LABEL: load_atomic_i32_aligned_acquire_const: 155; CHECK: ldapr w0, [x0] 156 %r = load atomic i32, ptr %ptr acquire, align 4 157 ret i32 %r 158} 159 160define dso_local i32 @load_atomic_i32_aligned_seq_cst(ptr %ptr) { 161; CHECK-LABEL: load_atomic_i32_aligned_seq_cst: 162; CHECK: ldar w0, [x0] 163 %r = load atomic i32, ptr %ptr seq_cst, align 4 164 ret i32 %r 165} 166 167define dso_local i32 @load_atomic_i32_aligned_seq_cst_const(ptr readonly %ptr) { 168; CHECK-LABEL: load_atomic_i32_aligned_seq_cst_const: 169; CHECK: ldar w0, [x0] 170 %r = load atomic i32, ptr %ptr seq_cst, align 4 171 ret i32 %r 172} 173 174define dso_local i64 @load_atomic_i64_aligned_unordered(ptr %ptr) { 175; CHECK-LABEL: load_atomic_i64_aligned_unordered: 176; CHECK: ldr x0, [x0] 177 %r = load atomic i64, ptr %ptr unordered, align 8 178 ret i64 %r 179} 180 181define dso_local i64 @load_atomic_i64_aligned_unordered_const(ptr readonly %ptr) { 182; CHECK-LABEL: load_atomic_i64_aligned_unordered_const: 183; CHECK: ldr x0, [x0] 184 %r = load atomic i64, ptr %ptr unordered, align 8 185 ret i64 %r 186} 187 188define dso_local i64 @load_atomic_i64_aligned_monotonic(ptr %ptr) { 189; CHECK-LABEL: load_atomic_i64_aligned_monotonic: 190; CHECK: ldr x0, [x0] 191 %r = load atomic i64, ptr %ptr monotonic, align 8 192 ret i64 %r 193} 194 195define dso_local i64 @load_atomic_i64_aligned_monotonic_const(ptr readonly %ptr) { 196; CHECK-LABEL: load_atomic_i64_aligned_monotonic_const: 197; CHECK: ldr x0, [x0] 198 %r = load atomic i64, ptr %ptr monotonic, align 8 199 ret i64 %r 200} 201 202define dso_local i64 @load_atomic_i64_aligned_acquire(ptr %ptr) { 203; CHECK-LABEL: load_atomic_i64_aligned_acquire: 204; CHECK: ldapr x0, [x0] 205 %r = load atomic i64, ptr %ptr acquire, align 8 206 ret i64 %r 207} 208 209define dso_local i64 @load_atomic_i64_aligned_acquire_const(ptr readonly %ptr) { 210; CHECK-LABEL: load_atomic_i64_aligned_acquire_const: 211; CHECK: ldapr x0, [x0] 212 %r = load atomic i64, ptr %ptr acquire, align 8 213 ret i64 %r 214} 215 216define dso_local i64 @load_atomic_i64_aligned_seq_cst(ptr %ptr) { 217; CHECK-LABEL: load_atomic_i64_aligned_seq_cst: 218; CHECK: ldar x0, [x0] 219 %r = load atomic i64, ptr %ptr seq_cst, align 8 220 ret i64 %r 221} 222 223define dso_local i64 @load_atomic_i64_aligned_seq_cst_const(ptr readonly %ptr) { 224; CHECK-LABEL: load_atomic_i64_aligned_seq_cst_const: 225; CHECK: ldar x0, [x0] 226 %r = load atomic i64, ptr %ptr seq_cst, align 8 227 ret i64 %r 228} 229 230define dso_local i128 @load_atomic_i128_aligned_unordered(ptr %ptr) { 231; -O0-LABEL: load_atomic_i128_aligned_unordered: 232; -O0: ldxp x1, x0, [x9] 233; -O0: cmp x1, x10 234; -O0: cmp x0, x10 235; -O0: stxp w8, x10, x10, [x9] 236; -O0: stxp w8, x1, x0, [x9] 237; 238; -O1-LABEL: load_atomic_i128_aligned_unordered: 239; -O1: ldxp x1, x0, [x8] 240; -O1: stxp w9, x1, x0, [x8] 241 %r = load atomic i128, ptr %ptr unordered, align 16 242 ret i128 %r 243} 244 245define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) { 246; -O0-LABEL: load_atomic_i128_aligned_unordered_const: 247; -O0: ldxp x1, x0, [x9] 248; -O0: cmp x1, x10 249; -O0: cmp x0, x10 250; -O0: stxp w8, x10, x10, [x9] 251; -O0: stxp w8, x1, x0, [x9] 252; 253; -O1-LABEL: load_atomic_i128_aligned_unordered_const: 254; -O1: ldxp x1, x0, [x8] 255; -O1: stxp w9, x1, x0, [x8] 256 %r = load atomic i128, ptr %ptr unordered, align 16 257 ret i128 %r 258} 259 260define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) { 261; -O0-LABEL: load_atomic_i128_aligned_monotonic: 262; -O0: ldxp x1, x0, [x9] 263; -O0: cmp x1, x10 264; -O0: cmp x0, x10 265; -O0: stxp w8, x10, x10, [x9] 266; -O0: stxp w8, x1, x0, [x9] 267; 268; -O1-LABEL: load_atomic_i128_aligned_monotonic: 269; -O1: ldxp x1, x0, [x8] 270; -O1: stxp w9, x1, x0, [x8] 271 %r = load atomic i128, ptr %ptr monotonic, align 16 272 ret i128 %r 273} 274 275define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) { 276; -O0-LABEL: load_atomic_i128_aligned_monotonic_const: 277; -O0: ldxp x1, x0, [x9] 278; -O0: cmp x1, x10 279; -O0: cmp x0, x10 280; -O0: stxp w8, x10, x10, [x9] 281; -O0: stxp w8, x1, x0, [x9] 282; 283; -O1-LABEL: load_atomic_i128_aligned_monotonic_const: 284; -O1: ldxp x1, x0, [x8] 285; -O1: stxp w9, x1, x0, [x8] 286 %r = load atomic i128, ptr %ptr monotonic, align 16 287 ret i128 %r 288} 289 290define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) { 291; -O0-LABEL: load_atomic_i128_aligned_acquire: 292; -O0: ldaxp x1, x0, [x9] 293; -O0: cmp x1, x10 294; -O0: cmp x0, x10 295; -O0: stxp w8, x10, x10, [x9] 296; -O0: stxp w8, x1, x0, [x9] 297; 298; -O1-LABEL: load_atomic_i128_aligned_acquire: 299; -O1: ldaxp x1, x0, [x8] 300; -O1: stxp w9, x1, x0, [x8] 301 %r = load atomic i128, ptr %ptr acquire, align 16 302 ret i128 %r 303} 304 305define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) { 306; -O0-LABEL: load_atomic_i128_aligned_acquire_const: 307; -O0: ldaxp x1, x0, [x9] 308; -O0: cmp x1, x10 309; -O0: cmp x0, x10 310; -O0: stxp w8, x10, x10, [x9] 311; -O0: stxp w8, x1, x0, [x9] 312; 313; -O1-LABEL: load_atomic_i128_aligned_acquire_const: 314; -O1: ldaxp x1, x0, [x8] 315; -O1: stxp w9, x1, x0, [x8] 316 %r = load atomic i128, ptr %ptr acquire, align 16 317 ret i128 %r 318} 319 320define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) { 321; -O0-LABEL: load_atomic_i128_aligned_seq_cst: 322; -O0: ldaxp x1, x0, [x9] 323; -O0: cmp x1, x10 324; -O0: cmp x0, x10 325; -O0: stlxp w8, x10, x10, [x9] 326; -O0: stlxp w8, x1, x0, [x9] 327; 328; -O1-LABEL: load_atomic_i128_aligned_seq_cst: 329; -O1: ldaxp x1, x0, [x8] 330; -O1: stlxp w9, x1, x0, [x8] 331 %r = load atomic i128, ptr %ptr seq_cst, align 16 332 ret i128 %r 333} 334 335define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) { 336; -O0-LABEL: load_atomic_i128_aligned_seq_cst_const: 337; -O0: ldaxp x1, x0, [x9] 338; -O0: cmp x1, x10 339; -O0: cmp x0, x10 340; -O0: stlxp w8, x10, x10, [x9] 341; -O0: stlxp w8, x1, x0, [x9] 342; 343; -O1-LABEL: load_atomic_i128_aligned_seq_cst_const: 344; -O1: ldaxp x1, x0, [x8] 345; -O1: stlxp w9, x1, x0, [x8] 346 %r = load atomic i128, ptr %ptr seq_cst, align 16 347 ret i128 %r 348} 349 350define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) { 351; CHECK-LABEL: load_atomic_i8_unaligned_unordered: 352; CHECK: ldrb w0, [x0] 353 %r = load atomic i8, ptr %ptr unordered, align 1 354 ret i8 %r 355} 356 357define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) { 358; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const: 359; CHECK: ldrb w0, [x0] 360 %r = load atomic i8, ptr %ptr unordered, align 1 361 ret i8 %r 362} 363 364define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) { 365; CHECK-LABEL: load_atomic_i8_unaligned_monotonic: 366; CHECK: ldrb w0, [x0] 367 %r = load atomic i8, ptr %ptr monotonic, align 1 368 ret i8 %r 369} 370 371define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) { 372; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const: 373; CHECK: ldrb w0, [x0] 374 %r = load atomic i8, ptr %ptr monotonic, align 1 375 ret i8 %r 376} 377 378define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) { 379; CHECK-LABEL: load_atomic_i8_unaligned_acquire: 380; CHECK: ldaprb w0, [x0] 381 %r = load atomic i8, ptr %ptr acquire, align 1 382 ret i8 %r 383} 384 385define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) { 386; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const: 387; CHECK: ldaprb w0, [x0] 388 %r = load atomic i8, ptr %ptr acquire, align 1 389 ret i8 %r 390} 391 392define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) { 393; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst: 394; CHECK: ldarb w0, [x0] 395 %r = load atomic i8, ptr %ptr seq_cst, align 1 396 ret i8 %r 397} 398 399define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) { 400; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const: 401; CHECK: ldarb w0, [x0] 402 %r = load atomic i8, ptr %ptr seq_cst, align 1 403 ret i8 %r 404} 405 406define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) { 407; CHECK-LABEL: load_atomic_i16_unaligned_unordered: 408; CHECK: bl __atomic_load 409 %r = load atomic i16, ptr %ptr unordered, align 1 410 ret i16 %r 411} 412 413define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) { 414; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const: 415; CHECK: bl __atomic_load 416 %r = load atomic i16, ptr %ptr unordered, align 1 417 ret i16 %r 418} 419 420define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) { 421; CHECK-LABEL: load_atomic_i16_unaligned_monotonic: 422; CHECK: bl __atomic_load 423 %r = load atomic i16, ptr %ptr monotonic, align 1 424 ret i16 %r 425} 426 427define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) { 428; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const: 429; CHECK: bl __atomic_load 430 %r = load atomic i16, ptr %ptr monotonic, align 1 431 ret i16 %r 432} 433 434define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) { 435; CHECK-LABEL: load_atomic_i16_unaligned_acquire: 436; CHECK: bl __atomic_load 437 %r = load atomic i16, ptr %ptr acquire, align 1 438 ret i16 %r 439} 440 441define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) { 442; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const: 443; CHECK: bl __atomic_load 444 %r = load atomic i16, ptr %ptr acquire, align 1 445 ret i16 %r 446} 447 448define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) { 449; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst: 450; CHECK: bl __atomic_load 451 %r = load atomic i16, ptr %ptr seq_cst, align 1 452 ret i16 %r 453} 454 455define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) { 456; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const: 457; CHECK: bl __atomic_load 458 %r = load atomic i16, ptr %ptr seq_cst, align 1 459 ret i16 %r 460} 461 462define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) { 463; CHECK-LABEL: load_atomic_i32_unaligned_unordered: 464; CHECK: bl __atomic_load 465 %r = load atomic i32, ptr %ptr unordered, align 1 466 ret i32 %r 467} 468 469define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) { 470; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const: 471; CHECK: bl __atomic_load 472 %r = load atomic i32, ptr %ptr unordered, align 1 473 ret i32 %r 474} 475 476define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) { 477; CHECK-LABEL: load_atomic_i32_unaligned_monotonic: 478; CHECK: bl __atomic_load 479 %r = load atomic i32, ptr %ptr monotonic, align 1 480 ret i32 %r 481} 482 483define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) { 484; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const: 485; CHECK: bl __atomic_load 486 %r = load atomic i32, ptr %ptr monotonic, align 1 487 ret i32 %r 488} 489 490define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) { 491; CHECK-LABEL: load_atomic_i32_unaligned_acquire: 492; CHECK: bl __atomic_load 493 %r = load atomic i32, ptr %ptr acquire, align 1 494 ret i32 %r 495} 496 497define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) { 498; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const: 499; CHECK: bl __atomic_load 500 %r = load atomic i32, ptr %ptr acquire, align 1 501 ret i32 %r 502} 503 504define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) { 505; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst: 506; CHECK: bl __atomic_load 507 %r = load atomic i32, ptr %ptr seq_cst, align 1 508 ret i32 %r 509} 510 511define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) { 512; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const: 513; CHECK: bl __atomic_load 514 %r = load atomic i32, ptr %ptr seq_cst, align 1 515 ret i32 %r 516} 517 518define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) { 519; CHECK-LABEL: load_atomic_i64_unaligned_unordered: 520; CHECK: bl __atomic_load 521 %r = load atomic i64, ptr %ptr unordered, align 1 522 ret i64 %r 523} 524 525define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) { 526; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const: 527; CHECK: bl __atomic_load 528 %r = load atomic i64, ptr %ptr unordered, align 1 529 ret i64 %r 530} 531 532define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) { 533; CHECK-LABEL: load_atomic_i64_unaligned_monotonic: 534; CHECK: bl __atomic_load 535 %r = load atomic i64, ptr %ptr monotonic, align 1 536 ret i64 %r 537} 538 539define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) { 540; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const: 541; CHECK: bl __atomic_load 542 %r = load atomic i64, ptr %ptr monotonic, align 1 543 ret i64 %r 544} 545 546define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) { 547; CHECK-LABEL: load_atomic_i64_unaligned_acquire: 548; CHECK: bl __atomic_load 549 %r = load atomic i64, ptr %ptr acquire, align 1 550 ret i64 %r 551} 552 553define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) { 554; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const: 555; CHECK: bl __atomic_load 556 %r = load atomic i64, ptr %ptr acquire, align 1 557 ret i64 %r 558} 559 560define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) { 561; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst: 562; CHECK: bl __atomic_load 563 %r = load atomic i64, ptr %ptr seq_cst, align 1 564 ret i64 %r 565} 566 567define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) { 568; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const: 569; CHECK: bl __atomic_load 570 %r = load atomic i64, ptr %ptr seq_cst, align 1 571 ret i64 %r 572} 573 574define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) { 575; CHECK-LABEL: load_atomic_i128_unaligned_unordered: 576; CHECK: bl __atomic_load 577 %r = load atomic i128, ptr %ptr unordered, align 1 578 ret i128 %r 579} 580 581define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) { 582; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const: 583; CHECK: bl __atomic_load 584 %r = load atomic i128, ptr %ptr unordered, align 1 585 ret i128 %r 586} 587 588define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) { 589; CHECK-LABEL: load_atomic_i128_unaligned_monotonic: 590; CHECK: bl __atomic_load 591 %r = load atomic i128, ptr %ptr monotonic, align 1 592 ret i128 %r 593} 594 595define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) { 596; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const: 597; CHECK: bl __atomic_load 598 %r = load atomic i128, ptr %ptr monotonic, align 1 599 ret i128 %r 600} 601 602define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) { 603; CHECK-LABEL: load_atomic_i128_unaligned_acquire: 604; CHECK: bl __atomic_load 605 %r = load atomic i128, ptr %ptr acquire, align 1 606 ret i128 %r 607} 608 609define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) { 610; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const: 611; CHECK: bl __atomic_load 612 %r = load atomic i128, ptr %ptr acquire, align 1 613 ret i128 %r 614} 615 616define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) { 617; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst: 618; CHECK: bl __atomic_load 619 %r = load atomic i128, ptr %ptr seq_cst, align 1 620 ret i128 %r 621} 622 623define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) { 624; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const: 625; CHECK: bl __atomic_load 626 %r = load atomic i128, ptr %ptr seq_cst, align 1 627 ret i128 %r 628} 629