[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-ldxr-intrin.mir
blob8e4e07cae8ab85681a9e1554b1c2a9d5cc64e6f2
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_i8(i8* %addr) { ret void }
6   define void @test_load_i16(i16* %addr) { ret void }
7   define void @test_load_i32(i32* %addr) { ret void }
8   define void @test_load_i64(i64* %addr) { ret void }
9 ...
10 ---
11 name:            test_load_i8
12 alignment:       4
13 legalized:       true
14 regBankSelected: true
15 tracksRegLiveness: true
16 body:             |
17   bb.0:
18     liveins: $x0
19     ; CHECK-LABEL: name: test_load_i8
20     ; CHECK: liveins: $x0
21     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
22     ; CHECK: [[LDXRB:%[0-9]+]]:gpr32 = LDXRB [[COPY]] :: (volatile load (s8) from %ir.addr)
23     ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDXRB]], %subreg.sub_32
24     ; CHECK: $x1 = COPY [[SUBREG_TO_REG]]
25     ; CHECK: RET_ReallyLR implicit $x1
26     %0:gpr(p0) = COPY $x0
27     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldxr), %0(p0) :: (volatile load (s8) from %ir.addr)
28     $x1 = COPY %1(s64)
29     RET_ReallyLR implicit $x1
31 ...
32 ---
33 name:            test_load_i16
34 alignment:       4
35 legalized:       true
36 regBankSelected: true
37 tracksRegLiveness: true
38 body:             |
39   bb.0:
40     liveins: $x0
41     ; CHECK-LABEL: name: test_load_i16
42     ; CHECK: liveins: $x0
43     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
44     ; CHECK: [[LDXRH:%[0-9]+]]:gpr32 = LDXRH [[COPY]] :: (volatile load (s16) from %ir.addr)
45     ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDXRH]], %subreg.sub_32
46     ; CHECK: $x1 = COPY [[SUBREG_TO_REG]]
47     ; CHECK: RET_ReallyLR implicit $x1
48     %0:gpr(p0) = COPY $x0
49     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldxr), %0(p0) :: (volatile load (s16) from %ir.addr)
50     $x1 = COPY %1(s64)
51     RET_ReallyLR implicit $x1
53 ...
54 ---
55 name:            test_load_i32
56 alignment:       4
57 legalized:       true
58 regBankSelected: true
59 tracksRegLiveness: true
60 body:             |
61   bb.0:
62     liveins: $x0
63     ; CHECK-LABEL: name: test_load_i32
64     ; CHECK: liveins: $x0
65     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
66     ; CHECK: [[LDXRW:%[0-9]+]]:gpr32 = LDXRW [[COPY]] :: (volatile load (s32) from %ir.addr)
67     ; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDXRW]], %subreg.sub_32
68     ; CHECK: $x1 = COPY [[SUBREG_TO_REG]]
69     ; CHECK: RET_ReallyLR implicit $x1
70     %0:gpr(p0) = COPY $x0
71     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldxr), %0(p0) :: (volatile load (s32) from %ir.addr)
72     $x1 = COPY %1(s64)
73     RET_ReallyLR implicit $x1
76 ...
77 ---
78 name:            test_load_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_i64
87     ; CHECK: liveins: $x0
88     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
89     ; CHECK: [[LDXRX:%[0-9]+]]:gpr64 = LDXRX [[COPY]] :: (volatile load (s64) from %ir.addr)
90     ; CHECK: $x1 = COPY [[LDXRX]]
91     ; CHECK: RET_ReallyLR implicit $x1
92     %0:gpr(p0) = COPY $x0
93     %1:gpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.ldxr), %0(p0) :: (volatile load (s64) from %ir.addr)
94     $x1 = COPY %1(s64)
95     RET_ReallyLR implicit $x1