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