MIR Serialization: Serialize the 'volatile' machine memory operand flag.
[oota-llvm.git] / test / CodeGen / MIR / X86 / memory-operands.mir
index e220761357fa9a3ed8145b2e5b6d5f148338c4ad..cc73263728e62d04a8dff025662bd13b5b88c32c 100644 (file)
     ret void
   }
 
+  define i32 @volatile_inc(i32* %x) {
+  entry:
+    %0 = load volatile i32, i32* %x
+    %1 = add i32 %0, 1
+    store volatile i32 %1, i32* %x
+    ret i32 %1
+  }
+
 ...
 ---
 name:            test
@@ -50,3 +58,21 @@ body:
       - 'INC32m killed %rdi, 1, _, 0, _, implicit-def dead %eflags :: (store 4 into %ir."a value"), (load 4 from %ir."a value")'
       - RETQ
 ...
+---
+name:            volatile_inc
+tracksRegLiveness: true
+liveins:
+  - { reg: '%rdi' }
+body:
+  - id:          0
+    name:        entry
+    liveins:     [ '%rdi' ]
+    instructions:
+    # CHECK: name: volatile_inc
+    # CHECK: %eax = MOV32rm %rdi, 1, _, 0, _ :: (volatile load 4 from %ir.x)
+    # CHECK: MOV32mr killed %rdi, 1, _, 0, _, %eax :: (volatile store 4 into %ir.x)
+      - '%eax = MOV32rm %rdi, 1, _, 0, _ :: (volatile load 4 from %ir.x)'
+      - '%eax = INC32r killed %eax, implicit-def dead %eflags'
+      - 'MOV32mr killed %rdi, 1, _, 0, _, %eax :: (volatile store 4 into %ir.x)'
+      - 'RETQ %eax'
+...