[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / GlobalISel / select-ldaxr-intrin.mir
blobe6550647524e2aee335b96b6f14def732388ca5b
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
5   define void @test_load_acquire_i8(i8* %addr) { ret void }
6   define void @test_load_acquire_i16(i16* %addr) { ret void }
7   define void @test_load_acquire_i32(i32* %addr) { ret void }
8   define void @test_load_acquire_i64(i64* %addr) { ret void }
9 ...
10 ---
12 name:            test_load_acquire_i8
13 alignment:       4
14 legalized:       true
15 regBankSelected: true
16 tracksRegLiveness: true
17 body:             |
18   bb.0:
19     liveins: $x0
20     ; CHECK-LABEL: name: test_load_acquire_i8
21     ; CHECK: liveins: $x0
22     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
23     ; CHECK: [[LDAXRB:%[0-9]+]]:gpr32 = LDAXRB [[COPY]] :: (volatile load 1 from %ir.addr)
24     ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDAXRB]], %subreg.sub_32
25     ; CHECK: $x1 = COPY [[SUBREG_TO_REG]]
26     ; CHECK: RET_ReallyLR implicit $x1
27     %0:gpr(p0) = COPY $x0
28     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldaxr), %0(p0) :: (volatile load 1 from %ir.addr)
29     $x1 = COPY %1
30     RET_ReallyLR implicit $x1
32 ...
33 ---
34 name:            test_load_acquire_i16
35 alignment:       4
36 legalized:       true
37 regBankSelected: true
38 tracksRegLiveness: true
39 body:             |
40   bb.0:
41     liveins: $x0
42     ; CHECK-LABEL: name: test_load_acquire_i16
43     ; CHECK: liveins: $x0
44     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
45     ; CHECK: [[LDAXRH:%[0-9]+]]:gpr32 = LDAXRH [[COPY]] :: (volatile load 2 from %ir.addr)
46     ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDAXRH]], %subreg.sub_32
47     ; CHECK: $x1 = COPY [[SUBREG_TO_REG]]
48     ; CHECK: RET_ReallyLR implicit $x1
49     %0:gpr(p0) = COPY $x0
50     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldaxr), %0(p0) :: (volatile load 2 from %ir.addr)
51     $x1 = COPY %1
52     RET_ReallyLR implicit $x1
54 ...
55 ---
56 name:            test_load_acquire_i32
57 alignment:       4
58 legalized:       true
59 regBankSelected: true
60 tracksRegLiveness: true
61 body:             |
62   bb.0:
63     liveins: $x0
64     ; CHECK-LABEL: name: test_load_acquire_i32
65     ; CHECK: liveins: $x0
66     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
67     ; CHECK: [[LDAXRW:%[0-9]+]]:gpr32 = LDAXRW [[COPY]] :: (volatile load 4 from %ir.addr)
68     ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDAXRW]], %subreg.sub_32
69     ; CHECK: $x1 = COPY [[SUBREG_TO_REG]]
70     ; CHECK: RET_ReallyLR implicit $x1
71     %0:gpr(p0) = COPY $x0
72     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldaxr), %0(p0) :: (volatile load 4 from %ir.addr)
73     $x1 = COPY %1
74     RET_ReallyLR implicit $x1
76 ...
77 ---
78 name:            test_load_acquire_i64
79 alignment:       4
80 legalized:       true
81 regBankSelected: true
82 tracksRegLiveness: true
83 body:             |
84   bb.0:
85     liveins: $x0
86     ; CHECK-LABEL: name: test_load_acquire_i64
87     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
88     ; CHECK: [[LDAXRX:%[0-9]+]]:gpr64 = LDAXRX [[COPY]] :: (volatile load 8 from %ir.addr)
89     ; CHECK: $x1 = COPY [[LDAXRX]]
90     ; CHECK: RET_ReallyLR implicit $x1
91     %0:gpr(p0) = COPY $x0
92     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldaxr), %0(p0) :: (volatile load 8 from %ir.addr)
93     $x1 = COPY %1
94     RET_ReallyLR implicit $x1