blob: 3ae63ad16f67af5069b8088f266708250844f142 [file] [log] [blame]
Tim Northovere3d42362013-02-01 11:40:47 +00001; RUN: llc -verify-machineinstrs < %s -mtriple=aarch64-none-linux-gnu | FileCheck %s
Tim Northover46ecdf52014-04-16 11:53:07 +00002; RUN: llc -verify-machineinstrs -o - %s -mtriple=arm64-apple-ios7.0 | FileCheck %s
Tim Northovere0e3aef2013-01-31 12:12:40 +00003
4@var32 = global i32 0
5@var64 = global i64 0
6
7define void @test_and(i32 %in32, i64 %in64) {
Stephen Linf799e3f2013-07-13 20:38:47 +00008; CHECK-LABEL: test_and:
Tim Northovere0e3aef2013-01-31 12:12:40 +00009
10 %val0 = and i32 %in32, 2863311530
11 store volatile i32 %val0, i32* @var32
12; CHECK: and {{w[0-9]+}}, {{w[0-9]+}}, #0xaaaaaaaa
13
14 %val1 = and i32 %in32, 4293984240
15 store volatile i32 %val1, i32* @var32
16; CHECK: and {{w[0-9]+}}, {{w[0-9]+}}, #0xfff0fff0
17
18 %val2 = and i64 %in64, 9331882296111890817
19 store volatile i64 %val2, i64* @var64
20; CHECK: and {{x[0-9]+}}, {{x[0-9]+}}, #0x8181818181818181
21
22 %val3 = and i64 %in64, 18429855317404942275
23 store volatile i64 %val3, i64* @var64
24; CHECK: and {{x[0-9]+}}, {{x[0-9]+}}, #0xffc3ffc3ffc3ffc3
25
26 ret void
27}
28
29define void @test_orr(i32 %in32, i64 %in64) {
Stephen Linf799e3f2013-07-13 20:38:47 +000030; CHECK-LABEL: test_orr:
Tim Northovere0e3aef2013-01-31 12:12:40 +000031
32 %val0 = or i32 %in32, 2863311530
33 store volatile i32 %val0, i32* @var32
34; CHECK: orr {{w[0-9]+}}, {{w[0-9]+}}, #0xaaaaaaaa
35
36 %val1 = or i32 %in32, 4293984240
37 store volatile i32 %val1, i32* @var32
38; CHECK: orr {{w[0-9]+}}, {{w[0-9]+}}, #0xfff0fff0
39
40 %val2 = or i64 %in64, 9331882296111890817
41 store volatile i64 %val2, i64* @var64
42; CHECK: orr {{x[0-9]+}}, {{x[0-9]+}}, #0x8181818181818181
43
44 %val3 = or i64 %in64, 18429855317404942275
45 store volatile i64 %val3, i64* @var64
46; CHECK: orr {{x[0-9]+}}, {{x[0-9]+}}, #0xffc3ffc3ffc3ffc3
47
48 ret void
49}
50
51define void @test_eor(i32 %in32, i64 %in64) {
Stephen Linf799e3f2013-07-13 20:38:47 +000052; CHECK-LABEL: test_eor:
Tim Northovere0e3aef2013-01-31 12:12:40 +000053
54 %val0 = xor i32 %in32, 2863311530
55 store volatile i32 %val0, i32* @var32
56; CHECK: eor {{w[0-9]+}}, {{w[0-9]+}}, #0xaaaaaaaa
57
58 %val1 = xor i32 %in32, 4293984240
59 store volatile i32 %val1, i32* @var32
60; CHECK: eor {{w[0-9]+}}, {{w[0-9]+}}, #0xfff0fff0
61
62 %val2 = xor i64 %in64, 9331882296111890817
63 store volatile i64 %val2, i64* @var64
64; CHECK: eor {{x[0-9]+}}, {{x[0-9]+}}, #0x8181818181818181
65
66 %val3 = xor i64 %in64, 18429855317404942275
67 store volatile i64 %val3, i64* @var64
68; CHECK: eor {{x[0-9]+}}, {{x[0-9]+}}, #0xffc3ffc3ffc3ffc3
69
70 ret void
71}
72
73define void @test_mov(i32 %in32, i64 %in64) {
Stephen Linf799e3f2013-07-13 20:38:47 +000074; CHECK-LABEL: test_mov:
Tim Northovere0e3aef2013-01-31 12:12:40 +000075 %val0 = add i32 %in32, 2863311530
76 store i32 %val0, i32* @var32
77; CHECK: orr {{w[0-9]+}}, wzr, #0xaaaaaaaa
78
79 %val1 = add i64 %in64, 11068046444225730969
80 store i64 %val1, i64* @var64
81; CHECK: orr {{x[0-9]+}}, xzr, #0x9999999999999999
82
83 ret void
84; CHECK: ret
85}