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 -mattr=+v8.1a -O0 | FileCheck %s --check-prefixes=CHECK,-O0 4; RUN: llc %s -o - -verify-machineinstrs -mtriple=aarch64 -mattr=+v8.1a -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: ldarb 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: ldarb 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: ldarh 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: ldarh 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: ldar 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: ldar 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: ldar 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: ldar 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: casp x2, x3, x0, x1, [x8] 233; 234; -O1-LABEL: load_atomic_i128_aligned_unordered: 235; -O1: casp x2, x3, x2, x3, [x0] 236 %r = load atomic i128, ptr %ptr unordered, align 16 237 ret i128 %r 238} 239 240define dso_local i128 @load_atomic_i128_aligned_unordered_const(ptr readonly %ptr) { 241; -O0-LABEL: load_atomic_i128_aligned_unordered_const: 242; -O0: casp x2, x3, x0, x1, [x8] 243; 244; -O1-LABEL: load_atomic_i128_aligned_unordered_const: 245; -O1: casp x2, x3, x2, x3, [x0] 246 %r = load atomic i128, ptr %ptr unordered, align 16 247 ret i128 %r 248} 249 250define dso_local i128 @load_atomic_i128_aligned_monotonic(ptr %ptr) { 251; -O0-LABEL: load_atomic_i128_aligned_monotonic: 252; -O0: casp x2, x3, x0, x1, [x8] 253; 254; -O1-LABEL: load_atomic_i128_aligned_monotonic: 255; -O1: casp x2, x3, x2, x3, [x0] 256 %r = load atomic i128, ptr %ptr monotonic, align 16 257 ret i128 %r 258} 259 260define dso_local i128 @load_atomic_i128_aligned_monotonic_const(ptr readonly %ptr) { 261; -O0-LABEL: load_atomic_i128_aligned_monotonic_const: 262; -O0: casp x2, x3, x0, x1, [x8] 263; 264; -O1-LABEL: load_atomic_i128_aligned_monotonic_const: 265; -O1: casp x2, x3, x2, x3, [x0] 266 %r = load atomic i128, ptr %ptr monotonic, align 16 267 ret i128 %r 268} 269 270define dso_local i128 @load_atomic_i128_aligned_acquire(ptr %ptr) { 271; -O0-LABEL: load_atomic_i128_aligned_acquire: 272; -O0: caspa x2, x3, x0, x1, [x8] 273; 274; -O1-LABEL: load_atomic_i128_aligned_acquire: 275; -O1: caspa x2, x3, x2, x3, [x0] 276 %r = load atomic i128, ptr %ptr acquire, align 16 277 ret i128 %r 278} 279 280define dso_local i128 @load_atomic_i128_aligned_acquire_const(ptr readonly %ptr) { 281; -O0-LABEL: load_atomic_i128_aligned_acquire_const: 282; -O0: caspa x2, x3, x0, x1, [x8] 283; 284; -O1-LABEL: load_atomic_i128_aligned_acquire_const: 285; -O1: caspa x2, x3, x2, x3, [x0] 286 %r = load atomic i128, ptr %ptr acquire, align 16 287 ret i128 %r 288} 289 290define dso_local i128 @load_atomic_i128_aligned_seq_cst(ptr %ptr) { 291; -O0-LABEL: load_atomic_i128_aligned_seq_cst: 292; -O0: caspal x2, x3, x0, x1, [x8] 293; 294; -O1-LABEL: load_atomic_i128_aligned_seq_cst: 295; -O1: caspal x2, x3, x2, x3, [x0] 296 %r = load atomic i128, ptr %ptr seq_cst, align 16 297 ret i128 %r 298} 299 300define dso_local i128 @load_atomic_i128_aligned_seq_cst_const(ptr readonly %ptr) { 301; -O0-LABEL: load_atomic_i128_aligned_seq_cst_const: 302; -O0: caspal x2, x3, x0, x1, [x8] 303; 304; -O1-LABEL: load_atomic_i128_aligned_seq_cst_const: 305; -O1: caspal x2, x3, x2, x3, [x0] 306 %r = load atomic i128, ptr %ptr seq_cst, align 16 307 ret i128 %r 308} 309 310define dso_local i8 @load_atomic_i8_unaligned_unordered(ptr %ptr) { 311; CHECK-LABEL: load_atomic_i8_unaligned_unordered: 312; CHECK: ldrb w0, [x0] 313 %r = load atomic i8, ptr %ptr unordered, align 1 314 ret i8 %r 315} 316 317define dso_local i8 @load_atomic_i8_unaligned_unordered_const(ptr readonly %ptr) { 318; CHECK-LABEL: load_atomic_i8_unaligned_unordered_const: 319; CHECK: ldrb w0, [x0] 320 %r = load atomic i8, ptr %ptr unordered, align 1 321 ret i8 %r 322} 323 324define dso_local i8 @load_atomic_i8_unaligned_monotonic(ptr %ptr) { 325; CHECK-LABEL: load_atomic_i8_unaligned_monotonic: 326; CHECK: ldrb w0, [x0] 327 %r = load atomic i8, ptr %ptr monotonic, align 1 328 ret i8 %r 329} 330 331define dso_local i8 @load_atomic_i8_unaligned_monotonic_const(ptr readonly %ptr) { 332; CHECK-LABEL: load_atomic_i8_unaligned_monotonic_const: 333; CHECK: ldrb w0, [x0] 334 %r = load atomic i8, ptr %ptr monotonic, align 1 335 ret i8 %r 336} 337 338define dso_local i8 @load_atomic_i8_unaligned_acquire(ptr %ptr) { 339; CHECK-LABEL: load_atomic_i8_unaligned_acquire: 340; CHECK: ldarb w0, [x0] 341 %r = load atomic i8, ptr %ptr acquire, align 1 342 ret i8 %r 343} 344 345define dso_local i8 @load_atomic_i8_unaligned_acquire_const(ptr readonly %ptr) { 346; CHECK-LABEL: load_atomic_i8_unaligned_acquire_const: 347; CHECK: ldarb w0, [x0] 348 %r = load atomic i8, ptr %ptr acquire, align 1 349 ret i8 %r 350} 351 352define dso_local i8 @load_atomic_i8_unaligned_seq_cst(ptr %ptr) { 353; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst: 354; CHECK: ldarb w0, [x0] 355 %r = load atomic i8, ptr %ptr seq_cst, align 1 356 ret i8 %r 357} 358 359define dso_local i8 @load_atomic_i8_unaligned_seq_cst_const(ptr readonly %ptr) { 360; CHECK-LABEL: load_atomic_i8_unaligned_seq_cst_const: 361; CHECK: ldarb w0, [x0] 362 %r = load atomic i8, ptr %ptr seq_cst, align 1 363 ret i8 %r 364} 365 366define dso_local i16 @load_atomic_i16_unaligned_unordered(ptr %ptr) { 367; CHECK-LABEL: load_atomic_i16_unaligned_unordered: 368; CHECK: bl __atomic_load 369 %r = load atomic i16, ptr %ptr unordered, align 1 370 ret i16 %r 371} 372 373define dso_local i16 @load_atomic_i16_unaligned_unordered_const(ptr readonly %ptr) { 374; CHECK-LABEL: load_atomic_i16_unaligned_unordered_const: 375; CHECK: bl __atomic_load 376 %r = load atomic i16, ptr %ptr unordered, align 1 377 ret i16 %r 378} 379 380define dso_local i16 @load_atomic_i16_unaligned_monotonic(ptr %ptr) { 381; CHECK-LABEL: load_atomic_i16_unaligned_monotonic: 382; CHECK: bl __atomic_load 383 %r = load atomic i16, ptr %ptr monotonic, align 1 384 ret i16 %r 385} 386 387define dso_local i16 @load_atomic_i16_unaligned_monotonic_const(ptr readonly %ptr) { 388; CHECK-LABEL: load_atomic_i16_unaligned_monotonic_const: 389; CHECK: bl __atomic_load 390 %r = load atomic i16, ptr %ptr monotonic, align 1 391 ret i16 %r 392} 393 394define dso_local i16 @load_atomic_i16_unaligned_acquire(ptr %ptr) { 395; CHECK-LABEL: load_atomic_i16_unaligned_acquire: 396; CHECK: bl __atomic_load 397 %r = load atomic i16, ptr %ptr acquire, align 1 398 ret i16 %r 399} 400 401define dso_local i16 @load_atomic_i16_unaligned_acquire_const(ptr readonly %ptr) { 402; CHECK-LABEL: load_atomic_i16_unaligned_acquire_const: 403; CHECK: bl __atomic_load 404 %r = load atomic i16, ptr %ptr acquire, align 1 405 ret i16 %r 406} 407 408define dso_local i16 @load_atomic_i16_unaligned_seq_cst(ptr %ptr) { 409; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst: 410; CHECK: bl __atomic_load 411 %r = load atomic i16, ptr %ptr seq_cst, align 1 412 ret i16 %r 413} 414 415define dso_local i16 @load_atomic_i16_unaligned_seq_cst_const(ptr readonly %ptr) { 416; CHECK-LABEL: load_atomic_i16_unaligned_seq_cst_const: 417; CHECK: bl __atomic_load 418 %r = load atomic i16, ptr %ptr seq_cst, align 1 419 ret i16 %r 420} 421 422define dso_local i32 @load_atomic_i32_unaligned_unordered(ptr %ptr) { 423; CHECK-LABEL: load_atomic_i32_unaligned_unordered: 424; CHECK: bl __atomic_load 425 %r = load atomic i32, ptr %ptr unordered, align 1 426 ret i32 %r 427} 428 429define dso_local i32 @load_atomic_i32_unaligned_unordered_const(ptr readonly %ptr) { 430; CHECK-LABEL: load_atomic_i32_unaligned_unordered_const: 431; CHECK: bl __atomic_load 432 %r = load atomic i32, ptr %ptr unordered, align 1 433 ret i32 %r 434} 435 436define dso_local i32 @load_atomic_i32_unaligned_monotonic(ptr %ptr) { 437; CHECK-LABEL: load_atomic_i32_unaligned_monotonic: 438; CHECK: bl __atomic_load 439 %r = load atomic i32, ptr %ptr monotonic, align 1 440 ret i32 %r 441} 442 443define dso_local i32 @load_atomic_i32_unaligned_monotonic_const(ptr readonly %ptr) { 444; CHECK-LABEL: load_atomic_i32_unaligned_monotonic_const: 445; CHECK: bl __atomic_load 446 %r = load atomic i32, ptr %ptr monotonic, align 1 447 ret i32 %r 448} 449 450define dso_local i32 @load_atomic_i32_unaligned_acquire(ptr %ptr) { 451; CHECK-LABEL: load_atomic_i32_unaligned_acquire: 452; CHECK: bl __atomic_load 453 %r = load atomic i32, ptr %ptr acquire, align 1 454 ret i32 %r 455} 456 457define dso_local i32 @load_atomic_i32_unaligned_acquire_const(ptr readonly %ptr) { 458; CHECK-LABEL: load_atomic_i32_unaligned_acquire_const: 459; CHECK: bl __atomic_load 460 %r = load atomic i32, ptr %ptr acquire, align 1 461 ret i32 %r 462} 463 464define dso_local i32 @load_atomic_i32_unaligned_seq_cst(ptr %ptr) { 465; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst: 466; CHECK: bl __atomic_load 467 %r = load atomic i32, ptr %ptr seq_cst, align 1 468 ret i32 %r 469} 470 471define dso_local i32 @load_atomic_i32_unaligned_seq_cst_const(ptr readonly %ptr) { 472; CHECK-LABEL: load_atomic_i32_unaligned_seq_cst_const: 473; CHECK: bl __atomic_load 474 %r = load atomic i32, ptr %ptr seq_cst, align 1 475 ret i32 %r 476} 477 478define dso_local i64 @load_atomic_i64_unaligned_unordered(ptr %ptr) { 479; CHECK-LABEL: load_atomic_i64_unaligned_unordered: 480; CHECK: bl __atomic_load 481 %r = load atomic i64, ptr %ptr unordered, align 1 482 ret i64 %r 483} 484 485define dso_local i64 @load_atomic_i64_unaligned_unordered_const(ptr readonly %ptr) { 486; CHECK-LABEL: load_atomic_i64_unaligned_unordered_const: 487; CHECK: bl __atomic_load 488 %r = load atomic i64, ptr %ptr unordered, align 1 489 ret i64 %r 490} 491 492define dso_local i64 @load_atomic_i64_unaligned_monotonic(ptr %ptr) { 493; CHECK-LABEL: load_atomic_i64_unaligned_monotonic: 494; CHECK: bl __atomic_load 495 %r = load atomic i64, ptr %ptr monotonic, align 1 496 ret i64 %r 497} 498 499define dso_local i64 @load_atomic_i64_unaligned_monotonic_const(ptr readonly %ptr) { 500; CHECK-LABEL: load_atomic_i64_unaligned_monotonic_const: 501; CHECK: bl __atomic_load 502 %r = load atomic i64, ptr %ptr monotonic, align 1 503 ret i64 %r 504} 505 506define dso_local i64 @load_atomic_i64_unaligned_acquire(ptr %ptr) { 507; CHECK-LABEL: load_atomic_i64_unaligned_acquire: 508; CHECK: bl __atomic_load 509 %r = load atomic i64, ptr %ptr acquire, align 1 510 ret i64 %r 511} 512 513define dso_local i64 @load_atomic_i64_unaligned_acquire_const(ptr readonly %ptr) { 514; CHECK-LABEL: load_atomic_i64_unaligned_acquire_const: 515; CHECK: bl __atomic_load 516 %r = load atomic i64, ptr %ptr acquire, align 1 517 ret i64 %r 518} 519 520define dso_local i64 @load_atomic_i64_unaligned_seq_cst(ptr %ptr) { 521; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst: 522; CHECK: bl __atomic_load 523 %r = load atomic i64, ptr %ptr seq_cst, align 1 524 ret i64 %r 525} 526 527define dso_local i64 @load_atomic_i64_unaligned_seq_cst_const(ptr readonly %ptr) { 528; CHECK-LABEL: load_atomic_i64_unaligned_seq_cst_const: 529; CHECK: bl __atomic_load 530 %r = load atomic i64, ptr %ptr seq_cst, align 1 531 ret i64 %r 532} 533 534define dso_local i128 @load_atomic_i128_unaligned_unordered(ptr %ptr) { 535; CHECK-LABEL: load_atomic_i128_unaligned_unordered: 536; CHECK: bl __atomic_load 537 %r = load atomic i128, ptr %ptr unordered, align 1 538 ret i128 %r 539} 540 541define dso_local i128 @load_atomic_i128_unaligned_unordered_const(ptr readonly %ptr) { 542; CHECK-LABEL: load_atomic_i128_unaligned_unordered_const: 543; CHECK: bl __atomic_load 544 %r = load atomic i128, ptr %ptr unordered, align 1 545 ret i128 %r 546} 547 548define dso_local i128 @load_atomic_i128_unaligned_monotonic(ptr %ptr) { 549; CHECK-LABEL: load_atomic_i128_unaligned_monotonic: 550; CHECK: bl __atomic_load 551 %r = load atomic i128, ptr %ptr monotonic, align 1 552 ret i128 %r 553} 554 555define dso_local i128 @load_atomic_i128_unaligned_monotonic_const(ptr readonly %ptr) { 556; CHECK-LABEL: load_atomic_i128_unaligned_monotonic_const: 557; CHECK: bl __atomic_load 558 %r = load atomic i128, ptr %ptr monotonic, align 1 559 ret i128 %r 560} 561 562define dso_local i128 @load_atomic_i128_unaligned_acquire(ptr %ptr) { 563; CHECK-LABEL: load_atomic_i128_unaligned_acquire: 564; CHECK: bl __atomic_load 565 %r = load atomic i128, ptr %ptr acquire, align 1 566 ret i128 %r 567} 568 569define dso_local i128 @load_atomic_i128_unaligned_acquire_const(ptr readonly %ptr) { 570; CHECK-LABEL: load_atomic_i128_unaligned_acquire_const: 571; CHECK: bl __atomic_load 572 %r = load atomic i128, ptr %ptr acquire, align 1 573 ret i128 %r 574} 575 576define dso_local i128 @load_atomic_i128_unaligned_seq_cst(ptr %ptr) { 577; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst: 578; CHECK: bl __atomic_load 579 %r = load atomic i128, ptr %ptr seq_cst, align 1 580 ret i128 %r 581} 582 583define dso_local i128 @load_atomic_i128_unaligned_seq_cst_const(ptr readonly %ptr) { 584; CHECK-LABEL: load_atomic_i128_unaligned_seq_cst_const: 585; CHECK: bl __atomic_load 586 %r = load atomic i128, ptr %ptr seq_cst, align 1 587 ret i128 %r 588} 589