[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / MIR / AArch64 / swp.mir
blobd7555bf89384ed38ef0490c4a9f11821bd5add2f
1 # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass none -o - %s | FileCheck %s
3 --- |
4   define i32 @swp(i32* %addr) #0 {
5   entry:
6     %0 = atomicrmw xchg i32* %addr, i32 1 monotonic
7     ret i32 %0
8   }
10   attributes #0 = { "target-features"="+lse" }
11 ...
12 ---
13 name:            swp
14 alignment:       4
15 tracksRegLiveness: true
16 registers:
17   - { id: 0, class: gpr64common }
18   - { id: 1, class: gpr32 }
19   - { id: 2, class: gpr32 }
20 liveins:
21   - { reg: '$x0', virtual-reg: '%0' }
22 body:             |
23   bb.0.entry:
24     liveins: $x0
26     ; CHECK-LABEL: swp
27     ; CHECK: {{[0-9]+}}:gpr32 = SWPW killed %1, %0 :: (volatile load store monotonic 4 on %ir.addr)
28     %0:gpr64common = COPY $x0
29     %1:gpr32 = MOVi32imm 1
30     %2:gpr32 = SWPW killed %1, %0 :: (volatile load store monotonic 4 on %ir.addr)
31     $w0 = COPY %2
32     RET_ReallyLR implicit $w0
33 ...