atomic-load.ll 738 B

123456789101112131415161718192021222324252627282930313233343536
  1. ; RUN: opt < %s -loweratomic -S | FileCheck %s
  2. define i8 @add() {
  3. ; CHECK-LABEL: @add(
  4. %i = alloca i8
  5. %j = atomicrmw add i8* %i, i8 42 monotonic
  6. ; CHECK: [[INST:%[a-z0-9]+]] = load
  7. ; CHECK-NEXT: add
  8. ; CHECK-NEXT: store
  9. ret i8 %j
  10. ; CHECK: ret i8 [[INST]]
  11. }
  12. define i8 @nand() {
  13. ; CHECK-LABEL: @nand(
  14. %i = alloca i8
  15. %j = atomicrmw nand i8* %i, i8 42 monotonic
  16. ; CHECK: [[INST:%[a-z0-9]+]] = load
  17. ; CHECK-NEXT: and
  18. ; CHECK-NEXT: xor
  19. ; CHECK-NEXT: store
  20. ret i8 %j
  21. ; CHECK: ret i8 [[INST]]
  22. }
  23. define i8 @min() {
  24. ; CHECK-LABEL: @min(
  25. %i = alloca i8
  26. %j = atomicrmw min i8* %i, i8 42 monotonic
  27. ; CHECK: [[INST:%[a-z0-9]+]] = load
  28. ; CHECK-NEXT: icmp
  29. ; CHECK-NEXT: select
  30. ; CHECK-NEXT: store
  31. ret i8 %j
  32. ; CHECK: ret i8 [[INST]]
  33. }