Skip to content

Commit 02dd787

Browse files
committed
[aarch64][globalisel] Add missing tests from r319216
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319220 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 336e099 commit 02dd787

File tree

2 files changed

+180
-0
lines changed

2 files changed

+180
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -mtriple=aarch64-- -mattr=+lse -run-pass=legalizer -verify-machineinstrs -global-isel %s -o - | FileCheck %s
3+
4+
--- |
5+
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
6+
7+
define void @cmpxchg_i8(i8* %addr) { ret void }
8+
define void @cmpxchg_i16(i16* %addr) { ret void }
9+
define void @cmpxchg_i32(i32* %addr) { ret void }
10+
define void @cmpxchg_i64(i64* %addr) { ret void }
11+
...
12+
13+
---
14+
name: cmpxchg_i8
15+
body: |
16+
bb.0:
17+
liveins: %x0
18+
19+
; CHECK-LABEL: name: cmpxchg_i8
20+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
21+
; CHECK: [[CST:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
22+
; CHECK: [[CST2:%[0-9]+]]:_(s8) = G_TRUNC [[CST]]
23+
; CHECK: [[RES:%[0-9]+]]:_(s8) = G_ATOMICRMW_ADD [[COPY]](p0), [[CST2]] :: (load store monotonic 1 on %ir.addr)
24+
; CHECK: [[RES2:%[0-9]+]]:_(s32) = G_ANYEXT [[RES]]
25+
; CHECK: %w0 = COPY [[RES2]]
26+
%0:_(p0) = COPY %x0
27+
%1:_(s8) = G_CONSTANT i8 1
28+
%2:_(s8) = G_ATOMICRMW_ADD %0, %1 :: (load store monotonic 1 on %ir.addr)
29+
%3:_(s32) = G_ANYEXT %2
30+
%w0 = COPY %3(s32)
31+
...
32+
33+
---
34+
name: cmpxchg_i16
35+
body: |
36+
bb.0:
37+
liveins: %x0
38+
39+
; CHECK-LABEL: name: cmpxchg_i16
40+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
41+
; CHECK: [[CST:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
42+
; CHECK: [[CST2:%[0-9]+]]:_(s16) = G_TRUNC [[CST]]
43+
; CHECK: [[RES:%[0-9]+]]:_(s16) = G_ATOMICRMW_ADD [[COPY]](p0), [[CST2]] :: (load store monotonic 2 on %ir.addr)
44+
; CHECK: [[RES2:%[0-9]+]]:_(s32) = G_ANYEXT [[RES]]
45+
; CHECK: %w0 = COPY [[RES2]]
46+
%0:_(p0) = COPY %x0
47+
%1:_(s16) = G_CONSTANT i16 1
48+
%2:_(s16) = G_ATOMICRMW_ADD %0, %1 :: (load store monotonic 2 on %ir.addr)
49+
%3:_(s32) = G_ANYEXT %2
50+
%w0 = COPY %3(s32)
51+
...
52+
53+
---
54+
name: cmpxchg_i32
55+
body: |
56+
bb.0:
57+
liveins: %x0
58+
59+
; CHECK-LABEL: name: cmpxchg_i32
60+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
61+
; CHECK: [[CST:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
62+
; CHECK: [[RES:%[0-9]+]]:_(s32) = G_ATOMICRMW_ADD [[COPY]](p0), [[CST]] :: (load store monotonic 4 on %ir.addr)
63+
; CHECK: %w0 = COPY [[RES]]
64+
%0:_(p0) = COPY %x0
65+
%1:_(s32) = G_CONSTANT i32 1
66+
%2:_(s32) = G_ATOMICRMW_ADD %0, %1 :: (load store monotonic 4 on %ir.addr)
67+
%w0 = COPY %2(s32)
68+
...
69+
70+
---
71+
name: cmpxchg_i64
72+
body: |
73+
bb.0:
74+
liveins: %x0
75+
76+
; CHECK-LABEL: name: cmpxchg_i64
77+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
78+
; CHECK: [[CST:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
79+
; CHECK: [[RES:%[0-9]+]]:_(s64) = G_ATOMICRMW_ADD [[COPY]](p0), [[CST]] :: (load store monotonic 8 on %ir.addr)
80+
; CHECK: %x0 = COPY [[RES]]
81+
%0:_(p0) = COPY %x0
82+
%1:_(s64) = G_CONSTANT i64 1
83+
%2:_(s64) = G_ATOMICRMW_ADD %0, %1 :: (load store monotonic 8 on %ir.addr)
84+
%x0 = COPY %2(s64)
85+
...
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2+
# RUN: llc -mtriple=aarch64-- -mattr=+lse -run-pass=legalizer -verify-machineinstrs -global-isel %s -o - | FileCheck %s
3+
4+
--- |
5+
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
6+
7+
define void @cmpxchg_i8(i8* %addr) { ret void }
8+
define void @cmpxchg_i16(i16* %addr) { ret void }
9+
define void @cmpxchg_i32(i32* %addr) { ret void }
10+
define void @cmpxchg_i64(i64* %addr) { ret void }
11+
...
12+
13+
---
14+
name: cmpxchg_i8
15+
body: |
16+
bb.0:
17+
liveins: %x0
18+
19+
; CHECK-LABEL: name: cmpxchg_i8
20+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
21+
; CHECK: [[CMP:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
22+
; CHECK: [[CMPT:%[0-9]+]]:_(s8) = G_TRUNC [[CMP]]
23+
; CHECK: [[CST:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
24+
; CHECK: [[CSTT:%[0-9]+]]:_(s8) = G_TRUNC [[CST]]
25+
; CHECK: [[RES:%[0-9]+]]:_(s8) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[CMPT]], [[CSTT]] :: (load store monotonic 1 on %ir.addr)
26+
; CHECK: [[RES2:%[0-9]+]]:_(s32) = G_ANYEXT [[RES]](s8)
27+
; CHECK: %w0 = COPY [[RES2]]
28+
%0:_(p0) = COPY %x0
29+
%1:_(s8) = G_CONSTANT i8 0
30+
%2:_(s8) = G_CONSTANT i8 1
31+
%3:_(s8) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic 1 on %ir.addr)
32+
%4:_(s32) = G_ANYEXT %3
33+
%w0 = COPY %4(s32)
34+
...
35+
36+
---
37+
name: cmpxchg_i16
38+
body: |
39+
bb.0:
40+
liveins: %x0
41+
42+
; CHECK-LABEL: name: cmpxchg_i16
43+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
44+
; CHECK: [[CMP:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
45+
; CHECK: [[CMPT:%[0-9]+]]:_(s16) = G_TRUNC [[CMP]]
46+
; CHECK: [[CST:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
47+
; CHECK: [[CSTT:%[0-9]+]]:_(s16) = G_TRUNC [[CST]]
48+
; CHECK: [[RES:%[0-9]+]]:_(s16) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[CMPT]], [[CSTT]] :: (load store monotonic 2 on %ir.addr)
49+
; CHECK: [[RES2:%[0-9]+]]:_(s32) = G_ANYEXT [[RES]](s16)
50+
; CHECK: %w0 = COPY [[RES2]]
51+
%0:_(p0) = COPY %x0
52+
%1:_(s16) = G_CONSTANT i16 0
53+
%2:_(s16) = G_CONSTANT i16 1
54+
%3:_(s16) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic 2 on %ir.addr)
55+
%4:_(s32) = G_ANYEXT %3
56+
%w0 = COPY %4(s32)
57+
...
58+
59+
---
60+
name: cmpxchg_i32
61+
body: |
62+
bb.0:
63+
liveins: %x0
64+
65+
; CHECK-LABEL: name: cmpxchg_i32
66+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
67+
; CHECK: [[CMP:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
68+
; CHECK: [[CST:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
69+
; CHECK: [[RES:%[0-9]+]]:_(s32) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[CMP]], [[CST]] :: (load store monotonic 4 on %ir.addr)
70+
; CHECK: %w0 = COPY [[RES]]
71+
%0:_(p0) = COPY %x0
72+
%1:_(s32) = G_CONSTANT i32 0
73+
%2:_(s32) = G_CONSTANT i32 1
74+
%3:_(s32) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic 4 on %ir.addr)
75+
%w0 = COPY %3(s32)
76+
...
77+
78+
---
79+
name: cmpxchg_i64
80+
body: |
81+
bb.0:
82+
liveins: %x0
83+
84+
; CHECK-LABEL: name: cmpxchg_i64
85+
; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY %x0
86+
; CHECK: [[CMP:%[0-9]+]]:_(s64) = G_CONSTANT i64 0
87+
; CHECK: [[CST:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
88+
; CHECK: [[RES:%[0-9]+]]:_(s64) = G_ATOMIC_CMPXCHG [[COPY]](p0), [[CMP]], [[CST]] :: (load store monotonic 8 on %ir.addr)
89+
; CHECK: %x0 = COPY [[RES]]
90+
%0:_(p0) = COPY %x0
91+
%1:_(s64) = G_CONSTANT i64 0
92+
%2:_(s64) = G_CONSTANT i64 1
93+
%3:_(s64) = G_ATOMIC_CMPXCHG %0, %1, %2 :: (load store monotonic 8 on %ir.addr)
94+
%x0 = COPY %3(s64)
95+
...

0 commit comments

Comments
 (0)