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