1 # RUN: llc -march=x86-64 -start-after branch-folder -stop-after branch-folder -o /dev/null %s | FileCheck %s
2 # This test ensures that the MIR parser parses the machine memory operands
7 define i32 @test(i32* %a) {
14 define void @test2(i32* %"a value") {
16 %b = load i32, i32* %"a value"
18 store i32 %c, i32* %"a value"
22 define i32 @volatile_inc(i32* %x) {
24 %0 = load volatile i32, i32* %x
26 store volatile i32 %1, i32* %x
30 define void @non_temporal_store(i32* %a, i32 %b) {
32 store i32 %b, i32* %a, align 16, !nontemporal !0
38 define i32 @invariant_load(i32* %x) {
40 %v = load i32, i32* %x, !invariant.load !1
49 tracksRegLiveness: true
57 # CHECK: %eax = MOV32rm %rdi, 1, _, 0, _ :: (load 4 from %ir.a)
58 # CHECK-NEXT: MOV32mi killed %rdi, 1, _, 0, _, 42 :: (store 4 into %ir.a)
59 - '%eax = MOV32rm %rdi, 1, _, 0, _ :: (load 4 from %ir.a)'
60 - 'MOV32mi killed %rdi, 1, _, 0, _, 42 :: (store 4 into %ir.a)'
65 tracksRegLiveness: true
73 # CHECK: INC32m killed %rdi, 1, _, 0, _, implicit-def dead %eflags :: (store 4 into %ir."a value"), (load 4 from %ir."a value")
74 - 'INC32m killed %rdi, 1, _, 0, _, implicit-def dead %eflags :: (store 4 into %ir."a value"), (load 4 from %ir."a value")'
79 tracksRegLiveness: true
87 # CHECK: name: volatile_inc
88 # CHECK: %eax = MOV32rm %rdi, 1, _, 0, _ :: (volatile load 4 from %ir.x)
89 # CHECK: MOV32mr killed %rdi, 1, _, 0, _, %eax :: (volatile store 4 into %ir.x)
90 - '%eax = MOV32rm %rdi, 1, _, 0, _ :: (volatile load 4 from %ir.x)'
91 - '%eax = INC32r killed %eax, implicit-def dead %eflags'
92 - 'MOV32mr killed %rdi, 1, _, 0, _, %eax :: (volatile store 4 into %ir.x)'
96 name: non_temporal_store
97 tracksRegLiveness: true
104 liveins: [ '%esi', '%rdi' ]
106 # CHECK: name: non_temporal_store
107 # CHECK: MOVNTImr killed %rdi, 1, _, 0, _, killed %esi :: (non-temporal store 4 into %ir.a)
108 - 'MOVNTImr killed %rdi, 1, _, 0, _, killed %esi :: (non-temporal store 4 into %ir.a)'
113 tracksRegLiveness: true
121 # CHECK: name: invariant_load
122 # CHECK: %eax = MOV32rm killed %rdi, 1, _, 0, _ :: (invariant load 4 from %ir.x)
123 - '%eax = MOV32rm killed %rdi, 1, _, 0, _ :: (invariant load 4 from %ir.x)'